Refactor to ComposeLifecycleOwner for Better Lifecycle Synchronization #4367
Workflow file for this run
This file contains 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 : 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) }} |