Skip to content

Commit e9f8ba3

Browse files
committed
chore: setup project
Signed-off-by: Brad McCoy <[email protected]>
1 parent fa1b440 commit e9f8ba3

File tree

3 files changed

+91
-117
lines changed

3 files changed

+91
-117
lines changed

.github/workflows/release.yaml

Lines changed: 89 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -2,123 +2,97 @@ name: release
22

33
on:
44
push:
5-
tags:
6-
- '*'
5+
branches:
6+
- main
77

88
permissions:
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

1315
jobs:
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

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ WORKDIR /
2727
COPY --from=builder /workspace/cdevents-controller .
2828
USER 65532:65532
2929

30-
ENTRYPOINT ["/k8sgpt"]
30+
ENTRYPOINT ["/cdevents-controller"]

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ build-xx:
4545
--platform=linux/amd64 \
4646
-t $(DOCKER_IMAGE_NAME):$(VERSION) \
4747
--load \
48-
-f Dockerfile.xx .
48+
-f Dockerfile .
4949

5050
build-base:
5151
docker build -f Dockerfile.base -t $(DOCKER_REPOSITORY)/cdevents-controller-base:latest .

0 commit comments

Comments
 (0)