Update actions/checkout action to v4 #4132
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 : | |
# Use pull_request_target so we can lock the runner down to run only on the main branch. | |
# When we want to test changes to this workflow, then we can use: | |
# pull_request : | |
# temporarily. We will also need to change the runner group permissions for the | |
# workflow-kotlin-test-runner-ubuntu-4core group so that it can run with the branch/SHA | |
# of the PR. | |
pull_request_target : | |
branches : | |
- main | |
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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
# 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 : | |
- uses : actions/checkout@v3 | |
# 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 : | |
- uses : actions/checkout@v3 | |
# 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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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@v3 | |
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. | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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@v3 | |
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 : | |
- uses : actions/checkout@v3 | |
- 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@v3 | |
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 : | |
- uses : actions/checkout@v3 | |
- 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@v3 | |
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 : | |
- uses : actions/checkout@v3 | |
- 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@v3 | |
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 : | |
- uses : actions/checkout@v3 | |
## 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@v3 | |
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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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 : | |
- uses : actions/checkout@v3 | |
- 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) }} |