Skip to content

0.19.3

0.19.3 #290

Workflow file for this run

name: ci
on:
pull_request:
types:
- opened
- synchronize
- closed
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
name: Build Ackpine
permissions:
checks: write
steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
with:
persist-credentials: false
- name: Setup environment
uses: ./.github/actions/setup-gradle-environment-action
with:
gradle-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Validate binary compatibility
run: |
./gradlew :checkAckpineAbi || { exit_code=$?; printf "*** This PR changes Ackpine's public ABI. If this is intentional, run './gradlew :updateAckpineAbi' and commit the new ABI dumps. ***"; exit $exit_code; }
- name: Build
run: |
./gradlew :buildAckpine --stacktrace
unit-tests:
runs-on: ubuntu-latest
name: Unit tests
needs: build
if: github.event.pull_request.merged != true && toJSON(github.event.pull_request.labels.*.name) != '["documentation"]'
permissions:
checks: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
with:
persist-credentials: false
- name: Setup environment
uses: ./.github/actions/setup-gradle-environment-action
with:
gradle-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Run unit tests
run: |
./gradlew test --stacktrace
- name: Publish test report
uses: mikepenz/action-junit-report@a294a61c909bd8a4b563024a2faa28897fd53ebc # 6.1.0
if: success() || failure()
with:
report_paths: '**/build/**/TEST-*.xml'
- name: Publish JaCoCo report
uses: madrapps/jacoco-report@50d3aff4548aa991e6753342d9ba291084e63848 # 1.7.2
if: success() || failure()
with:
paths: '**/build/jacocoReports/**/*.xml'
token: ${{ secrets.GITHUB_TOKEN }}
title: Unit tests coverage
update-comment: true
device-tests:
runs-on: ubuntu-latest
name: Device tests (API ${{ matrix.api-level }})
needs: build
if: github.event.pull_request.merged != true && toJSON(github.event.pull_request.labels.*.name) != '["documentation"]'
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
api-level: [ 28, 30, 31, 34 ]
permissions:
checks: write
steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
with:
persist-credentials: false
- 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: Setup environment
uses: ./.github/actions/setup-gradle-environment-action
with:
gradle-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Copy debug.keystore
run: |
cp .github/debug.keystore ~/.android/debug.keystore
- name: Cache AVD
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # 4.3.0
with:
path: ~/.android/avd
key: avd-api${{ matrix.api-level }}-aosp-x86_64
- name: Run device tests
run: |
./gradlew api${{ matrix.api-level }}DebugAndroidTest \
-Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect \
--stacktrace
- name: Publish test report
uses: mikepenz/action-junit-report@a294a61c909bd8a4b563024a2faa28897fd53ebc # 6.1.0
if: success() || failure()
with:
report_paths: '**/build/**/TEST-*.xml'
status-check:
runs-on: ubuntu-latest
if: always()
needs: [ build, unit-tests, device-tests ]
steps:
- name: Check
run: |
results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}')
if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then
echo "One or more required jobs failed"
exit 1
fi
publish:
name: Upload artifacts
runs-on: ubuntu-latest
if: github.repository == 'solrudev/Ackpine' && github.event.pull_request.base.ref == 'master' && github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release')
needs: [ status-check ]
steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
with:
persist-credentials: false
- name: Setup environment
uses: ./.github/actions/setup-gradle-environment-action
with:
gradle-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Publish
run: |
./gradlew publishAndReleaseToMavenCentral
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.OSSRH_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.OSSRH_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
publish-docs:
name: Publish documentation
runs-on: ubuntu-latest
if: github.repository == 'solrudev/Ackpine' && github.event.pull_request.base.ref == 'master' && github.event.pull_request.merged == true
needs: [ status-check ]
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
with:
persist-credentials: false
fetch-depth: 0
- name: Setup environment
uses: ./.github/actions/setup-gradle-environment-action
with:
gradle-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # 6.0.0
with:
python-version: 3.13.9
- name: Prepare API docs
run: |
./gradlew :api-documentation:dokkaGenerate
- name: Build MkDocs
run: |
pip3 install --upgrade pip && pip3 install mkdocs-material mkdocs-minify-plugin
mkdocs build
- name: Deploy docs
if: success()
uses: JamesIves/github-pages-deploy-action@4a3abc783e1a24aeb44c16e869ad83caf6b4cc23 # 4.7.4
with:
branch: gh-pages
folder: site
single-commit: true