-
Notifications
You must be signed in to change notification settings - Fork 8
144 lines (127 loc) · 5.7 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
# Build all the Java modules by constructing a synthentic combined module.
# The main repo provides the pom for the combined module, but is kept on the side.
# The combined module is in the directory combined which contains pass-core and pass-support repos.
name: "Publish: release all Java modules"
run-name: Release all Java modules (${{ inputs.releaseversion }} -> ${{ inputs.nextversion}})
on:
workflow_dispatch:
inputs:
releaseversion:
description: 'Release version'
required: true
nextversion:
description: 'Next dev version'
required: true
pat:
description: 'PAT'
required: true
jobs:
release:
runs-on: ubuntu-latest
env:
RELEASE: ${{ inputs.releaseversion }}
NEXT: ${{ inputs.nextversion }}
steps:
- name: Checkout main
uses: actions/checkout@v3
with:
path: main
- 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
- name: Get the artifact from the main POM
working-directory: main
run: |
echo "ARTIFACT=`mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout`" >> $GITHUB_ENV
- name: Configure git user
run: |
git config --global user.name ${{ github.actor }}
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
# Combine modules together so maven can do everything at once
- name: Create combined module
run: |
mkdir combined
cp main/pom.xml combined
sed -i '/<\/developers>/a <modules><module>pass-core</module><module>pass-support</module></modules>' combined/pom.xml
- name: Checkout pass-core
uses: actions/checkout@v3
with:
repository: eclipse-pass/pass-core
ref: 'main'
path: combined/pass-core
token: $ {{ inputs.pat }}
- name: Checkout pass-support
uses: actions/checkout@v3
with:
repository: eclipse-pass/pass-support
ref: 'main'
path: combined/pass-support
token: $ {{ inputs.pat }}
- 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 combined && mvn versions:set -B -ntp -DnewVersion=$RELEASE)
(cd combined/pass-core && git commit -am "Update version to $RELEASE" && git tag $RELEASE)
(cd combined/pass-support && git commit -am "Update version to $RELEASE" && git tag $RELEASE)
- name: Release Java modules
uses: ./main/.github/actions/maven-release
with:
repodir: combined
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- name: Set the next dev version and commit the change
run: |
(cd main && mvn versions:set -B -ntp -DallowSnapshots=true -DnewVersion=$NEXT && git commit -am "Update version to $NEXT")
(cd combined && mvn versions:set -B -ntp -DallowSnapshots=true -DnewVersion=$NEXT)
(cd combined/pass-core && git commit -am "Update version to $NEXT")
(cd combined/pass-support && git commit -am "Update version to $NEXT")
- name: Release dev Java modules
working-directory: combined
run: |
mvn -B -V -ntp -P release clean deploy -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 images to GHCR
run: |
docker push ghcr.io/eclipse-pass/pass-core-main:$RELEASE
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: |
(cd main && git push origin && git push origin --tags)
(cd combined/pass-core && git push origin && git push origin --tags)
(cd combined/pass-support && git push origin && git push origin --tags)
- name: Create GitHub main release
run: |
gh release create "$RELEASE" --repo=eclipse-pass/main --generate-notes
gh release create "$RELEASE" --repo=eclipse-pass/pass-core --generate-notes
gh release create "$RELEASE" --repo=eclipse-pass/pass-support --generate-notes
env:
GITHUB_TOKEN: ${{ inputs.pat }}