1+ name : Release Branch Workflow
2+
3+ on :
4+ push :
5+ branches :
6+ - release/*
7+ workflow_run :
8+ workflows :
9+ - Create Release Branch Workflow
10+ types :
11+ - completed
12+
13+ jobs :
14+ build-jars :
15+ runs-on : ubuntu-latest
16+
17+ steps :
18+ - name : Checkout repository
19+ uses : actions/checkout@v4
20+
21+ - name : Set up JDK 21
22+ uses : actions/setup-java@v4
23+ with :
24+ java-version : ' 21'
25+ distribution : ' corretto'
26+
27+ - name : Setup Gradle
28+ uses : gradle/actions/setup-gradle@v4
29+
30+ - name : Build with Gradle Wrapper
31+ run : ./gradlew build
32+
33+ - name : Extract project name from Gradle
34+ id : extract_name
35+ run : |
36+ PROJECT_NAME=$(./gradlew -q printProjectName)
37+ echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV
38+
39+ - name : Extract version from Gradle
40+ id : get-version
41+ run : |
42+ VERSION=$(./gradlew -q printProjectVersion)
43+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
44+
45+ - name : Upload jars
46+ uses : actions/upload-artifact@v4
47+ with :
48+ name : ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-jars
49+ path : build/libs/*.jar
50+
51+ build-and-push-docker :
52+ runs-on : ubuntu-latest
53+ permissions :
54+ packages : write
55+ id-token : write
56+ attestations : write
57+ env :
58+ REGISTRY : ghcr.io
59+ IMAGE_NAME : ${{ github.repository }}
60+
61+ steps :
62+ - name : Checkout repository
63+ uses : actions/checkout@v4
64+
65+ - name : Log in to GitHub Container Registry
66+ uses : docker/login-action@v3
67+ with :
68+ registry : ${{ env.REGISTRY }}
69+ username : ${{ github.actor }}
70+ password : ${{ secrets.GITHUB_TOKEN }}
71+
72+ - name : Extract version from file
73+ run : |
74+ VERSION=$(./gradlew -q printProjectVersion)
75+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
76+
77+ - name : Extract metadata (tags, labels) for Docker
78+ id : meta
79+ uses : docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
80+ with :
81+ images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
82+
83+ - name : Change wrapper permissions
84+ run : chmod +x ./gradlew
85+
86+ - name : Build and push Docker image
87+ id : push
88+ uses : docker/build-push-action@v6
89+ with :
90+ context : .
91+ push : true
92+ tags : ${{ steps.meta.outputs.tags }}, ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
93+ labels : ${{ steps.meta.outputs.labels }}
94+
95+ - name : Generate artifact attestation
96+ uses : actions/attest-build-provenance@v1
97+ with :
98+ subject-name : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
99+ subject-digest : ${{ steps.push.outputs.digest }}
100+ push-to-registry : true
101+
102+ package-and-push-helm :
103+ runs-on : ubuntu-latest
104+ permissions :
105+ contents : write
106+
107+ steps :
108+ - name : Checkout repository
109+ uses : actions/checkout@v4
110+ with :
111+ fetch-depth : 0
112+
113+ - name : Configure Git
114+ run : |
115+ git config user.name "$GITHUB_ACTOR"
116+ git config user.email "[email protected] " 117+
118+ - name : Install Helm
119+ uses : azure/setup-helm@v4
120+ env :
121+ GITHUB_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
122+
123+ - name : Run chart-releaser
124+ 125+ with :
126+ packages_with_index : true
127+ env :
128+ CR_TOKEN : " ${{ secrets.GITHUB_TOKEN }}"
129+
130+ - name : Package Helm Chart
131+ run : |
132+ helm package ./charts/default --destination ./chart
133+
134+ - name : Extract project name from Gradle
135+ id : extract_name
136+ run : |
137+ PROJECT_NAME=$(./gradlew -q printProjectName)
138+ echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV
139+
140+ - name : Extract version from Gradle
141+ id : get-version
142+ run : |
143+ VERSION=$(./gradlew -q printProjectVersion)
144+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
145+
146+ - name : Upload Helm Chart
147+ uses : actions/upload-artifact@v4
148+ with :
149+ name : ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-helm-chart
150+ path : chart/*.tgz
151+
152+ create-release :
153+ runs-on : ubuntu-latest
154+ needs :
155+ - build-jars
156+ - package-and-push-helm
157+
158+ steps :
159+ - name : Checkout repository
160+ uses : actions/checkout@v4
161+
162+ - name : Extract project name from Gradle
163+ id : extract_name
164+ run : |
165+ PROJECT_NAME=$(./gradlew -q printProjectName)
166+ echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV
167+
168+ - name : Extract version from Gradle
169+ id : get-version
170+ run : |
171+ VERSION=$(./gradlew -q printProjectVersion)
172+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
173+
174+ - name : Download jars
175+ uses : actions/download-artifact@v4
176+ with :
177+ name : ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-jars
178+ path : artifacts/
179+
180+ - name : Download Helm Chart
181+ uses : actions/download-artifact@v4
182+ with :
183+ name : ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-helm-chart
184+ path : artifacts/
185+
186+ - name : Release
187+ uses : softprops/action-gh-release@v2
188+ if : true
189+ with :
190+ tag_name : ${{ env.VERSION }}
191+ body_path : ./CHANGELOG.md
192+ files : |
193+ artifacts/*
194+
195+ dependency-submission :
196+ runs-on : ubuntu-latest
197+ permissions :
198+ contents : write
199+
200+ steps :
201+ - name : Checkout repository
202+ uses : actions/checkout@v4
203+
204+ - name : Set up JDK 21
205+ uses : actions/setup-java@v4
206+ with :
207+ java-version : ' 21'
208+ distribution : ' corretto'
209+
210+ - name : Generate and submit dependency graph
211+ uses : gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
0 commit comments