-
Notifications
You must be signed in to change notification settings - Fork 73
143 lines (124 loc) · 4.04 KB
/
ci.yml
File metadata and controls
143 lines (124 loc) · 4.04 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
name: rollbar-java CI
on:
workflow_call:
secrets:
RELEASE_GPG_PRIVATE_KEY:
required: true
RELEASE_GPG_PRIVATE_KEY_PASSPHRASE:
required: true
MAVENCENTRAL_USERNAME:
required: true
MAVENCENTRAL_PASSWORD:
required: true
push:
branches: [ master ]
pull_request:
branches: [ master ]
release:
types: [published]
jobs:
validation:
name: Gradle wrapper validation
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: gradle/actions/wrapper-validation@v3
build:
runs-on: ubuntu-22.04
name: Build with Java ${{ matrix.java }}
needs: [ validation ]
strategy:
fail-fast: false
matrix:
java: [ 11, 17 ]
steps:
- uses: actions/checkout@v4
- name: Fetch git tags
run: ./.github/scripts/fetch_to_tag.sh
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'zulu'
cache: 'gradle'
# gradle/actions/setup-gradle@v3 might offer better caching and other benefits through better integration.
# https://github.com/gradle/actions/blob/main/docs/setup-gradle.md
- name: Environment info
run: |
./gradlew --version
echo JAVA_HOME: ${JAVA_HOME}
java -version
javac -version
echo ANDROID_HOME: ${ANDROID_HOME}
echo ANDROID_SDK_ROOT: ${ANDROID_SDK_ROOT}
- name: Build
run: ./gradlew clean build --no-daemon
- name: Upload build reports
if: always()
uses: actions/upload-artifact@v4
with:
name: java-${{ matrix.java }}-build-reports
path: |
**/build/reports/*
build-android:
runs-on: ubuntu-22.04
name: Build Android module with Java 17
needs: [ validation ]
steps:
- uses: actions/checkout@v4
- name: Fetch git tags
run: ./.github/scripts/fetch_to_tag.sh
- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'zulu'
cache: 'gradle'
- name: Install Android SDK
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "build-tools;34.0.0"
- name: Build Android module
run: ./gradlew :rollbar-android:build
- name: Upload Android build reports
if: always()
uses: actions/upload-artifact@v4
with:
name: android-java17-build-reports
path: |
**/build/reports/*
release:
if: github.event_name == 'release'
runs-on: ubuntu-22.04
name: Release
# It would be nice to run this as part of the build job, since it would be
# faster and have less duplicated Yaml, it would not be possible to check
# for all matrix results before publishing if this were just another step
# in that job.
needs: [ build, build-android ]
steps:
- uses: actions/checkout@v4
- name: Set up Java 17 for Android
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'zulu'
cache: 'gradle'
- name: Install Android SDK
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "build-tools;34.0.0"
- name: Import GPG key file
run: |
mkdir -p ~/.gradle
echo "${{ secrets.RELEASE_GPG_SECRING_BASE_64 }}" | base64 --decode > ~/.gradle/secring.gpg
- name: Configure Gradle properties
run: |
cat <<EOF >> ~/.gradle/gradle.properties
mavenCentralUsername=${{ secrets.MAVENCENTRAL_USERNAME }}
mavenCentralPassword=${{ secrets.MAVENCENTRAL_PASSWORD }}
signing.password=${{ secrets.RELEASE_GPG_PRIVATE_KEY_PASSPHRASE }}
signing.keyId=${{ secrets.RELEASE_GPG_KEY_ID }}
signing.secretKeyRingFile=/home/runner/.gradle/secring.gpg
EOF
- name: Release
run: |
./.github/scripts/release.sh