Skip to content

Add test to verify DiskLruCache entries persist deletion without flush. #5801

Add test to verify DiskLruCache entries persist deletion without flush.

Add test to verify DiskLruCache entries persist deletion without flush. #5801

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
concurrency:
# Limit concurrency to 1 for PRs. 'main' concurrency isn't limited.
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
CI: true
JAVA_VERSION: 17
ORG_GRADLE_IDE_DOWNLOADJAVADOC: false
ORG_GRADLE_IDE_DOWNLOADSOURCES: false
jobs:
checks:
name: Checks
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Check Gradle wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Check style
run: ./gradlew spotlessCheck
- name: Check lint
run: ./gradlew lint
- name: Check binary compatibility
run: ./gradlew apiCheck || { exit_code=$?; printf "*** This PR changes Coil's public API. If this change is intentional, run './gradlew apiDump' and commit the new API files. ***"; exit $exit_code; }
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: gradle/actions/setup-gradle@v4
continue-on-error: true
timeout-minutes: 5
with:
cache-overwrite-existing: true
gradle-home-cache-cleanup: true
- name: Unit tests
run: ./gradlew allTests testDebugUnitTest validateDebugScreenshotTest verifyPaparazziDebug verifyRoborazziDebug verifyRoborazziJvm
unit-tests-macos:
name: Unit tests (macOS)
runs-on: macos-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: gradle/actions/setup-gradle@v4
continue-on-error: true
timeout-minutes: 5
with:
cache-overwrite-existing: true
gradle-home-cache-cleanup: true
- name: Unit tests
run: ./gradlew iosSimulatorArm64Test macosArm64Test
instrumentation-tests:
name: Instrumentation tests
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: true
matrix:
api-level: [22, 26, 31]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: gradle/actions/setup-gradle@v4
continue-on-error: true
timeout-minutes: 5
with:
cache-overwrite-existing: true
gradle-home-cache-cleanup: true
# API 30+ emulators only have x86_64 system images.
- name: Get AVD info
uses: ./.github/actions/get-avd-info
id: avd-info
with:
api-level: ${{ matrix.api-level }}
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: ${{ steps.avd-info.outputs.arch }}
target: ${{ steps.avd-info.outputs.target }}
script: mv .github/debug.keystore ~/.android; ./gradlew connectedDebugAndroidTest
build-samples:
name: Build samples
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: gradle/actions/setup-gradle@v4
continue-on-error: true
timeout-minutes: 5
with:
cache-overwrite-existing: true
gradle-home-cache-cleanup: true
- name: Build Compose and View samples
run: ./gradlew samples:compose:assembleDebug samples:view:assembleDebug
build-samples-macos:
name: Build samples (macOS)
runs-on: macos-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: gradle/actions/setup-gradle@v4
continue-on-error: true
timeout-minutes: 5
with:
cache-overwrite-existing: true
gradle-home-cache-cleanup: true
- name: Build iOS sample
run: xcodebuild -project samples/compose/iosApp/iosApp.xcodeproj -scheme iosApp -destination 'platform=iOS Simulator,name=iPhone 16,OS=latest' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
deploy-snapshot:
name: Deploy snapshot
runs-on: macos-latest
timeout-minutes: 60
if: github.repository == 'coil-kt/coil' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/2.x')
needs: [checks, unit-tests, unit-tests-macos, instrumentation-tests, build-samples, build-samples-macos]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Deploy snapshot
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
run: ./gradlew publishToMavenCentral
deploy-docs:
name: Deploy docs
runs-on: ubuntu-latest
timeout-minutes: 60
if: github.repository == 'coil-kt/coil' && github.ref == 'refs/heads/main'
needs: [checks, unit-tests, unit-tests-macos, instrumentation-tests, build-samples, build-samples-macos]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Deploy docs
run: |
git config user.name 'github-actions[bot]' && git config user.email 'github-actions[bot]@users.noreply.github.com'
pip3 install --upgrade pip && pip3 install mkdocs-material mkdocs-material-extensions mkdocs-minify-plugin
./deploy_docs.sh