Skip to content

Refactor to ComposeLifecycleOwner for Better Lifecycle Synchronization #4367

Refactor to ComposeLifecycleOwner for Better Lifecycle Synchronization

Refactor to ComposeLifecycleOwner for Better Lifecycle Synchronization #4367

Workflow file for this run

name : Kotlin CI
on :
pull_request :
merge_group :
env:
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 720 # 12 minutes; default is 20s
# If CI is already running for a branch when that branch is updated, cancel the older jobs.
concurrency :
group : ci-${{ github.ref }}-${{ github.head_ref }}
cancel-in-progress : true
jobs :
build-all :
name : Build all
runs-on : workflow-kotlin-test-runner-ubuntu-4core
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : main build
uses : ./.github/actions/gradle-task
with :
task : compileKotlin assembleDebug
write-cache-key : main-build-artifacts
dokka :
name : Dokka
runs-on : ubuntu-latest
needs : build-all
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Run dokka to validate kdoc
uses : ./.github/actions/gradle-task
with :
task : siteDokka
write-cache-key : main-build-artifacts
shards-and-version :
name : Shard Matrix Yaml
runs-on : workflow-kotlin-test-runner-ubuntu-4core
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : check published artifacts
uses : ./.github/actions/gradle-task-with-commit
with :
check-task : connectedCheckShardMatrixYamlCheck checkVersionIsSnapshot
fix-task : connectedCheckShardMatrixYamlUpdate checkVersionIsSnapshot
personal-access-token: ${{ secrets.PR_UPDATE_TOKEN }}
write-cache-key : build-logic
artifacts-check :
name : ArtifactsCheck
# the `artifactsCheck` task has to run on macOS in order to see the iOS KMP artifacts
runs-on : macos-latest
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : check published artifacts
uses : ./.github/actions/gradle-task-with-commit
with :
check-task : artifactsCheck
fix-task : artifactsDump
personal-access-token: ${{ secrets.PR_UPDATE_TOKEN }}
write-cache-key : build-logic
dependency-guard :
name : Dependency Guard
runs-on : ubuntu-latest
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# If the PR was made by a maintainer or Renovate, automatically update baselines and push
# so that no one has to check out the branch and update the baselines manually.
- name : dependency-guard
uses : ./.github/actions/gradle-task-with-commit
with :
check-task : dependencyGuard --refresh-dependencies
fix-task : dependencyGuardBaseline --refresh-dependencies
personal-access-token: ${{ secrets.PR_UPDATE_TOKEN }}
write-cache-key : build-logic
ktlint :
name : KtLint
runs-on : ubuntu-latest
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# If the PR was made by a maintainer or Renovate, automatically format and push
# so that no one has to check out the branch and do it manually.
- name : KtLint
uses : ./.github/actions/gradle-task-with-commit
with :
check-task : ktLintCheck
fix-task : ktLintFormat
personal-access-token: ${{ secrets.PR_UPDATE_TOKEN }}
write-cache-key : build-logic
api-check :
name : Api check
runs-on : ubuntu-latest
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# If the PR was made by a maintainer or Renovate, automatically format and push
# so that no one has to check out the branch and do it manually.
- name : binary compatibility
uses : ./.github/actions/gradle-task-with-commit
with :
check-task : apiCheck
fix-task : apiDump
personal-access-token: ${{ secrets.PR_UPDATE_TOKEN }}
write-cache-key : build-logic
android-lint :
name : Android Lint
runs-on : ubuntu-latest
needs : build-all
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : lint
write-cache-key : main-build-artifacts
check :
name : Check
runs-on : ubuntu-latest
needs : build-all
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : |
allTests
test
--continue
restore-cache-key : build-logic
write-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
tutorials :
name : Build Tutorials
runs-on : ubuntu-latest
timeout-minutes : 15
steps :
# These setup steps should be common across all jobs in this workflow.
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : build tutorials
uses : ./.github/actions/gradle-task
with :
task : build
build-root-directory : samples/tutorial
restore-cache-key : main-build-artifacts
jvm-conflate-runtime-test :
name : Conflate Stale Renderings Runtime JVM Tests
runs-on : ubuntu-latest
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : jvmTest --continue -Pworkflow.runtime=conflate
restore-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
jvm-stateChange-runtime-test :
name : Render On State Change Only Runtime JVM Tests
runs-on : ubuntu-latest
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : jvmTest --continue -Pworkflow.runtime=baseline-stateChange
restore-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
jvm-conflate-stateChange-runtime-test :
name : Render On State Change Only and Conflate Stale Runtime JVM Tests
runs-on : ubuntu-latest
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : jvmTest --continue -Pworkflow.runtime=conflate-stateChange
restore-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
ios-tests :
name : iOS Tests
runs-on : macos-latest
timeout-minutes : 30
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : iosX64Test
restore-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
js-tests :
name : JS Tests
runs-on : ubuntu-latest
timeout-minutes : 20
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
## JS Specific Tests (for KMP js actuals in core and runtime).
- name : Check with Gradle
uses : ./.github/actions/gradle-task
with :
task : jsTest
restore-cache-key : main-build-artifacts
# Report as GitHub Pull Request Check.
- name : Publish Test Report
uses : mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 # v4
if : always() # always run even if the previous step fails
with :
report_paths : '**/build/test-results/test/TEST-*.xml'
performance-tests :
name : Performance tests
runs-on : workflow-kotlin-test-runner-ubuntu-4core
timeout-minutes : 45
strategy :
# Allow tests to continue on other devices if they fail on one device.
fail-fast : false
matrix :
api-level :
- 31
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Instrumented tests
uses : ./.github/actions/gradle-tasks-with-emulator
with :
api-level : ${{ matrix.api-level }}
prepare-task : :benchmarks:performance-poetry:complex-poetry:prepareDebugAndroidTestArtifacts
test-task : :benchmarks:performance-poetry:complex-poetry:connectedCheck --continue
restore-cache-key : androidTest-build-artifacts
instrumentation-tests :
name : Instrumentation tests
runs-on : workflow-kotlin-test-runner-ubuntu-4core
timeout-minutes : 60
strategy :
# Allow tests to continue on other devices if they fail on one device.
fail-fast : false
matrix :
api-level :
- 31
### <start-connected-check-shards>
shardNum: [ 1, 2, 3 ]
### <end-connected-check-shards>
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Instrumented tests
uses : ./.github/actions/gradle-tasks-with-emulator
with :
api-level : ${{ matrix.api-level }}
prepare-task : prepareConnectedCheckShard${{matrix.shardNum}}
test-task : connectedCheckShard${{matrix.shardNum}} -x :benchmarks:dungeon-benchmark:connectedCheck -x :benchmarks:performance-poetry:complex-benchmark:connectedCheck -x :benchmarks:performance-poetry:complex-poetry:connectedCheck
write-cache-key : androidTest-build-artifacts-${{matrix.shardNum}}
restore-cache-key : main-build-artifacts
runtime-instrumentation-tests :
name : Alternate Runtime Instrumentation tests
runs-on : workflow-kotlin-test-runner-ubuntu-4core
timeout-minutes : 60
strategy :
# Allow tests to continue on other devices if they fail on one device.
fail-fast : false
matrix :
api-level :
- 31
### <start-connected-check-shards>
shardNum: [ 1, 2, 3 ]
### <end-connected-check-shards>
runtime : [ conflate, baseline-stateChange, conflate-stateChange ]
steps :
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name : Instrumented tests
uses : ./.github/actions/gradle-tasks-with-emulator
with :
api-level : ${{ matrix.api-level }}
prepare-task : prepareConnectedCheckShard${{matrix.shardNum}} -Pworkflow.runtime=${{matrix.runtime}}
test-task : connectedCheckShard${{matrix.shardNum}} -Pworkflow.runtime=${{matrix.runtime}} -x :benchmarks:dungeon-benchmark:connectedCheck -x :benchmarks:performance-poetry:complex-benchmark:connectedCheck -x :benchmarks:performance-poetry:complex-poetry:connectedCheck
write-cache-key : androidTest-build-artifacts-${{matrix.shardNum}}-${{matrix.runtime}}
restore-cache-key : main-build-artifacts
all-green :
if : always()
runs-on : ubuntu-latest
needs :
- android-lint
- api-check
- artifacts-check
- check
- dependency-guard
- dokka
- instrumentation-tests
- ios-tests
- js-tests
- jvm-conflate-runtime-test
- jvm-conflate-stateChange-runtime-test
- jvm-stateChange-runtime-test
- ktlint
- performance-tests
- runtime-instrumentation-tests
- shards-and-version
- tutorials
steps :
- name : require that all other jobs have passed
uses : re-actors/alls-green@release/v1
with :
jobs : ${{ toJSON(needs) }}