Skip to content

build: run CI when a release is published from Github UI (#352) #434

build: run CI when a release is published from Github UI (#352)

build: run CI when a release is published from Github UI (#352) #434

Workflow file for this run

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