1515 REGISTRY : ghcr.io
1616
1717jobs :
18- build-image :
19- uses : ./.github/workflows/_reusable-build.yaml
20- with :
21- tags : ${{ github.sha }}
22- secrets : inherit
23-
24- release :
25- needs : build-image
18+ detect :
2619 runs-on : ubuntu-24.04
27- permissions :
28- contents : write
29- packages : write
30- id-token : write
31-
20+ outputs :
21+ skip : ${{ steps.detect.outputs.skip }}
22+ app_version : ${{ steps.detect.outputs.app_version }}
3223 steps :
33- - name : Checkout repository
34- uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
24+ - uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
3525 with :
3626 fetch-depth : 0
3727
@@ -61,56 +51,70 @@ jobs:
6151
6252 echo "skip=false" >> "$GITHUB_OUTPUT"
6353
54+ build-image :
55+ needs : detect
56+ if : ${{ needs.detect.outputs.skip == 'false' }}
57+ uses : ./.github/workflows/_reusable-build.yaml
58+ with :
59+ tags : ${{ github.sha }}
60+ secrets : inherit
61+
62+ release :
63+ needs : [detect, build-image]
64+ if : ${{ needs.detect.outputs.skip == 'false' }}
65+ runs-on : ubuntu-24.04
66+ permissions :
67+ contents : write
68+ packages : write
69+ id-token : write
70+
71+ steps :
72+ - uses : actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
73+ with :
74+ fetch-depth : 0
75+
6476 - name : Setup ORAS
65- if : steps.detect.outputs.skip == 'false'
6677 uses : oras-project/setup-oras@38de303aac69abb66f3e6255b7198bff35f323e3 # v2.0.0
6778
6879 - name : Log in to GHCR
69- if : steps.detect.outputs.skip == 'false'
7080 uses : docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
7181 with :
7282 registry : ${{ env.REGISTRY }}
7383 username : ${{ github.actor }}
7484 password : ${{ secrets.GITHUB_TOKEN }}
7585
7686 - name : Tag release
77- if : steps.detect.outputs.skip == 'false'
7887 run : |
7988 SRC="${{ env.REGISTRY }}/${{ github.repository }}:${{ github.sha }}"
80- DST="${{ env.REGISTRY }}/${{ github.repository }}:${{ steps .detect.outputs.app_version }}"
89+ DST="${{ env.REGISTRY }}/${{ github.repository }}:${{ needs .detect.outputs.app_version }}"
8190 LATEST="${{ env.REGISTRY }}/${{ github.repository }}:latest"
8291 oras copy "$SRC" "$DST"
8392 oras copy "$SRC" "$LATEST"
8493
8594 - name : Setup Cosign
86- if : steps.detect.outputs.skip == 'false'
8795 uses : sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
8896
8997 - name : Sign the container image
90- if : steps.detect.outputs.skip == 'false'
9198 run : |
92- IMAGE="${{ env.REGISTRY }}/${{ github.repository }}:${{ steps .detect.outputs.app_version }}"
99+ IMAGE="${{ env.REGISTRY }}/${{ github.repository }}:${{ needs .detect.outputs.app_version }}"
93100 DIGEST=$(oras resolve "$IMAGE")
94101 cosign sign --yes "${{ env.REGISTRY }}/${{ github.repository }}@${DIGEST}"
95102
96103 - name : Get release notes
97- if : steps.detect.outputs.skip == 'false'
98- run : make release-notes TAG="${{ steps.detect.outputs.app_version }}" > .release_notes
104+ run : make release-notes TAG="${{ needs.detect.outputs.app_version }}" > .release_notes
99105
100106 - name : Create release
101- if : steps.detect.outputs.skip == 'false'
102107 env :
103108 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
104109 run : |
105- gh release create "${{ steps .detect.outputs.app_version }}" \
110+ gh release create "${{ needs .detect.outputs.app_version }}" \
106111 --notes-file .release_notes \
107- --title "${{ steps .detect.outputs.app_version }}" \
112+ --title "${{ needs .detect.outputs.app_version }}" \
108113 --draft
109114
110115 - name : Create git tag
111- if : steps.detect.outputs.skip == 'false'
112116 run : |
113117 git config user.name "github-actions[bot]"
114118 git config user.email "github-actions[bot]@users.noreply.github.com"
115- git tag "${{ steps .detect.outputs.app_version }}"
116- git push origin "${{ steps .detect.outputs.app_version }}"
119+ git tag "${{ needs .detect.outputs.app_version }}"
120+ git push origin "${{ needs .detect.outputs.app_version }}"
0 commit comments