@@ -2,123 +2,97 @@ name: release
22
33on :
44 push :
5- tags :
6- - ' * '
5+ branches :
6+ - main
77
88permissions :
9- contents : write # needed to write releases
10- id-token : write # needed for keyless signing
11- packages : write # needed for ghcr access
9+ id-token : write
10+ contents : write
11+ packages : write
12+ security-events : write
13+ actions : read
1214
1315jobs :
14- release :
15- runs-on : ubuntu-latest
16+
17+ build :
18+ runs-on : ubuntu-22.04
19+
20+ env :
21+ IMAGE_NAME : bradmccoydev/cdevents-controller
22+
1623 steps :
17- - uses : actions/checkout@v3
18- - uses : sigstore/cosign-installer@v3
19- - uses : fluxcd/flux2/action@main
20- - name : Setup Go
21- uses : actions/setup-go@v3
22- with :
23- go-version : 1.20.x
24- - name : Setup Helm
25- uses : azure/setup-helm@v3
26- with :
27- version : v3.10.3
28- - name : Setup QEMU
29- uses : docker/setup-qemu-action@v2
30- with :
31- platforms : all
32- - name : Setup Docker Buildx
33- id : buildx
34- uses : docker/setup-buildx-action@v2
35- - name : Login to GitHub Container Registry
36- uses : docker/login-action@v2
37- with :
38- registry : ghcr.io
39- username : ${{ secrets.DOCKER_USERNAME }}
40- password : ${{ secrets.GHCR_TOKEN }}
41- - name : Login to Docker Hub
42- uses : docker/login-action@v2
43- with :
44- username : ${{ secrets.DOCKER_USERNAME }}
45- password : ${{ secrets.DOCKER_PASSWORD }}
46- - name : Prepare
47- id : prep
48- run : |
49- VERSION=sha-${GITHUB_SHA::8}
50- if [[ $GITHUB_REF == refs/tags/* ]]; then
51- VERSION=${GITHUB_REF/refs\/tags\//}
52- fi
53- echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
54- echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
55- echo "REVISION=${GITHUB_SHA}" >> $GITHUB_OUTPUT
56- - name : Generate images meta
57- id : meta
58- uses : docker/metadata-action@v4
59- with :
60- images : |
61- docker.io/bradmccoydev/cdevents-controller
62- ghcr.io/bradmccoydev/cdevents-controller
63- tags : |
64- type=raw,value=${{ steps.prep.outputs.VERSION }}
65- type=raw,value=latest
66- - name : Publish multi-arch image
67- uses : docker/build-push-action@v3
68- with :
69- sbom : true
70- provenance : true
71- push : true
72- builder : ${{ steps.buildx.outputs.name }}
73- context : .
74- file : ./Dockerfile.xx
75- build-args : |
76- REVISION=${{ steps.prep.outputs.REVISION }}
77- platforms : linux/amd64,linux/arm/v7,linux/arm64
78- tags : ${{ steps.meta.outputs.tags }}
79- labels : ${{ steps.meta.outputs.labels }}
80- - name : Publish Helm chart to GHCR
81- run : |
82- helm package charts/cdevents-controller
83- helm push cdevents-controller-${{ steps.prep.outputs.VERSION }}.tgz oci://ghcr.io/bradmccoydev/charts
84- rm cdevents-controller-${{ steps.prep.outputs.VERSION }}.tgz
85- - name : Publish base image
86- uses : docker/build-push-action@v3
87- with :
88- push : true
89- builder : ${{ steps.buildx.outputs.name }}
90- context : .
91- platforms : linux/amd64
92- file : ./Dockerfile.base
93- tags : docker.io/bradmccoydev/cdevents-controller-base:latest
94- - name : Publish helm chart
95- uses : bradmccoydev/helm-gh-pages@master
96- with :
97- token : ${{ secrets.GITHUB_TOKEN }}
98- - name : Publish config artifact
99- run : |
100- flux push artifact oci://ghcr.io/bradmccoydev/cdevents-controller-deploy:${{ steps.prep.outputs.VERSION }} \
101- --path="./kustomize" \
102- --source="${{ github.event.repository.html_url }}" \
103- --revision="${GITHUB_REF_NAME}/${GITHUB_SHA}"
104- flux tag artifact oci://ghcr.io/bradmccoydev/cdevents-controller-deploy:${{ steps.prep.outputs.VERSION }} --tag latest
105- - name : Sign config artifact
106- run : |
107- echo "$COSIGN_KEY" > /tmp/cosign.key
108- cosign sign -key /tmp/cosign.key ghcr.io/bradmccoydev/cdevents-controller-deploy:${{ steps.prep.outputs.VERSION }} --yes
109- cosign sign -key /tmp/cosign.key ghcr.io/bradmccoydev/cdevents-controller-deploy:latest --yes
110- env :
111- COSIGN_PASSWORD : ${{secrets.COSIGN_PASSWORD}}
112- COSIGN_KEY : ${{secrets.COSIGN_KEY}}
113- - uses : ./.github/actions/release-notes
114- - name : Generate release notes
115- run : |
116- echo 'CHANGELOG' > /tmp/release.txt
117- github-release-notes -org bradmccoydev -repo cdevents-controller -since-latest-release >> /tmp/release.txt
118- - name : Publish release
119- uses : goreleaser/goreleaser-action@v4
120- with :
121- version : latest
122- args : release --release-notes=/tmp/release.txt --skip-validate
123- env :
124- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
24+ - uses : actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
25+ - uses : sigstore/cosign-installer@dd6b2e2b610a11fd73dd187a43d57cc1394e35f9 # v3.0.5
26+
27+ - name : Set up Docker Buildx
28+ id : buildx
29+ uses : docker/setup-buildx-action@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c # v2.5.0
30+
31+ - name : Login to GitHub Container registry
32+ uses : docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0
33+ env :
34+ GITHUB_USER : ${{ github.actor }}
35+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
36+ with :
37+ registry : ghcr.io
38+ username : ${{ github.actor }}
39+ password : ${{ env.GITHUB_TOKEN }}
40+
41+ - name : Prepare
42+ id : prep
43+ run : |
44+ VERSION=sha-${GITHUB_SHA::8}
45+ if [[ $GITHUB_REF == refs/tags/* ]]; then
46+ VERSION=${GITHUB_REF/refs\/tags\//}
47+ fi
48+ echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
49+ echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
50+ echo "REVISION=${GITHUB_SHA}" >> $GITHUB_OUTPUT
51+
52+ - name : Generate images meta
53+ id : meta
54+ uses : docker/metadata-action@c4ee3adeed93b1fa6a762f209fb01608c1a22f1e
55+ with :
56+ images : |
57+ docker.io/${{ env.IMAGE_NAME }}
58+ ghcr.io/${{ env.IMAGE_NAME }}
59+ tags : |
60+ type=raw,value=${{ steps.prep.outputs.VERSION }}
61+ type=raw,value=latest
62+
63+ - name : Build Docker Image
64+ id : docker_build_image
65+ uses : docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 # v4
66+ with :
67+ sbom : true
68+ provenance : true
69+ push : true
70+ builder : ${{ steps.buildx.outputs.name }}
71+ context : .
72+ file : ./Dockerfile
73+ platforms : linux/amd64,linux/arm64
74+ tags : ${{ steps.meta.outputs.tags }}
75+ labels : ${{ steps.meta.outputs.labels }}
76+ build-args : |
77+ REVISION=${{ steps.prep.outputs.REVISION }}
78+
79+ - name : Sign container image
80+ env :
81+ IMAGE_DIGEST : ${{ steps.docker_build_image.outputs.digest }}
82+ COSIGN_PASSWORD : ${{secrets.COSIGN_PASSWORD}}
83+ COSIGN_KEY : ${{secrets.COSIGN_PRIVATE_KEY}}
84+ run : |
85+ cosign sign ghcr.io/bradmccoydev/cdevents-controller:${{ steps.prep.outputs.VERSION }} --yes
86+
87+ # - name: Generate SBOM
88+ # uses: anchore/sbom-action@4d571ad1038a9cc29d676154ef265ab8f9027042 # v0.14.2
89+ # with:
90+ # image: ghcr.io/bradmccoydev/cdevents-controller:0.0.1
91+ # artifact-name: sbom-cdevents-controller-0.0.1.json
92+ # output-file: ./sbom-cdevents-controller-0.0.1.spdx.json
93+
94+ # - name: Attach SBOM to release
95+ # uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
96+ # with:
97+ # tag_name: 0.0.1
98+ # files: ./sbom-app-release-0.0.1.spdx.json
0 commit comments