-
Notifications
You must be signed in to change notification settings - Fork 0
120 lines (106 loc) · 4.08 KB
/
Copy pathdeploy-central-snapshot.yml
File metadata and controls
120 lines (106 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
name: Deploy Snapshot to Central Portal
env:
JAVA_VERSION: '21'
on:
# Manual trigger - select any branch from GitHub UI
workflow_dispatch:
inputs:
sign_artifacts:
description: 'Sign artifacts with GPG'
required: false
default: 'true'
type: choice
options:
- 'true'
- 'false'
permissions:
contents: read
packages: read
jobs:
verify-snapshot:
runs-on: ubuntu-latest
outputs:
is_snapshot: ${{ steps.check.outputs.is_snapshot }}
version: ${{ steps.check.outputs.version }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: maven
- name: Check version is SNAPSHOT
id: check
run: |
VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
echo "version=$VERSION" >> $GITHUB_OUTPUT
if [[ "$VERSION" == *-SNAPSHOT ]]; then
echo "is_snapshot=true" >> $GITHUB_OUTPUT
echo "✅ Version $VERSION is a SNAPSHOT"
else
echo "is_snapshot=false" >> $GITHUB_OUTPUT
echo "❌ Version $VERSION is NOT a SNAPSHOT - deployment will be skipped"
fi
build:
runs-on: ubuntu-latest
needs: verify-snapshot
if: needs.verify-snapshot.outputs.is_snapshot == 'true'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: maven
- name: Build
run: |
echo "🔨 Building SNAPSHOT version: ${{ needs.verify-snapshot.outputs.version }}"
mvn clean install -P unit-tests -DskipIntegrationTests
echo "✅ Build completed successfully!"
deploy:
name: Deploy Snapshot to Central Portal
runs-on: ubuntu-latest
needs: [verify-snapshot, build]
if: needs.verify-snapshot.outputs.is_snapshot == 'true' && needs.build.result == 'success'
environment: maven-central
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Deploy Snapshot (with GPG signing)
if: github.event.inputs.sign_artifacts != 'false'
uses: ./.github/actions/deploy-central-snapshot
with:
user: ${{ secrets.CENTRAL_REPOSITORY_USER }}
password: ${{ secrets.CENTRAL_REPOSITORY_PASS }}
pgp-pub-key: ${{ secrets.PGP_PUB_KEY }}
pgp-private-key: ${{ secrets.PGP_PRIVATE_KEY }}
pgp-passphrase: ${{ secrets.PGP_PASSPHRASE }}
- name: Deploy Snapshot (without GPG signing)
if: github.event.inputs.sign_artifacts == 'false'
uses: ./.github/actions/deploy-central-snapshot
with:
user: ${{ secrets.CENTRAL_REPOSITORY_USER }}
password: ${{ secrets.CENTRAL_REPOSITORY_PASS }}
- name: Summary
if: success()
run: |
echo "## 🚀 Snapshot Deployed to Central Portal" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Version:** ${{ needs.verify-snapshot.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Repository:** https://central.sonatype.com/repository/maven-snapshots/" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Usage" >> $GITHUB_STEP_SUMMARY
echo '```xml' >> $GITHUB_STEP_SUMMARY
echo '<repositories>' >> $GITHUB_STEP_SUMMARY
echo ' <repository>' >> $GITHUB_STEP_SUMMARY
echo ' <id>central-snapshots</id>' >> $GITHUB_STEP_SUMMARY
echo ' <url>https://central.sonatype.com/repository/maven-snapshots/</url>' >> $GITHUB_STEP_SUMMARY
echo ' <snapshots><enabled>true</enabled></snapshots>' >> $GITHUB_STEP_SUMMARY
echo ' </repository>' >> $GITHUB_STEP_SUMMARY
echo '</repositories>' >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY