-
Notifications
You must be signed in to change notification settings - Fork 0
154 lines (129 loc) · 4.7 KB
/
release.yml
File metadata and controls
154 lines (129 loc) · 4.7 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Release
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
jobs:
extract-version:
name: Extract version from tag
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get-version.outputs.version }}
steps:
- name: Get version from tag
id: get-version
run: echo "version=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
validate-modules:
name: Validate ${{ matrix.module }}
runs-on: ubuntu-latest
needs: extract-version
strategy:
matrix:
module: [armonik-client, worker]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
- name: Set project version
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Check for SNAPSHOT dependencies
working-directory: ${{ matrix.module }}
run: |
echo "🔍 Checking for SNAPSHOT dependencies..."
SNAPSHOT_FILES=$(find . -name "pom.xml" -type f -exec grep -l "SNAPSHOT" {} \;)
if [ -n "$SNAPSHOT_FILES" ]; then
echo "❌ ERROR: SNAPSHOT dependencies found in release build!"
echo ""
echo "Files containing SNAPSHOT:"
echo "$SNAPSHOT_FILES"
exit 1
fi
echo "✅ No SNAPSHOT dependencies found"
- name: Verify build
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp -Pci-release verify
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
publish-modules:
name: Publish ${{ matrix.module }}
runs-on: ubuntu-latest
needs: [extract-version, validate-modules]
strategy:
matrix:
module: [armonik-client, worker]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
- name: Set project version
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Deploy to Sonatype Central
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp -Pci-release deploy -DskipTests
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
publish-docker-image:
name: Build and publish Docker image
runs-on: ubuntu-latest
needs: [ extract-version, publish-modules ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_LOGIN }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Set project version
working-directory: worker
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Build and push Docker image
working-directory: worker
run: ./mvnw -B -ntp clean package -Pdocker
- name: Verify Docker image
run: |
echo "✅ Docker image published:"
echo " dockerhubaneo/armonik-dynamic-java-worker:${{ needs.extract-version.outputs.version }}"
echo " dockerhubaneo/armonik-dynamic-java-worker:latest"