1+ name : Build and Release Auth Chart
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+ workflow_dispatch :
8+
9+ env :
10+ IMAGE_NAME : auth
11+ REGISTRY : ghcr.io
12+ OCI_REPO : ghcr.io/abstractize
13+ PROJECT_NAME : todo
14+
15+ jobs :
16+ docker-build :
17+ runs-on : ubuntu-latest
18+ permissions :
19+ packages : write
20+
21+ steps :
22+ - name : Checkout code
23+ uses : actions/checkout@v4
24+
25+ - name : Set lowercase env vars
26+ id : set_env
27+ run : |
28+ USERNAME=$(echo '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')
29+ REPO_NAME=$(echo "${{ github.repository }}" | cut -d/ -f2 | tr '[:upper:]' '[:lower:]')
30+ echo "USERNAME=$USERNAME" >> $GITHUB_ENV
31+ echo "REPO_NAME=$REPO_NAME" >> $GITHUB_ENV
32+ echo "USERNAME=$USERNAME" >> $GITHUB_OUTPUT
33+ echo "REPO_NAME=$REPO_NAME" >> $GITHUB_OUTPUT
34+
35+ - name : Set up Docker Buildx
36+ uses : docker/setup-buildx-action@v3
37+
38+ - name : Log in to GitHub Container Registry
39+ uses : docker/login-action@v3
40+ with :
41+ registry : ${{ env.REGISTRY }}
42+ username : ${{ github.actor }}
43+ password : ${{ secrets.GITHUB_TOKEN }}
44+
45+ - name : Build and push Docker image
46+ uses : docker/build-push-action@v6
47+ with :
48+ file : ./Dockerfile
49+ push : true
50+ build-args : |
51+ GITHUB_USERNAME=${{ github.repository_owner }}
52+ secrets : |
53+ GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
54+ tags : |
55+ ${{ env.OCI_REPO }}/docker-images/${{ env.PROJECT_NAME }}/${{ env.IMAGE_NAME }}:latest
56+ ${{ env.OCI_REPO }}/docker-images/${{ env.PROJECT_NAME }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
57+
58+ helm-release :
59+ runs-on : ubuntu-latest
60+ needs : docker-build
61+ permissions :
62+ contents : read
63+ packages : write
64+
65+ steps :
66+ - name : Checkout code
67+ uses : actions/checkout@v4
68+
69+ - name : Set up Helm
70+ uses : azure/setup-helm@v4
71+ with :
72+ version : v3.14.0
73+
74+ - name : Update Chart.yaml version and appVersion
75+ run : |
76+ sudo apt-get update && sudo apt-get install -y yq
77+ VERSION="0.1.${GITHUB_RUN_NUMBER}"
78+ yq -y -i ".appVersion = \"${GITHUB_SHA}\" | .version = \"$VERSION\"" .helm/Chart.yaml
79+
80+ - name : Lint Helm chart
81+ run : helm lint .helm
82+
83+ - name : Package Helm chart
84+ run : helm package .helm --destination .helm-dist
85+
86+ - name : Push Helm chart to GHCR (OCI)
87+ run : |
88+ echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin
89+ CHART_FILE=$(ls .helm-dist/*.tgz)
90+ helm push $CHART_FILE oci://${{ env.OCI_REPO }}/helm-charts/${{ env.PROJECT_NAME }}
0 commit comments