From e005beb59e04dce33204d69f8e171e55d9143feb Mon Sep 17 00:00:00 2001 From: "John C. Bland II" Date: Fri, 21 Aug 2026 09:53:56 -0500 Subject: [PATCH 1/4] chore: upgrade actions to Node 24 runtime (SHA-pinned) (#90) * chore: upgrade actions to Node 24 runtime (SHA-pinned) * chore: bump wait-commit-status to v0.2.2 (node24, SHA-pinned) --- .github/workflows/test-destroy.yml | 8 ++++---- .../test-helm-raw-default-kube-version.yml | 14 ++++++------- .github/workflows/test-helm-raw.yml | 16 +++++++-------- ...test-helmfile-raw-default-kube-version.yml | 16 +++++++-------- .github/workflows/test-helmfile-raw.yml | 20 +++++++++---------- action.yml | 4 ++-- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.github/workflows/test-destroy.yml b/.github/workflows/test-destroy.yml index 03922d9..5dd2fc5 100644 --- a/.github/workflows/test-destroy.yml +++ b/.github/workflows/test-destroy.yml @@ -30,7 +30,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -84,7 +84,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -151,7 +151,7 @@ jobs: environment: terratest needs: [setup, test] steps: - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "" actual: "${{ needs.test.outputs.sha }}" @@ -173,7 +173,7 @@ jobs: type: file token: ${{ steps.github-app.outputs.token }} - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "false" actual: "${{ steps.resources.outputs.exists }}" diff --git a/.github/workflows/test-helm-raw-default-kube-version.yml b/.github/workflows/test-helm-raw-default-kube-version.yml index 91ea061..e817e2b 100644 --- a/.github/workflows/test-helm-raw-default-kube-version.yml +++ b/.github/workflows/test-helm-raw-default-kube-version.yml @@ -47,7 +47,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -109,17 +109,17 @@ jobs: environment: terratest needs: [setup, test] steps: - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "success" actual: "${{ needs.test.outputs.status }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "https://example-app.example.com/dashboard" actual: "${{ needs.test.outputs.result }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "" actual: "${{ needs.test.outputs.sha }}" @@ -133,7 +133,7 @@ jobs: owner: 'cloudposse-tests' - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: cloudposse-tests/argocd-deploy-non-prod-test ref: ${{ needs.test.outputs.sha }} @@ -150,7 +150,7 @@ jobs: ) echo "value=${image}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "nginx:${{ needs.setup.outputs.random }}" actual: "${{ steps.image.outputs.value }}" @@ -165,7 +165,7 @@ jobs: ) echo "value=${ingress}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "networking.k8s.io/v1" actual: "${{ steps.ingress.outputs.value }}" diff --git a/.github/workflows/test-helm-raw.yml b/.github/workflows/test-helm-raw.yml index 88971b3..814105b 100644 --- a/.github/workflows/test-helm-raw.yml +++ b/.github/workflows/test-helm-raw.yml @@ -47,7 +47,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -115,17 +115,17 @@ jobs: environment: terratest needs: [setup, test] steps: - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "success" actual: "${{ needs.test.outputs.status }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "https://example-app.example.com/dashboard" actual: "${{ needs.test.outputs.result }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "" actual: "${{ needs.test.outputs.sha }}" @@ -139,7 +139,7 @@ jobs: owner: 'cloudposse-tests' - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: cloudposse-tests/argocd-deploy-non-prod-test ref: ${{ needs.test.outputs.sha }} @@ -156,7 +156,7 @@ jobs: ) echo "value=${image}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "nginx:${{ needs.setup.outputs.random }}" actual: "${{ steps.image.outputs.value }}" @@ -171,7 +171,7 @@ jobs: ) echo "value=${ingress}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "networking.k8s.io/v1beta1" actual: "${{ steps.ingress.outputs.value }}" @@ -186,7 +186,7 @@ jobs: ) echo "value=${name}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "staging.test-app" actual: "${{ steps.name.outputs.value }}" diff --git a/.github/workflows/test-helmfile-raw-default-kube-version.yml b/.github/workflows/test-helmfile-raw-default-kube-version.yml index 1cbb8a1..36226b6 100644 --- a/.github/workflows/test-helmfile-raw-default-kube-version.yml +++ b/.github/workflows/test-helmfile-raw-default-kube-version.yml @@ -48,7 +48,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -112,17 +112,17 @@ jobs: environment: terratest needs: [setup, test] steps: - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "success" actual: "${{ needs.test.outputs.status }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "https://example-app.example.com/dashboard" actual: "${{ needs.test.outputs.result }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "" actual: "${{ needs.test.outputs.sha }}" @@ -136,7 +136,7 @@ jobs: owner: 'cloudposse-tests' - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: cloudposse-tests/argocd-deploy-non-prod-test ref: ${{ needs.test.outputs.sha }} @@ -153,7 +153,7 @@ jobs: ) echo "value=${image}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "nginx:${{ needs.setup.outputs.random }}" actual: "${{ steps.image.outputs.value }}" @@ -168,7 +168,7 @@ jobs: ) echo "value=${ingress}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "networking.k8s.io/v1" actual: "${{ steps.ingress.outputs.value }}" @@ -183,7 +183,7 @@ jobs: ) echo "value=${app_commit}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "${{ github.sha }}" actual: "${{ steps.app_commit.outputs.value }}" diff --git a/.github/workflows/test-helmfile-raw.yml b/.github/workflows/test-helmfile-raw.yml index dea7244..ae7e9e1 100644 --- a/.github/workflows/test-helmfile-raw.yml +++ b/.github/workflows/test-helmfile-raw.yml @@ -54,7 +54,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: ./action @@ -133,7 +133,7 @@ jobs: owner: 'cloudposse-tests' - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: cloudposse-tests/argocd-deploy-non-prod-test token: ${{ steps.github-app.outputs.token }} @@ -195,17 +195,17 @@ jobs: environment: terratest needs: [setup, test, argocd] steps: - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "success" actual: "${{ needs.test.outputs.status }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "https://example-app.example.com/dashboard" actual: "${{ needs.test.outputs.result }}" - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "" actual: "${{ needs.test.outputs.sha }}" @@ -219,7 +219,7 @@ jobs: owner: 'cloudposse-tests' - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: cloudposse-tests/argocd-deploy-non-prod-test ref: ${{ needs.test.outputs.sha }} @@ -236,7 +236,7 @@ jobs: ) echo "value=${image}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "nginx:${{ needs.setup.outputs.random }}" actual: "${{ steps.image.outputs.value }}" @@ -251,7 +251,7 @@ jobs: ) echo "value=${ingress}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "networking.k8s.io/v1beta1" actual: "${{ steps.ingress.outputs.value }}" @@ -266,7 +266,7 @@ jobs: ) echo "value=${name}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "${{ needs.setup.outputs.environment }}.test-app" actual: "${{ steps.name.outputs.value }}" @@ -282,7 +282,7 @@ jobs: ) echo "value=${app_commit}" >> $GITHUB_OUTPUT - - uses: nick-fields/assert-action@v2 + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 with: expected: "${{ github.sha }}" actual: "${{ steps.app_commit.outputs.value }}" diff --git a/action.yml b/action.yml index 865ed9d..5d05ff6 100644 --- a/action.yml +++ b/action.yml @@ -197,7 +197,7 @@ runs: path: ${{ steps.destination.outputs.filepath }}/${{ inputs.namespace }}/${{ inputs.application }} - name: Checkout Argo Configuration - uses: actions/checkout@v6 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: ${{ steps.destination.outputs.owner }}/${{ steps.destination.outputs.name }} ref: ${{ steps.destination.outputs.ref }} @@ -437,7 +437,7 @@ runs: echo "token=${{ inputs.commit-status-github-token }}" >> $GITHUB_OUTPUT fi - - uses: cloudposse/github-action-wait-commit-status@v0.2.1 + - uses: cloudposse/github-action-wait-commit-status@968fc17eddf4d9f4f2203edb4c72814a1d8bc650 # v0.2.2 if: ${{ inputs.synchronously == 'true' && inputs.operation == 'deploy' }} with: repository: ${{ inputs.repository }} From d62e786663e49e1dc14dd5c6e5a5f4d072c3a33b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?readme-action=20=F0=9F=93=96?= Date: Fri, 21 Aug 2026 14:55:37 +0000 Subject: [PATCH 2/4] chore: update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f6bc193..336e839 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,10 @@ Destroy environment + + + + ## Inputs | Name | Description | Default | Required | From 9db127d663cccaea65f35f3896da460a4da14555 Mon Sep 17 00:00:00 2001 From: "John C. Bland II" Date: Fri, 28 Aug 2026 15:39:49 -0500 Subject: [PATCH 3/4] feat(action): add deployment-id input for per-attempt notification dedupe (#92) ArgoCD's notification `oncePer` trigger dedupes on whichever field it is pointed at. Keying it on the application commit means a rollback -- replaying a commit ArgoCD has already notified for -- is silently suppressed, so the rollback reports no status at all. Add an optional `deployment-id` input whose value is written to the generated `config.yaml` as `deployment_id`, giving `oncePer` a field that is unique per deploy attempt rather than per code state. The value is stamped with `yq` and `strenv` rather than interpolated into the YAML literal, so IDs that would otherwise be type-coerced or break the document (`01234`, `true`, values containing `:`) round-trip correctly, and the input never reaches the shell command string. Left at its empty default the step is skipped entirely and the key is omitted, keeping `config.yaml` byte-identical for existing callers. This matters because the action only commits to the GitOps repo when the rendered output actually changes -- always emitting the key would push a config-only commit, and an ArgoCD sync, for every app on upgrade. Covered by the helm raw tests in both directions: the value round-trips through the committed `config.yaml` when passed, and the key is absent when it is not. --- .../test-helm-raw-default-kube-version.yml | 15 ++++++++ .github/workflows/test-helm-raw.yml | 16 +++++++++ README.md | 35 +++++++++++++++++-- README.yaml | 34 ++++++++++++++++++ action.yml | 15 +++++++- 5 files changed, 112 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-helm-raw-default-kube-version.yml b/.github/workflows/test-helm-raw-default-kube-version.yml index e817e2b..a453385 100644 --- a/.github/workflows/test-helm-raw-default-kube-version.yml +++ b/.github/workflows/test-helm-raw-default-kube-version.yml @@ -170,6 +170,21 @@ jobs: expected: "networking.k8s.io/v1" actual: "${{ steps.ingress.outputs.value }}" + - name: Get Deployment ID presence + id: deployment_id + shell: bash + run: |- + has_deployment_id=$( \ + yq eval-all 'has("deployment_id")' \ + ./assert/plat/ue2-sandbox/apps/staging/test-app/config.yaml \ + ) + echo "value=${has_deployment_id}" >> $GITHUB_OUTPUT + + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 + with: + expected: "false" + actual: "${{ steps.deployment_id.outputs.value }}" + teardown: runs-on: ubuntu-latest needs: [assert] diff --git a/.github/workflows/test-helm-raw.yml b/.github/workflows/test-helm-raw.yml index 814105b..a7f1996 100644 --- a/.github/workflows/test-helm-raw.yml +++ b/.github/workflows/test-helm-raw.yml @@ -96,6 +96,7 @@ jobs: github-pat: ${{ steps.github-app.outputs.token }} image: nginx image-tag: ${{ needs.setup.outputs.random }} + deployment-id: ${{ github.run_id }}-${{ github.run_attempt }} env: AWS_ACCESS_KEY_ID: test AWS_SECRET_ACCESS_KEY: test @@ -191,6 +192,21 @@ jobs: expected: "staging.test-app" actual: "${{ steps.name.outputs.value }}" + - name: Get Deployment ID + id: deployment_id + shell: bash + run: |- + deployment_id=$( \ + yq eval-all '.deployment_id' \ + ./assert/plat/ue2-sandbox/apps/staging/test-app/config.yaml \ + ) + echo "value=${deployment_id}" >> $GITHUB_OUTPUT + + - uses: nick-fields/assert-action@0efd6166067d9c59d89c710fab4f79fb066f8985 # v4.0.1 + with: + expected: "${{ github.run_id }}-${{ github.run_attempt }}" + actual: "${{ steps.deployment_id.outputs.value }}" + teardown: runs-on: ubuntu-latest needs: [assert] diff --git a/README.md b/README.md index 336e839..c0923ae 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Deploy environment operation: deploy debug: false synchronously: true + deployment-id: ${{ github.run_id }}-${{ github.run_attempt }} ``` @@ -125,13 +126,42 @@ Destroy environment ``` +### Deduping ArgoCD notifications per deploy attempt + +ArgoCD's notification `oncePer` trigger dedupes on whichever field you point it at. Keying it on the +application commit means a rollback — replaying a commit ArgoCD has already notified for — is silently +suppressed, and the rollback reports no status at all. + +Pass `deployment-id` a value that is unique per *deploy attempt* rather than per code state, and point +`oncePer` at it instead: + +```yaml + - name: Deploy + uses: cloudposse/github-action-deploy-argocd@main + with: + # ... + deployment-id: ${{ github.run_id }}-${{ github.run_attempt }} +``` + +The value is written to the generated `config.yaml` alongside the rest of the deploy metadata: + +```yaml + app_repository: acme/example-app + app_commit: 6e6a0e1b0e0c4b2a9f1d3c5e7a9b1d3f5a7c9e1b + app_hostname: https://example-app.example.com + name: preview.example-app + namespace: preview + manifests: plat/ue2-sandbox/apps/preview/example-app/manifests + deployment_id: "12345678901-2" +``` + +The input is optional. Left at its empty default, the `deployment_id` key is omitted from `config.yaml` +entirely, so callers that do not set it get byte-identical output. - - ## Inputs @@ -147,6 +177,7 @@ Destroy environment | commit-status-github-token | Github token to access the app repository. Defaults to github-pat if not set. | N/A | false | | commit-timeout | Commit timeout (in seconds) | 60 | false | | debug | Debug mode | false | false | +| deployment-id | Unique identifier for this deploy attempt (for example, the GitHub run ID joined with the run attempt). When set, it is written to `config.yaml` as `deployment\_id`, which lets ArgoCD dedupe notifications per deploy attempt instead of per commit. Left unset, the key is omitted from `config.yaml`. | | false | | environment | Helmfile environment | preview | false | | github-pat | Github PAT to access argocd configuration repository | N/A | true | | gitref-sha | Git SHA (Depricated. Use `ref` instead) | | false | diff --git a/README.yaml b/README.yaml index 705e99e..3fec7e8 100644 --- a/README.yaml +++ b/README.yaml @@ -88,6 +88,7 @@ usage: |- operation: deploy debug: false synchronously: true + deployment-id: ${{ github.run_id }}-${{ github.run_attempt }} ``` @@ -128,5 +129,38 @@ usage: |- debug: false ``` + + ### Deduping ArgoCD notifications per deploy attempt + + ArgoCD's notification `oncePer` trigger dedupes on whichever field you point it at. Keying it on the + application commit means a rollback — replaying a commit ArgoCD has already notified for — is silently + suppressed, and the rollback reports no status at all. + + Pass `deployment-id` a value that is unique per *deploy attempt* rather than per code state, and point + `oncePer` at it instead: + + ```yaml + - name: Deploy + uses: cloudposse/github-action-deploy-argocd@main + with: + # ... + deployment-id: ${{ github.run_id }}-${{ github.run_attempt }} + ``` + + The value is written to the generated `config.yaml` alongside the rest of the deploy metadata: + + ```yaml + app_repository: acme/example-app + app_commit: 6e6a0e1b0e0c4b2a9f1d3c5e7a9b1d3f5a7c9e1b + app_hostname: https://example-app.example.com + name: preview.example-app + namespace: preview + manifests: plat/ue2-sandbox/apps/preview/example-app/manifests + deployment_id: "12345678901-2" + ``` + + The input is optional. Left at its empty default, the `deployment_id` key is omitted from `config.yaml` + entirely, so callers that do not set it get byte-identical output. + include: [] contributors: [] diff --git a/action.yml b/action.yml index 5d05ff6..e42166a 100644 --- a/action.yml +++ b/action.yml @@ -117,7 +117,11 @@ inputs: kube-version: description: "Kubernetes version for helm/helmfile rendering (e.g. `1.28`). When provided, skips SSM metadata lookup via chamber." required: false - default: "" + default: "" + deployment-id: + description: "Unique identifier for this deploy attempt (for example, the GitHub run ID joined with the run attempt). When set, it is written to `config.yaml` as `deployment_id`, which lets ArgoCD dedupe notifications per deploy attempt instead of per commit. Left unset, the key is omitted from `config.yaml`." + required: false + default: "" outputs: webapp-url: description: "Web Application url" @@ -378,6 +382,15 @@ runs: namespace: ${{ inputs.namespace }} manifests: ${{ steps.config.outputs.path }}/manifests + - name: Stamp deployment id + if: ${{ inputs.operation == 'deploy' && inputs.deployment-id != '' }} + shell: bash + env: + DEPLOYMENT_ID: ${{ inputs.deployment-id }} + CONFIG_FILE: ${{ steps.config.outputs.tmp }}/config.yaml + run: |- + yq --exit-status --no-colors --inplace eval '.deployment_id = strenv(DEPLOYMENT_ID)' "${CONFIG_FILE}" + - name: Push to Github uses: nick-fields/retry@v4 id: git From 527c4df7379df892a0b0fdc7fc23019e27f930b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?readme-action=20=F0=9F=93=96?= Date: Fri, 28 Aug 2026 20:41:29 +0000 Subject: [PATCH 4/4] chore: update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c0923ae..2265bfa 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,10 @@ entirely, so callers that do not set it get byte-identical output. + + + + ## Inputs | Name | Description | Default | Required |