-
Notifications
You must be signed in to change notification settings - Fork 8
167 lines (146 loc) · 6.66 KB
/
pass-java-release.yml
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
155
156
157
158
159
160
161
162
163
164
165
166
167
name: "Publish: release all java modules"
on:
workflow_dispatch:
inputs:
releaseversion:
description: 'Release version'
required: true
nextversion:
description: 'Next dev version'
required: true
jobs:
release:
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
env:
RELEASE: ${{ inputs.releaseversion }}
NEXT: ${{ inputs.nextversion }}
steps:
- name: Checkout main
uses: actions/checkout@v3
with:
path: main
- name: Checkout pass-core
uses: actions/checkout@v3
with:
repository: eclipse-pass/pass-core
path: pass-core
- name: Checkout pass-support
uses: actions/checkout@v3
with:
repository: eclipse-pass/pass-support
path: pass-support
- name: Checkout playground for testing
uses: actions/checkout@v3
with:
repository: eclipse-pass/playground
path: playground
- name: Configure git user
run: |
git config --global user.name ${{ github.actor }}
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
- name: Create combined module
run: |
mkdir combined
cp main/pom.xml combined
cp -r pass-core combined
cp -r pass-support combined
sed -i '/<\/developers>/a <modules><module>pass-core</module><module>pass-support</module></modules>' combined/pom.xml
- name: Set the release version, commit the change, and tag it
run: |
(cd main && mvn versions:set -B -ntp -DnewVersion=$RELEASE && git commit -am "Update version to $RELEASE" && git tag $RELEASE)
(cd pass-support && mvn versions:set -B -ntp -DnewVersion=$RELEASE && git commit -am "Update version to $RELEASE" && git tag $RELEASE)
(cd pass-core && mvn versions:set -B -ntp -DnewVersion=$RELEASE && git commit -am "Update version to $RELEASE" && git tag $RELEASE)
(cd combined && mvn versions:set -B -ntp -DnewVersion=$RELEASE)
- name: Setup Java & Maven
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'temurin'
cache: 'maven'
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.MAVEN_GPG_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
# Build and deploy to sonatype if the release does not already exist.
- name: Release Java modules
working-directory: combined
run: |
goal="install"
if curl -f -s https://oss.sonatype.org/service/local/repositories/releases/content/org/eclipse/pass/eclipse-pass-parent/$RELEASE/ > /dev/null; then
echo "Release $RELEASE already exists"
goal="install"
fi
mvn -B -U -V -ntp -P release -DstagingProgressTimeoutMinutes=10 clean install | tee release.log
code=${PIPESTATUS[0]}
marker1="Remote staging repositories are being released"
marker2="Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin"
if [ "$code" -ne "0" ]; then
if grep -q "$marker1" release.log && grep -q "$marker2" release.log; then
echo "Failed cleaning up after pushing to Sonatype, but it may have succeeded anyway."
else
exit "$code"
fi
fi
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- name: Wait for Sonatype artifacts
run: |
echo "Waiting for artifacts of $RELEASE to be released."
counter=0
until curl -f -s https://oss.sonatype.org/service/local/repositories/releases/content/org/eclipse/pass/eclipse-pass-parent/$RELEASE/ > /dev/null
do
sleep 60
echo "."
counter=$((counter+1))
if [ "$counter" -gt 20 ]; then
echo "Timed out waiting for release"
exit 1
fi
done
echo "Artifacts for $RELEASE have been released."
- name: Set the next dev version, commit the change, and tag it
run: |
(cd main && mvn versions:set -B -ntp -DnewVersion=$NEXT && git commit -am "Update version to $NEXT" && git tag $NEXT)
(cd pass-support && mvn versions:set -B -ntp -DnewVersion=$NEXT && git commit -am "Update version to $NEXT" && git tag $NEXT)
(cd pass-core && mvn versions:set -B -ntp -DnewVersion=$NEXT && git commit -am "Update version to $NEXT" && git tag $NEXT)
(cd combined && mvn versions:set -B -ntp -DnewVersion=$NEXT)
- name: Release dev Java modules
working-directory: combined
run: |
mvn -B -V -ntp clean install -DskipTests -DskipITs
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push Docker image to GHCR
run: |
echo docker push ghcr.io/eclipse-pass/pass-core-main:$RELEASE
echo docker push ghcr.io/eclipse-pass/pass-core-main:$NEXT
# docker push ghcr.io/eclipse-pass/deposit-services-core:$RELEASE
# docker push ghcr.io/eclipse-pass/deposit-services-core:$NEXT
# docker push ghcr.io/eclipse-pass/pass-notification-service:$RELEASE
# docker push ghcr.io/eclipse-pass/pass-notification-service:$NEXT
# docker push ghcr.io/eclipse-pass/jhu-grant-loader:$RELEASE
# docker push ghcr.io/eclipse-pass/jhu-grant-loader:$NEXT
# docker push ghcr.io/eclipse-pass/pass-journal-loader:$RELEASE
# docker push ghcr.io/eclipse-pass/pass-journal-loader:$NEXT
# docker push ghcr.io/eclipse-pass/pass-nihms-loader:$RELEASE
# docker push ghcr.io/eclipse-pass/pass-nihms-loader:$NEXT
- name: Push the commits and tags
run: |
echo git push
(cd plaground && echo test >test.txt && git commit -am "Update version to $NEXT" && git tag $NEXT)
(cd plaground && git push origin && git push origin --tags)
# (cd main && git push origin && git push origin --tags)
# (cd pass-core && git push origin && git push origin --tags)
# (cd pass-core && git push origin && git push origin --tags)