-
Notifications
You must be signed in to change notification settings - Fork 42
178 lines (170 loc) · 5.9 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
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
168
169
170
171
172
173
174
175
176
177
178
name: Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release'
required: true
env:
SIGNING_KEY_FILE_PATH: /home/runner/secretKey.gpg
jobs:
#First we build
build_aar:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
#After decoding the secret key, place the file in ~ /. Gradle/ secring.gpg
- name: Decode Signing Key
uses: ./.github/actions/decode_signing_key_action
with:
signing_key_file: ${{ secrets.SIGNING_KEY_FILE }}
signing_file_path: ${{ env.SIGNING_KEY_FILE_PATH }}
- name: Assemble
run: ./gradlew --stacktrace assemble -x :Demo:assemble # we exclude Demo from assemble
env:
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_KEY_FILE: ${{ env.SIGNING_KEY_FILE_PATH }}
#Once building is finished, we unit test every module in parallel
unit_test_core:
name: CorePayments Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Run Unit Tests
uses: ./.github/actions/unit_test_module
with:
module: CorePayments
unit_test_card:
name: CardPayments Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Run Unit Tests
uses: ./.github/actions/unit_test_module
with:
module: CardPayments
unit_test_paypal_web:
name: PayPal Web Payments Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Run Unit Tests
uses: ./.github/actions/unit_test_module
with:
module: PayPalWebPayments
unit_test_fraud_protection:
name: Fraud Protection Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Run Unit Tests
uses: ./.github/actions/unit_test_module
with:
module: FraudProtection
unit_test_finished:
needs: [unit_test_card, unit_test_core, unit_test_paypal_web, unit_test_fraud_protection]
name: All Unit Test finished
runs-on: ubuntu-latest
steps:
- run: echo "Unit test finished"
# after build and unit tests are finished, publish all modules at once
# to help reduce the probability of failure when interacting with sonatype servers
publish_all_modules:
needs: [ unit_test_finished, build_aar ]
name: Publish All Modules To Sonatype
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Decode Signing Key
uses: ./.github/actions/decode_signing_key_action
with:
signing_key_file: ${{ secrets.SIGNING_KEY_FILE }}
signing_file_path: ${{ env.SIGNING_KEY_FILE_PATH }}
- name: Update Version
run: |
./gradlew -PversionParam=${{ github.event.inputs.version }} changeReleaseVersion
- name: Publish All Modules
uses: ./.github/actions/publish_all_modules
with:
sonatype_usr: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
sonatype_pwd: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
signing_key_id: ${{ secrets.SIGNING_KEY_ID }}
signing_key_pwd: ${{ secrets.SIGNING_KEY_PASSWORD }}
signing_key_file: ${{ env.SIGNING_KEY_FILE_PATH }}
# Once all releases are done, we bump version, tag it and prepare next
bump_version:
needs: [ publish_all_modules ]
name: Bump Version
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'microsoft'
- name: Set github user
uses: ./.github/actions/set_github_user
- name: Update Version
run: |
./gradlew -PversionParam=${{ github.event.inputs.version }} updateCHANGELOGVersion
./gradlew -PversionParam=${{ github.event.inputs.version }} changeReleaseVersion
git add .
git commit -m 'Bump version to ${{ github.event.inputs.version }}'
git tag ${{ github.event.inputs.version }} -a -m 'Release ${{ github.event.inputs.version }}, by ${{ github.actor }}'
./gradlew incrementSnapshotVersion
git add .
git commit -m 'Next version ready'
git push origin HEAD ${{ github.event.inputs.version }}
- name: Save changelog entries to a file
run: sed -e '1,/##/d' -e '/##/,$d' CHANGELOG.md > changelog_entries.md
- name: Create GitHub release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.version }}
release_name: ${{ github.event.inputs.version }}
body_path: changelog_entries.md
draft: false
prerelease: false