From c09f9cabfe4f1b16c699e5e99a52f35d989de2e5 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Wed, 4 Mar 2026 13:46:01 +0200 Subject: [PATCH 01/13] Add release trigger workflow --- .github/workflows/trigger-release.yml | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/trigger-release.yml diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml new file mode 100644 index 0000000000..47802ae201 --- /dev/null +++ b/.github/workflows/trigger-release.yml @@ -0,0 +1,30 @@ +name: Trigger Wheel Builds + +# Thin wrapper — all tagging and dispatch logic lives in integrations-core's +# reusable dispatch-release.yml workflow. + +on: + push: + branches: + - master + workflow_dispatch: + inputs: + integrations: + description: "JSON array of integration names (optional — auto-detected if omitted)" + required: false + type: string + source-repo-ref: + description: "Commit SHA or ref to build from" + required: true + type: string + +jobs: + dispatch: + uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@master + with: + source-repo: integrations-extras + integrations: ${{ inputs.integrations || '' }} + source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} + permissions: + id-token: write + contents: write From 9843af3ff5ba7955948ee7fab12cf963fcb48fa9 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Wed, 4 Mar 2026 13:52:12 +0200 Subject: [PATCH 02/13] Add .github/workflows/* to CODEOWNERS --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f18974c8dc..bcad96a081 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,5 @@ .github/CODEOWNERS* @DataDog/agent-integrations +.github/workflows/* @DataDog/agent-integrations # Documentation **/README.md @DataDog/documentation From 6a50bc958bddc4e4dbbfdcd7ce00c8e1967eea44 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Wed, 4 Mar 2026 14:27:03 +0200 Subject: [PATCH 03/13] TEST add pull_request trigger --- .github/workflows/trigger-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 47802ae201..ede630dc0e 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -17,6 +17,7 @@ on: description: "Commit SHA or ref to build from" required: true type: string + pull_request: jobs: dispatch: From 72e450a5e8ecc454319d69fd7149b8548d73630a Mon Sep 17 00:00:00 2001 From: David Kirov Date: Thu, 5 Mar 2026 16:03:55 +0200 Subject: [PATCH 04/13] Add dry-run --- .github/workflows/trigger-release.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index ede630dc0e..1568bd17ad 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -17,7 +17,11 @@ on: description: "Commit SHA or ref to build from" required: true type: string - pull_request: + dry-run: + description: "Do not push any tags and do not upload anything to S3" + required: false + type: boolean + default: false jobs: dispatch: @@ -26,6 +30,7 @@ jobs: source-repo: integrations-extras integrations: ${{ inputs.integrations || '' }} source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} + dry-run: true # TODO: remove once the new pipeline is validated permissions: id-token: write contents: write From 0b7b363c2e39291c112371e6702cbd7915e84703 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Thu, 5 Mar 2026 17:08:56 +0200 Subject: [PATCH 05/13] Replace dry-run with target --- .github/workflows/trigger-release.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 1568bd17ad..035daddca9 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -17,11 +17,14 @@ on: description: "Commit SHA or ref to build from" required: true type: string - dry-run: - description: "Do not push any tags and do not upload anything to S3" + target: + description: "Target environment (dev or prod)" required: false - type: boolean - default: false + type: choice + options: + - dev + - prod + default: dev jobs: dispatch: @@ -30,7 +33,7 @@ jobs: source-repo: integrations-extras integrations: ${{ inputs.integrations || '' }} source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} - dry-run: true # TODO: remove once the new pipeline is validated + target: ${{ inputs.target || 'dev' }} # TODO: switch default to prod once the new pipeline is validated permissions: id-token: write contents: write From ceec5c1bcc87ec5b0a0cf4df1ce9b4448e1d1aff Mon Sep 17 00:00:00 2001 From: David Kirov Date: Mon, 9 Mar 2026 15:18:56 +0200 Subject: [PATCH 06/13] Add dry-run and rename integrations to packages --- .github/workflows/trigger-release.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 035daddca9..45a03f7d63 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -9,8 +9,10 @@ on: - master workflow_dispatch: inputs: - integrations: - description: "JSON array of integration names (optional — auto-detected if omitted)" + packages: + description: >- + Packages to release. JSON array (e.g. '["postgres","datadog_checks_base"]'), + 'all' to release every Python package in the repo, or omit to auto-detect from new tags. required: false type: string source-repo-ref: @@ -25,15 +27,21 @@ on: - dev - prod default: dev + dry-run: + description: "Print what would be released without pushing tags or starting builds" + required: false + type: boolean + default: false jobs: dispatch: uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@master with: source-repo: integrations-extras - integrations: ${{ inputs.integrations || '' }} + packages: ${{ inputs.packages || '' }} source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} target: ${{ inputs.target || 'dev' }} # TODO: switch default to prod once the new pipeline is validated + dry-run: ${{ inputs.dry-run || false }} permissions: id-token: write contents: write From c417378a537ff6383caffaf5f08c18022b31f43a Mon Sep 17 00:00:00 2001 From: David Kirov Date: Thu, 12 Mar 2026 15:24:46 +0100 Subject: [PATCH 07/13] TEST: trigger release pipeline dry-run on pull_request Adds a temporary workflow that fires on PRs against master and calls dispatch-release.yml with dry-run=true and a small fixed package list (fluentbit, argo_rollouts, aqua) so we can validate the pipeline end-to-end without pushing tags or starting real builds. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/test-release-trigger.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/test-release-trigger.yml diff --git a/.github/workflows/test-release-trigger.yml b/.github/workflows/test-release-trigger.yml new file mode 100644 index 0000000000..00008384c5 --- /dev/null +++ b/.github/workflows/test-release-trigger.yml @@ -0,0 +1,20 @@ +name: TEST - Trigger Wheel Builds on PR (dry-run) + +# TEST ONLY: Exercises the release pipeline in dry-run mode on pull requests. +# Remove or disable this workflow once the pipeline is validated. + +on: + pull_request: + +jobs: + dispatch: + uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@dk/test-release-trigger + with: + source-repo: integrations-extras + packages: '["fluentbit","argo_rollouts","aqua"]' + source-repo-ref: ${{ github.event.pull_request.head.sha }} + target: dev + dry-run: true + permissions: + id-token: write + contents: write From 34d25876893b44631864b14475f57196fccec92d Mon Sep 17 00:00:00 2001 From: David Kirov Date: Thu, 12 Mar 2026 16:04:29 +0100 Subject: [PATCH 08/13] Revert "TEST: trigger release pipeline dry-run on pull_request" This reverts commit c417378a537ff6383caffaf5f08c18022b31f43a. --- .github/workflows/test-release-trigger.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/workflows/test-release-trigger.yml diff --git a/.github/workflows/test-release-trigger.yml b/.github/workflows/test-release-trigger.yml deleted file mode 100644 index 00008384c5..0000000000 --- a/.github/workflows/test-release-trigger.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: TEST - Trigger Wheel Builds on PR (dry-run) - -# TEST ONLY: Exercises the release pipeline in dry-run mode on pull requests. -# Remove or disable this workflow once the pipeline is validated. - -on: - pull_request: - -jobs: - dispatch: - uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@dk/test-release-trigger - with: - source-repo: integrations-extras - packages: '["fluentbit","argo_rollouts","aqua"]' - source-repo-ref: ${{ github.event.pull_request.head.sha }} - target: dev - dry-run: true - permissions: - id-token: write - contents: write From 53be7c4b93707d9a698963e0978624a89a068758 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Fri, 13 Mar 2026 10:49:06 +0100 Subject: [PATCH 09/13] Add ddev-version input parameter --- .github/workflows/trigger-release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 45a03f7d63..707469b64f 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -32,6 +32,10 @@ on: required: false type: boolean default: false + ddev-version: + description: "ddev version, defaults to latest." + required: false + type: string jobs: dispatch: @@ -42,6 +46,7 @@ jobs: source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} target: ${{ inputs.target || 'dev' }} # TODO: switch default to prod once the new pipeline is validated dry-run: ${{ inputs.dry-run || false }} + ddev-version: ${{ inputs.ddev-version || '' }} permissions: id-token: write contents: write From 90d8f5eb8138a625c5d905ab14cec44c139690e9 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Mon, 16 Mar 2026 15:32:58 +0100 Subject: [PATCH 10/13] Add release context detection --- .github/workflows/trigger-release.yml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 707469b64f..f59deaa74c 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -38,15 +38,32 @@ on: type: string jobs: + context: + name: Detect release context + runs-on: ubuntu-latest + outputs: + is-stable-release: ${{ steps.detect.outputs.is-stable-release }} + steps: + - id: detect + run: | + if [[ "$GITHUB_REF" == refs/heads/master ]]; then + echo "is-stable-release=true" >> "$GITHUB_OUTPUT" + else + echo "is-stable-release=false" >> "$GITHUB_OUTPUT" + fi + dispatch: + name: Release + needs: context uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@master with: source-repo: integrations-extras packages: ${{ inputs.packages || '' }} source-repo-ref: ${{ inputs.source-repo-ref || github.sha }} - target: ${{ inputs.target || 'dev' }} # TODO: switch default to prod once the new pipeline is validated + target: ${{ inputs.target || 'dev' }} dry-run: ${{ inputs.dry-run || false }} ddev-version: ${{ inputs.ddev-version || '' }} + is-stable-release: ${{ needs.context.outputs.is-stable-release }} permissions: id-token: write contents: write From 01952e1505a667d4b282693f335a9ad2856c0d90 Mon Sep 17 00:00:00 2001 From: David Kirov Date: Mon, 16 Mar 2026 18:04:56 +0100 Subject: [PATCH 11/13] docs(trigger-release): clarify ddev-version input is pinned by default Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/trigger-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index f59deaa74c..5b282ecdf0 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -33,7 +33,7 @@ on: type: boolean default: false ddev-version: - description: "ddev version, defaults to latest." + description: "ddev version, pinned by default." required: false type: string From 250d21dfeb67793ed8283180c2f2787f8482daac Mon Sep 17 00:00:00 2001 From: David Kirov Date: Wed, 18 Mar 2026 11:02:12 +0100 Subject: [PATCH 12/13] Add paths to trigger condition --- .github/workflows/trigger-release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/trigger-release.yml index 5b282ecdf0..7fa764870b 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/trigger-release.yml @@ -7,6 +7,9 @@ on: push: branches: - master + paths: + - "*/CHANGELOG.md" + - "*/datadog_checks/*/__about__.py" workflow_dispatch: inputs: packages: From aa9018f90d61915e5aa903668f87788026e3897e Mon Sep 17 00:00:00 2001 From: David Kirov Date: Fri, 20 Mar 2026 11:59:35 +0100 Subject: [PATCH 13/13] chore(_release): rename trigger-release.yml to release-trigger.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename trigger-release.yml → release-trigger.yml - Update comment reference from dispatch-release.yml → release-dispatch.yml - Update uses: reference to integrations-core's release-dispatch.yml@master Rationale: align with the release-* naming convention used in integrations-core This commit made by [/dd:git:commit:quick](https://github.com/DataDog/claude-marketplace/tree/main/dd/commands/git/commit/quick.md) --- .../workflows/{trigger-release.yml => release-trigger.yml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{trigger-release.yml => release-trigger.yml} (94%) diff --git a/.github/workflows/trigger-release.yml b/.github/workflows/release-trigger.yml similarity index 94% rename from .github/workflows/trigger-release.yml rename to .github/workflows/release-trigger.yml index 7fa764870b..a8d9d085dc 100644 --- a/.github/workflows/trigger-release.yml +++ b/.github/workflows/release-trigger.yml @@ -1,7 +1,7 @@ name: Trigger Wheel Builds # Thin wrapper — all tagging and dispatch logic lives in integrations-core's -# reusable dispatch-release.yml workflow. +# reusable release-dispatch.yml workflow. on: push: @@ -58,7 +58,7 @@ jobs: dispatch: name: Release needs: context - uses: DataDog/integrations-core/.github/workflows/dispatch-release.yml@master + uses: DataDog/integrations-core/.github/workflows/release-dispatch.yml@master with: source-repo: integrations-extras packages: ${{ inputs.packages || '' }}