From b660a4b3ed73c8ef04ca02e8eff3cc4bcaa9b31c Mon Sep 17 00:00:00 2001 From: "internalautomation[bot]" <85681268+internalautomation[bot]@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:09:32 +0000 Subject: [PATCH 1/2] Apply repository updates to main --- .github/workflows/release-build-artifacts.yml | 42 ++++++++++++++++ .../workflows/release-deploy-production.yml | 46 ++++++++++++++++++ .github/workflows/release-deploy-staging.yml | 31 ++++++++++++ .github/workflows/release.yml | 48 ------------------- .release/.templates/default/create/footer.sbn | 10 ++++ .release/.templates/default/issue-note.sbn | 6 +++ .release/GitReleaseManager.yaml | 10 ++++ 7 files changed, 145 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/release-build-artifacts.yml create mode 100644 .github/workflows/release-deploy-production.yml create mode 100644 .github/workflows/release-deploy-staging.yml delete mode 100644 .github/workflows/release.yml create mode 100644 .release/.templates/default/create/footer.sbn create mode 100644 .release/.templates/default/issue-note.sbn create mode 100644 .release/GitReleaseManager.yaml diff --git a/.github/workflows/release-build-artifacts.yml b/.github/workflows/release-build-artifacts.yml new file mode 100644 index 0000000..ac16428 --- /dev/null +++ b/.github/workflows/release-build-artifacts.yml @@ -0,0 +1,42 @@ +name: Release - build and store artifacts +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-*' +env: + DOTNET_NOLOGO: true +defaults: + run: + shell: pwsh +jobs: + build-and-store-artifacts: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + with: + fetch-depth: 0 + - name: Setup .NET SDK + uses: actions/setup-dotnet@v6.0.0 + with: + global-json-file: global.json + - name: Build + run: dotnet build src --configuration Release + - name: Sign NuGet packages + uses: Particular/sign-nuget-packages-action@v1.0.0 + with: + client-id: ${{ secrets.AZURE_KEY_VAULT_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_KEY_VAULT_TENANT_ID }} + client-secret: ${{ secrets.AZURE_KEY_VAULT_CLIENT_SECRET }} + certificate-name: ${{ secrets.AZURE_KEY_VAULT_CERTIFICATE_NAME }} + - name: Publish NuGet packages to the workflow + uses: actions/upload-artifact@v7.0.2 + with: + name: nugets + path: nugets/* + retention-days: 1 + - name: Create draft release and attach artifacts + uses: particular/deployment-workflows/.github/actions/create-draft-release-with-assets@1.0.0 + with: + asset-paths: "nugets/" diff --git a/.github/workflows/release-deploy-production.yml b/.github/workflows/release-deploy-production.yml new file mode 100644 index 0000000..5677658 --- /dev/null +++ b/.github/workflows/release-deploy-production.yml @@ -0,0 +1,46 @@ +name: Deploy Production +on: + workflow_dispatch: + inputs: + version: + required: true + type: string +env: + DOTNET_NOLOGO: true +jobs: + check-authorized-user: + uses: Particular/deployment-workflows/.github/workflows/verify-authorized-user.yml@1.0.0 + publish-release-notes: + needs: check-authorized-user + uses: Particular/deployment-workflows/.github/workflows/publish-release-notes.yml@1.0.0 + with: + version: ${{ inputs.version }} + secrets: inherit + virus-scan: + needs: publish-release-notes + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Scan release for viruses + uses: Particular/virus-scan-action@main + with: + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + tag: ${{ inputs.version }} + github-access-token: ${{ secrets.GITHUB_TOKEN }} + slack-token: ${{ secrets.SLACK_TOKEN }} + slack-channel: ${{ vars.VIRUS_REPORTING_SLACK_CHANNEL }} + push-nuget-packages: + permissions: + id-token: write + contents: read + runs-on: ubuntu-latest + needs: publish-release-notes + steps: + - name: Push NuGet packages + uses: particular/deployment-workflows/.github/actions/push-nuget-packages@1.0.0 + with: + version: ${{ inputs.version }} + deploy-environment: production + api-key: required-but-real-value-not-needed-we-use-trusted-publishing-for-production diff --git a/.github/workflows/release-deploy-staging.yml b/.github/workflows/release-deploy-staging.yml new file mode 100644 index 0000000..5bbf4de --- /dev/null +++ b/.github/workflows/release-deploy-staging.yml @@ -0,0 +1,31 @@ +name: Deploy Staging +on: + workflow_dispatch: + inputs: + version: + required: true + type: string +env: + DOTNET_NOLOGO: true +jobs: + check-authorized-user: + uses: Particular/deployment-workflows/.github/workflows/verify-authorized-user.yml@1.0.0 + push-nuget-packages-staging: + needs: check-authorized-user + runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + steps: + - name: Push NuGet packages + uses: Particular/deployment-workflows/.github/actions/push-nuget-packages@1.0.0 + with: + version: ${{ inputs.version }} + deploy-environment: staging + api-key: ${{ secrets.FEEDZIO_PUBLISH_API_KEY }} + generate-release-notes: + needs: check-authorized-user + uses: Particular/deployment-workflows/.github/workflows/generate-release-notes.yml@1.0.0 + with: + version: ${{ inputs.version }} + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 905123d..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Release -on: - push: - tags: - - '[0-9]+.[0-9]+.[0-9]+' - - '[0-9]+.[0-9]+.[0-9]+-*' - workflow_dispatch: -env: - DOTNET_NOLOGO: true -defaults: - run: - shell: pwsh -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v7.0.1 - with: - fetch-depth: 0 - - name: Setup .NET SDK - uses: actions/setup-dotnet@v6.0.0 - with: - global-json-file: global.json - - name: Build - run: dotnet build src --configuration Release - - name: Sign NuGet packages - uses: Particular/sign-nuget-packages-action@v1.0.0 - with: - client-id: ${{ secrets.AZURE_KEY_VAULT_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_KEY_VAULT_TENANT_ID }} - client-secret: ${{ secrets.AZURE_KEY_VAULT_CLIENT_SECRET }} - certificate-name: ${{ secrets.AZURE_KEY_VAULT_CERTIFICATE_NAME }} - - name: Publish artifacts - uses: actions/upload-artifact@v7.0.2 - with: - name: nugets - path: nugets/* - retention-days: 1 - - name: Push packages to testing feed - if: ${{ github.event_name == 'workflow_dispatch' }} - run: dotnet nuget push nugets\*.nupkg --api-key ${{ secrets.FEEDZIO_PUBLISH_API_KEY }} --source "${{ vars.PARTICULAR_TESTING_FEED_URL }}" - - name: Deploy - if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} - # Does not follow standard practice of targeting explicit versions because configuration is tightly coupled to Octopus Deploy configuration - uses: Particular/push-octopus-package-action@main - with: - octopus-deploy-api-key: ${{ secrets.OCTOPUS_DEPLOY_API_KEY }} diff --git a/.release/.templates/default/create/footer.sbn b/.release/.templates/default/create/footer.sbn new file mode 100644 index 0000000..19c9983 --- /dev/null +++ b/.release/.templates/default/create/footer.sbn @@ -0,0 +1,10 @@ +{{ if config.create.include_footer }} + +### Where to get it + + +You can download this release from [NuGet](https://www.nuget.org/profiles/ParticularSoftware/). + +{{ end }} + + \ No newline at end of file diff --git a/.release/.templates/default/issue-note.sbn b/.release/.templates/default/issue-note.sbn new file mode 100644 index 0000000..cc3a32e --- /dev/null +++ b/.release/.templates/default/issue-note.sbn @@ -0,0 +1,6 @@ +{{ + if issue.is_pull_request +}}- [__#{{ issue.public_number }}__]({{ issue.html_url }}) {{ issue.title }} +{{ else +}}- [__#{{ issue.public_number }}__]({{ issue.html_url }}) {{ issue.title }} +{{ end -}} diff --git a/.release/GitReleaseManager.yaml b/.release/GitReleaseManager.yaml new file mode 100644 index 0000000..f6de466 --- /dev/null +++ b/.release/GitReleaseManager.yaml @@ -0,0 +1,10 @@ +templates-dir: .templates +create: + include-footer: true +issue-labels-include: + - "Bug" + - "Feature" + - "Improvement" + - "Dependency CVE" +issue-labels-exclude: + - "Refactoring" From fa3a0c1dca75f06278aded03937b1c4f57f06e21 Mon Sep 17 00:00:00 2001 From: Nick Gallegos Date: Thu, 22 Oct 2026 17:21:09 -0600 Subject: [PATCH 2/2] Restore workflow_dispatch trigger and conditional test feed publish --- .github/workflows/release-build-artifacts.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/release-build-artifacts.yml b/.github/workflows/release-build-artifacts.yml index ac16428..cc8e189 100644 --- a/.github/workflows/release-build-artifacts.yml +++ b/.github/workflows/release-build-artifacts.yml @@ -4,6 +4,7 @@ on: tags: - '[0-9]+.[0-9]+.[0-9]+' - '[0-9]+.[0-9]+.[0-9]+-*' + workflow_dispatch: env: DOTNET_NOLOGO: true defaults: @@ -36,7 +37,11 @@ jobs: name: nugets path: nugets/* retention-days: 1 + - name: Push packages to testing feed + if: ${{ github.event_name == 'workflow_dispatch' }} + run: dotnet nuget push nugets\*.nupkg --api-key ${{ secrets.FEEDZIO_PUBLISH_API_KEY }} --source "${{ vars.PARTICULAR_TESTING_FEED_URL }}" - name: Create draft release and attach artifacts + if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} uses: particular/deployment-workflows/.github/actions/create-draft-release-with-assets@1.0.0 with: asset-paths: "nugets/"