Skip to content

Add a robolectric Compose workaround #3523

Add a robolectric Compose workaround

Add a robolectric Compose workaround #3523

Workflow file for this run

name: Build GTO-Support
on:
push:
branches: [master]
pull_request:
branches: [master]
schedule:
- cron: '0 0 1 * *'
workflow_dispatch:
inputs:
triggerRelease:
description: 'Release Build'
required: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
ORG_GRADLE_PROJECT_releaseBuild: ${{ github.event_name == 'workflow_dispatch' && inputs.triggerRelease && github.ref == 'refs/heads/master' }}
ORG_GRADLE_PROJECT_versionSuffix: ${{ (github.event_name == 'pull_request' && format('PR{0}', github.event.pull_request.number)) || '' }}
jobs:
build:
name: Build Library
runs-on: macos-14
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Build Library
run: ./gradlew assemble --scan
checkstyle:
name: Checkstyle
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run Checkstyle
run: ./gradlew checkstyle --scan
- name: Archive Checkstyle results
if: always()
uses: actions/upload-artifact@v4
with:
name: checkstyle-results
path: "**/build/reports/checkstyle/"
ktlint:
name: ktlint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run ktlint
run: ./gradlew :build-logic:ktlintCheck ktlintCheck --scan
- name: Archive ktlint results
if: always()
uses: actions/upload-artifact@v4
with:
name: ktlint-results
path: "**/build/reports/ktlint/"
lint:
name: Lint Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run Lint Checks
run: ./gradlew lint --scan
- name: Archive lint results
if: always()
uses: actions/upload-artifact@v4
with:
name: lint-results
path: "**/build/reports/lint-results*.*"
android_tests:
name: Android & Java Unit Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
testShard: [1, 2]
env:
ORG_GRADLE_PROJECT_testShard: ${{ matrix.testShard }}
ORG_GRADLE_PROJECT_testTotalShards: 2
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.sha }}
restore-keys: |
${{ runner.os }}-maven-
- name: Run Unit Tests
run: ./gradlew test jvmTest koverXmlReport --scan
- name: Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: Archive Unit Test results
if: always()
uses: actions/upload-artifact@v4
with:
name: android-unit-test-results-${{ matrix.testShard }}
path: "**/build/reports/tests/"
- name: Archive kover results
if: always()
uses: actions/upload-artifact@v4
with:
name: android-kover-results-${{ matrix.testShard }}
path: "**/build/reports/kover/"
ios_tests:
name: iOS Unit Tests
runs-on: macos-14
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run iOS Unit Tests
run: ./gradlew iosX64Test iosX64BackgroundTest --scan
js_tests:
name: JS Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Run JS Unit Tests
run: ./gradlew jsBrowserTest jsNodeTest --scan
- name: Archive test results
if: always()
uses: actions/upload-artifact@v4
with:
name: js-unit-test-results
path: "**/build/reports/tests/"
check_version:
name: Check Version is Unreleased
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
tag: ${{ steps.tag_name.outputs.tag }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Find Version
id: version
run: grep ^version= gradle.properties >> $GITHUB_OUTPUT
- name: Generate Tag Name
id: tag_name
run: echo tag=$TAG_NAME >> $GITHUB_OUTPUT
env:
TAG_NAME: v${{ steps.version.outputs.version }}
- name: Check if version was already released
run: "! git ls-remote -t --exit-code origin $TAG_NAME"
env:
TAG_NAME: ${{ steps.tag_name.outputs.tag }}
tag_release:
name: Tag Release & Bump Version
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' && inputs.triggerRelease && github.ref == 'refs/heads/master'
needs: [ build, checkstyle, ktlint, lint, android_tests, ios_tests, js_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create Tag
env:
TAG_NAME: ${{ needs.check_version.outputs.tag }}
run: |
git tag $TAG_NAME
git push origin $TAG_NAME
# TODO: actions-ecosystem/action-push-tag@v1 is not currently functional, see: https://github.com/actions-ecosystem/action-push-tag/issues/10
# uses: actions-ecosystem/action-push-tag@v1
# with:
# tag: ${{ needs.check_version.outputs.tag }}
- name: Generate next version
id: bump_version
uses: actions-ecosystem/action-bump-semver@v1
with:
current_version: ${{ needs.check_version.outputs.version }}
level: patch
- name: Update version for new development
run: sed -i "s/version=${{ needs.check_version.outputs.version }}/version=${{ steps.bump_version.outputs.new_version }}/" gradle.properties
- name: Create Version Bump Pull Request
uses: peter-evans/create-pull-request@v7
with:
branch: "versionBump/${{ steps.bump_version.outputs.new_version }}"
title: "Bump version after release"
commit-message: "Bump version to ${{steps.bump_version.outputs.new_version}}"
deploy:
name: Deploy Library
runs-on: macos-14
if: |
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Publish PR SNAPSHOT')) ||
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') ||
github.event_name == 'schedule'
needs: [ build, checkstyle, ktlint, lint, android_tests, ios_tests, js_tests, check_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version-file: ".java-version"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Cache Konan
uses: actions/cache@v4
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ github.sha }}
restore-keys: ${{ runner.os }}-konan-
- name: Publish library
run: ./gradlew publish --scan
env:
ORG_GRADLE_PROJECT_cruGlobalMavenRepositoryUsername: ${{ secrets.DEPLOY_USERNAME }}
ORG_GRADLE_PROJECT_cruGlobalMavenRepositoryPassword: ${{ secrets.DEPLOY_PASSWORD }}