-
-
Notifications
You must be signed in to change notification settings - Fork 63
107 lines (103 loc) · 4.85 KB
/
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
name: release
on:
workflow_dispatch:
inputs:
parent_version:
description: 'New killbill-oss-parent version'
required: false
default: ''
perform_version:
description: 'tag to (re-)perform (in case of release:perform failure)'
required: false
default: ''
release_oss_parent:
description: 'Release killbill-oss-parent automatically?'
required: true
default: true
type: boolean
env:
MAVEN_FLAGS: "-B --no-transfer-progress"
MAVEN_OPTS: "-Xmx2G -XX:+ExitOnOutOfMemoryError -Dmaven.wagon.rto=60000 -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 -Dmaven.wagon.http.retryHandler.count=3"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
if: github.event.inputs.perform_version == ''
uses: actions/checkout@v2
- name: Checkout full repository
# Required when performing an existing release.
if: github.event.inputs.perform_version != ''
uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Setup git user
env:
BUILD_USER: ${{ secrets.BUILD_USER }}
BUILD_TOKEN: ${{ secrets.BUILD_TOKEN }}
run: |
git config --global user.email "[email protected]"
git config --global user.name "Kill Bill core team"
git config --global url."https://${BUILD_USER}:${BUILD_TOKEN}@github.com/".insteadOf "[email protected]:"
- name: Configure Java
uses: actions/setup-java@v1
with:
java-version: 11
- name: Configure Sonatype mirror
uses: s4u/[email protected]
# Go to Sonatype directly to avoid delay syncs (could get rid of this if actions/setup-java were to support mirrors).
with:
mirrors: '[{"id": "oss-releases", "name": "Sonatype releases", "mirrorOf": "*", "url": "https://oss.sonatype.org/content/repositories/releases/"}]'
- name: Download Java dependencies
# We do as much as we can, but it may not be enough (https://issues.apache.org/jira/browse/MDEP-82)
run: |
mvn ${MAVEN_FLAGS} clean install dependency:resolve dependency:resolve-plugins -DskipTests=true -Dgpg.skip=true -Psonatype-oss-release
- name: Update killbill-oss-parent
if: github.event.inputs.parent_version != ''
run: |
echo "Updating killbill-oss-parent pom.xml to ${{ github.event.inputs.parent_version }}:"
mvn ${MAVEN_FLAGS} versions:update-parent -DgenerateBackupPoms=false -DparentVersion="[${{ github.event.inputs.parent_version }}]"
echo "killbill-oss-parent pom.xml changes:"
git --no-pager diff
echo "Downloading new dependencies:"
mvn ${MAVEN_FLAGS} -U clean install -DskipTests=true
git add pom.xml
# Will be pushed as part of the release process, only if the release is successful
git commit -m "pom.xml: update killbill-oss-parent to ${{ github.event.inputs.parent_version }}"
- name: Configure settings.xml for release
uses: actions/setup-java@v1
with:
java-version: 11
server-id: ossrh-releases
server-username: OSSRH_USER
server-password: OSSRH_PASS
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Release artifacts
if: github.event.inputs.perform_version == ''
env:
OSSRH_USER: ${{ secrets.OSSRH_USER }}
OSSRH_PASS: ${{ secrets.OSSRH_PASS }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
# It will still check the remote but hopefully not download much (0 B at 0 B/s). -o isn't safe because of MDEP-82 (see above).
run: |
mvn ${MAVEN_FLAGS} release:clean release:prepare release:perform
- name: Perform release
if: github.event.inputs.perform_version != ''
env:
OSSRH_USER: ${{ secrets.OSSRH_USER }}
OSSRH_PASS: ${{ secrets.OSSRH_PASS }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
# It will still check the remote but hopefully not download much (0 B at 0 B/s). -o isn't safe because of MDEP-82 (see above).
# See https://issues.apache.org/jira/browse/SCM-729 for why the release.properties file is required.
run: |
echo "scm.url=scm\:git\:[email protected]\:${GITHUB_REPOSITORY}.git" > release.properties
echo "scm.tag=${{ github.event.inputs.perform_version }}" >> release.properties
mvn ${MAVEN_FLAGS} release:perform
- name: Release killbill-oss-parent
if: github.event.inputs.release_oss_parent == 'true'
env:
GH_TOKEN: ${{ secrets.GH_WORKFLOW_PAT }}
run: |
PROJECT_VERSION=$(git describe --abbrev=0 | cut -d '-' -f 4)
gh workflow -R killbill/killbill-oss-parent run release.yml -f java_client_version=${PROJECT_VERSION}