build: run CI when a release is published from Github UI (#352) #434
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |