1+ name : Develop Branch Snapshots
2+
3+ on :
4+ push :
5+ branches : [ develop ]
6+ schedule :
7+ - cron : ' 0 2 * * *'
8+ workflow_dispatch :
9+
10+ env :
11+ JAVA_VERSION : ' 17'
12+ JAVA_DISTRIBUTION : ' temurin'
13+
14+ jobs :
15+ validate-develop :
16+ runs-on : ubuntu-latest
17+ if : github.ref == 'refs/heads/develop'
18+ timeout-minutes : 15
19+ outputs :
20+ snapshot-version : ${{ steps.version.outputs.snapshot-version }}
21+
22+ steps :
23+ - name : Checkout develop
24+ uses : actions/checkout@v4
25+ with :
26+ ref : develop
27+ fetch-depth : 0
28+
29+ - name : Setup JDK ${{ env.JAVA_VERSION }}
30+ uses : actions/setup-java@v4
31+ with :
32+ java-version : ${{ env.JAVA_VERSION }}
33+ distribution : ${{ env.JAVA_DISTRIBUTION }}
34+
35+ - name : Cache Maven dependencies
36+ uses : actions/cache@v3
37+ with :
38+ path : ~/.m2/repository
39+ key : ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }}
40+ restore-keys : |
41+ ${{ runner.os }}-maven-develop-
42+ ${{ runner.os }}-maven-
43+
44+ - name : Verify snapshot version
45+ id : version
46+ run : |
47+ VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
48+ if [[ ! $VERSION =~ .*-SNAPSHOT$ ]]; then
49+ echo "β Error: Develop branch must have SNAPSHOT version, found: $VERSION"
50+ exit 1
51+ fi
52+ echo "β
Snapshot version verified: $VERSION"
53+ echo "snapshot-version=$VERSION" >> $GITHUB_OUTPUT
54+
55+ - name : Run quick validation
56+ run : |
57+ mvn clean validate compile -B --no-transfer-progress \
58+ -DskipTests=true \
59+ -Dspotless.check.skip=true
60+
61+ maven-central-snapshot :
62+ runs-on : ubuntu-latest
63+ needs : validate-develop
64+ timeout-minutes : 25
65+ if : github.ref == 'refs/heads/develop'
66+
67+ steps :
68+ - name : Checkout develop
69+ uses : actions/checkout@v4
70+ with :
71+ ref : develop
72+ fetch-depth : 0
73+
74+ - name : Setup JDK ${{ env.JAVA_VERSION }}
75+ uses : actions/setup-java@v4
76+ with :
77+ java-version : ${{ env.JAVA_VERSION }}
78+ distribution : ${{ env.JAVA_DISTRIBUTION }}
79+
80+ - name : Cache Maven dependencies
81+ uses : actions/cache@v3
82+ with :
83+ path : ~/.m2/repository
84+ key : ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }}
85+ restore-keys : |
86+ ${{ runner.os }}-maven-develop-
87+ ${{ runner.os }}-maven-
88+
89+ - name : Configure Maven Central Snapshots
90+ uses : whelk-io/maven-settings-xml-action@v22
91+ with :
92+ servers : |
93+ [
94+ {
95+ "id": "central",
96+ "username": "${{ secrets.CENTRAL_TOKEN_USERNAME }}",
97+ "password": "${{ secrets.CENTRAL_TOKEN_PASSWORD }}"
98+ }
99+ ]
100+
101+ - name : Display snapshot version
102+ run : |
103+ echo "π¦ Deploying snapshot version: ${{ needs.validate-develop.outputs.snapshot-version }}"
104+
105+ - name : Run comprehensive tests
106+ run : |
107+ mvn clean verify -B --no-transfer-progress \
108+ -Dmaven.test.failure.ignore=false \
109+ -Dfailsafe.rerunFailingTestsCount=2
110+
111+ - name : Deploy to Maven Central Snapshots
112+ run : |
113+ mvn deploy -B --no-transfer-progress \
114+ -Pmaven-central-release \
115+ -DskipTests=true \
116+ -Dcentral.autoPublish=true
117+ env :
118+ SONATYPE_USERNAME : ${{ secrets.CENTRAL_TOKEN_USERNAME }}
119+ SONATYPE_PASSWORD : ${{ secrets.CENTRAL_TOKEN_PASSWORD }}
120+
121+ - name : Verify Maven Central snapshot deployment
122+ run : |
123+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
124+ echo "β³ Waiting for snapshot propagation..."
125+ sleep 10
126+
127+ # Check if snapshot metadata is available
128+ METADATA_URL="https://central.sonatype.com/repository/maven-snapshots/io/logdash/logdash/$VERSION/maven-metadata.xml"
129+ if curl -s -f "$METADATA_URL" > /dev/null; then
130+ echo "β
Snapshot metadata confirmed at Maven Central"
131+ else
132+ echo "β οΈ Snapshot metadata not yet available (may take time to propagate)"
133+ fi
134+
135+ - name : Display deployment info
136+ run : |
137+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
138+ echo "β
Successfully deployed $VERSION to Maven Central Snapshots"
139+ echo "π¦ Available at: https://central.sonatype.com/repository/maven-snapshots/io/logdash/logdash/$VERSION/"
140+ echo ""
141+ echo "π Maven dependency:"
142+ echo "<dependency>"
143+ echo " <groupId>io.logdash</groupId>"
144+ echo " <artifactId>logdash</artifactId>"
145+ echo " <version>$VERSION</version>"
146+ echo "</dependency>"
147+ echo ""
148+ echo "π Gradle dependency:"
149+ echo "implementation 'io.logdash:logdash:$VERSION'"
150+
151+ - name : Notify deployment status
152+ if : failure()
153+ run : |
154+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
155+ echo "β Snapshot deployment failed for version $VERSION"
156+ echo "Check logs above for deployment errors"
157+
158+ github-packages-snapshot :
159+ runs-on : ubuntu-latest
160+ needs : validate-develop
161+ timeout-minutes : 15
162+ if : github.ref == 'refs/heads/develop'
163+
164+ permissions :
165+ contents : read
166+ packages : write
167+
168+ steps :
169+ - name : Checkout develop
170+ uses : actions/checkout@v4
171+ with :
172+ ref : develop
173+
174+ - name : Setup JDK ${{ env.JAVA_VERSION }}
175+ uses : actions/setup-java@v4
176+ with :
177+ java-version : ${{ env.JAVA_VERSION }}
178+ distribution : ${{ env.JAVA_DISTRIBUTION }}
179+
180+ - name : Cache Maven dependencies
181+ uses : actions/cache@v3
182+ with :
183+ path : ~/.m2/repository
184+ key : ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }}
185+ restore-keys : |
186+ ${{ runner.os }}-maven-develop-
187+ ${{ runner.os }}-maven-
188+
189+ - name : Configure Maven Settings for GitHub Packages
190+ uses : whelk-io/maven-settings-xml-action@v22
191+ with :
192+ servers : |
193+ [
194+ {
195+ "id": "github",
196+ "username": "${env.GITHUB_ACTOR}",
197+ "password": "${env.GITHUB_TOKEN}"
198+ }
199+ ]
200+
201+ - name : Deploy to GitHub Packages (Backup)
202+ run : |
203+ mvn deploy -B --no-transfer-progress \
204+ -Pgithub-release \
205+ -DperformRelease=true \
206+ -DskipTests=true
207+ env :
208+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
209+
210+ - name : Verify GitHub Packages deployment
211+ run : |
212+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
213+ echo "β
Backup snapshot deployed to GitHub Packages: $VERSION"
214+ echo "π¦ Available at: https://github.com/logdash-io/java-sdk/packages"
215+
216+ verify-deployments :
217+ runs-on : ubuntu-latest
218+ needs : [ maven-central-snapshot, github-packages-snapshot ]
219+ timeout-minutes : 10
220+ if : github.ref == 'refs/heads/develop'
221+
222+ steps :
223+ - name : Final verification
224+ run : |
225+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
226+ echo "π Final verification for snapshot: $VERSION"
227+
228+ # Wait a bit more for propagation
229+ echo "β³ Waiting for complete propagation..."
230+ sleep 10
231+
232+ # Check Maven Central snapshots
233+ METADATA_URL="https://central.sonatype.com/repository/maven-snapshots/io/logdash/logdash/$VERSION/maven-metadata.xml"
234+ if curl -s -f "$METADATA_URL" > /dev/null; then
235+ echo "β
Maven Central snapshot confirmed and accessible"
236+ else
237+ echo "β οΈ Maven Central snapshot metadata not accessible yet"
238+ fi
239+
240+ echo ""
241+ echo "π Deployment Summary:"
242+ echo "ποΈ Maven Central Snapshots: ${{ needs.maven-central-snapshot.result }}"
243+ echo "π¦ GitHub Packages: ${{ needs.github-packages-snapshot.result }}"
244+ echo "π’ Version: $VERSION"
245+ echo "π Repository: https://central.sonatype.com/repository/maven-snapshots/"
246+
247+ notification :
248+ runs-on : ubuntu-latest
249+ needs : [ validate-develop, maven-central-snapshot, github-packages-snapshot, verify-deployments ]
250+ if : always() && github.ref == 'refs/heads/develop'
251+
252+ steps :
253+ - name : Workflow status summary
254+ run : |
255+ VERSION="${{ needs.validate-develop.outputs.snapshot-version }}"
256+
257+ echo "π Develop Branch Snapshot Workflow Summary"
258+ echo "============================================="
259+ echo "π’ Version: $VERSION"
260+ echo "π
Triggered: ${{ github.event_name }}"
261+ echo ""
262+ echo "Job Results:"
263+ echo "β Validation: ${{ needs.validate-develop.result }}"
264+ echo "β Maven Central: ${{ needs.maven-central-snapshot.result }}"
265+ echo "β GitHub Packages: ${{ needs.github-packages-snapshot.result }}"
266+ echo "β Verification: ${{ needs.verify-deployments.result }}"
267+ echo ""
268+
269+ # Check overall success
270+ if [[ "${{ needs.validate-develop.result }}" == "success" &&
271+ "${{ needs.maven-central-snapshot.result }}" == "success" &&
272+ "${{ needs.github-packages-snapshot.result }}" == "success" ]]; then
273+ echo "π All snapshot deployments completed successfully!"
274+ echo "π¦ $VERSION is now available for testing"
275+ else
276+ echo "β οΈ Some deployments may have failed. Check individual job results above."
277+ fi
278+
279+ echo ""
280+ echo "π Quick Access:"
281+ echo "- Maven Central: https://central.sonatype.com/repository/maven-snapshots/io/logdash/logdash/$VERSION/"
282+ echo "- GitHub Packages: https://github.com/logdash-io/java-sdk/packages"
283+ echo "- Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
0 commit comments