name: Release
on:
push:
branches:
- main pull_request:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
permissions: {}
jobs:
release-pr:
permissions:
contents: write
pull-requests: write
issues: write
statuses: write
runs-on: ubuntu-latest
outputs:
release_pr: ${{ toJSON(steps.release-pr.outputs) }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a with:
egress-policy: audit
- name: Checkout
uses: actions/checkout@v5
- uses: actionutils/trusted-tag-verifier@68bef2f18f8ceb5c4dccc5542cadcfbc82ed4656 with:
verify: 'actionutils/create-release-pr'
- uses: actionutils/create-release-pr@v0
id: release-pr
update-release-pr:
needs: [release-pr]
if: fromJSON(needs.release-pr.outputs.release_pr).state == 'release_pr_open'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a with:
egress-policy: audit
- uses: actions/checkout@v5
with:
ref: ${{ fromJSON(needs.release-pr.outputs.release_pr).pr_branch }}
- uses: aquaproj/aqua-installer@ea518c135a02fc11ff8024364510c181a5c6b342 with:
aqua_version: v2.55.0
- uses: actions/dependency-review-action@v4
id: dependency-review
with:
base-ref: ${{ fromJSON(needs.release-pr.outputs.release_pr).current_tag }}
head-ref: main
- name: Comment dependency review result
env:
BODY: ${{ steps.dependency-review.outputs.comment-content }}
DEP_JSON: ${{ steps.dependency-review.outputs.dependency-changes }}
GITHUB_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ fromJSON(needs.release-pr.outputs.release_pr).pr_number }}
run: |
FORMATTED_JSON=$(echo "${DEP_JSON}" | jq .)
FULL_BODY="${BODY}
<details>
<summary>Dependency Changes (JSON)</summary>
<pre>${FORMATTED_JSON}</pre>
</details>"
github-comment post --pr "${PR_NUMBER}" \
-k dep-review \
--update-condition 'Comment.HasMeta && Comment.Meta.TemplateKey == "dep-review"' \
--var "content:${FULL_BODY}" \
--template "{{ .Vars.content | AvoidHTMLEscape }}"
verify-releaser:
needs: [release-pr]
if: fromJSON(needs.release-pr.outputs.release_pr).state == 'release_required'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a with:
egress-policy: audit
- name: Verify Trusted Tag Releaser
uses: actionutils/trusted-tag-verifier@68bef2f18f8ceb5c4dccc5542cadcfbc82ed4656 with:
verify: 'actionutils/trusted-go-releaser@v0'
release:
needs: [verify-releaser, release-pr]
if: fromJSON(needs.release-pr.outputs.release_pr).state == 'release_required'
concurrency:
group: "release"
cancel-in-progress: false
permissions:
id-token: write contents: write pull-requests: write attestations: write actions: read uses: actionutils/trusted-go-releaser/.github/workflows/trusted-release-workflow.yml@v0
with:
environment: release
setup-zig: true
secrets:
github-token: ${{ secrets.GITHUB_TOKEN }}