feat: compose sdk #464
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: 'ci' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: [ main ] | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
env: | |
JAVA_VERSION: '17' | |
AVD_ARCH: arm64-v8a | |
AVD_OPTIONS: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
AVD_PROFILE: Nexus 6 | |
jobs: | |
test: | |
name: 'Test Unit' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- name: 'Build' | |
run: ./gradlew build --stacktrace | |
- name: 'HTML ES5 test' | |
run: | | |
npm install -g jshint | |
java -cp sdk/build/intermediates/javac/release/classes com.hcaptcha.sdk.HCaptchaHtml > sdk/build/hcaptcha-form.html | |
jshint --extract=always sdk/build/hcaptcha-form.html | |
- name: 'JitPack Test' | |
run: ./gradlew publishReleasePublicationToMavenLocal | |
build-matrix: | |
name: 'Build (target:${{ matrix.target }} compile:${{ matrix.compile }} appcompat: ${{ matrix.appcompat }})' | |
needs: [ test ] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- compile: 34 | |
target: 34 | |
appcompat: 1.6.1 | |
- compile: 34 | |
target: 33 | |
appcompat: 1.5.1 | |
- compile: 34 | |
target: 32 | |
appcompat: 1.4.2 | |
- compile: 34 | |
target: 30 | |
appcompat: 1.3.1 | |
- compile: 34 | |
target: 30 | |
appcompat: 1.3.1 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- run: | | |
./gradlew build -PexampleCompileSdkVersion=${{ matrix.compile }} \ | |
-PexampleTargetSdkVersion=${{ matrix.target }} \ | |
-PexampleAppcompatVersion=${{ matrix.appcompat }} | |
test-ui: | |
name: 'Test UI' | |
runs-on: macos-latest | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
api-level: [30] | |
target: [default] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- name: 'Cache AVD' | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-api-${{ matrix.api-level }}-target-${{ matrix.target }} | |
- name: 'Create AVD' | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: false | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: echo "Generated AVD snapshot for caching." | |
- name: 'Tests' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: true | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: | | |
brew install parallel | |
parallel --retries 3 ::: "./gradlew test:connectedCheck" | |
- if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: androidTest-results | |
path: | | |
test/build/outputs/androidTest-results | |
test/build/reports/androidTests | |
test-minified: | |
name: 'Test UI Minified' | |
needs: [ test-ui ] | |
runs-on: macos-latest | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
api-level: [30] | |
target: [default] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- name: 'Cache AVD' | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-api-${{ matrix.api-level }}-target-${{ matrix.target }} | |
- name: 'Create AVD' | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: false | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: echo "Generated AVD snapshot for caching." | |
- name: 'Tests' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: true | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: | | |
brew install parallel | |
parallel --retries 3 ::: "./gradlew test:connectedCheck -P testingMinimizedBuild=true -P android.enableR8.fullMode=false" | |
- if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: androidTest-minified-results | |
path: | | |
test/build/outputs/androidTest-results | |
test/build/reports/androidTests | |
test-benchmark: | |
name: 'Test Benchmark' | |
runs-on: macos-latest | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
api-level: [30] | |
target: [default] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- name: 'Cache AVD' | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-api-${{ matrix.api-level }}-target-${{ matrix.target }} | |
- name: 'Create AVD' | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: false | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: echo "Generated AVD snapshot for caching." | |
- uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
target: ${{ matrix.target }} | |
emulator-options: ${{ env.AVD_OPTIONS }} | |
force-avd-creation: false | |
disable-animations: true | |
arch: ${{ env.AVD_ARCH }} | |
profile: ${{ env.AVD_PROFILE }} | |
script: ./gradlew benchmark:connectedReleaseAndroidTest | |
- name: Diff benchmark result | |
id: diff-benchmark | |
uses: ./.github/actions/android-benchmark-diff | |
with: | |
reference: benchmark/data/ci-benchmarkData.json | |
compare-with: benchmark/build/outputs/connected_android_test_additional_output/releaseAndroidTest/connected/test(AVD) - 10/com_hcaptcha_sdk_bench_test-benchmarkData.json | |
- name: Log diff benchmark reuslts | |
run: echo "${{ steps.diff-benchmark.outputs.markdown-table }}" | |
- uses: peter-evans/find-comment@v2 | |
if: github.ref != 'refs/heads/main' | |
id: find_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body-includes: Benchmark report | |
- uses: peter-evans/create-or-update-comment@v2 | |
if: ${{ github.ref != 'refs/heads/main' && (steps.diff-benchmark.outputs.markdown-table != null || steps.find_comment.outputs.comment-id != null) }} | |
with: | |
body: | | |
Benchmark report: | |
${{ steps.diff-benchmark.outputs.markdown-table }} | |
edit-mode: replace | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
issue-number: ${{ github.event.pull_request.number }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: benchmark-json-output | |
path: benchmark/build/outputs/connected_android_test_additional_output | |
sonar: | |
name: 'Sonar' | |
needs: [ test ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: ./gradlew sonarqube --info | |
size-report: | |
name: 'Diffuse report' | |
needs: [ test ] | |
if: github.ref != 'refs/heads/main' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: adopt | |
- uses: gradle/gradle-build-action@v2 | |
with: | |
cache-read-only: false | |
- name: 'Build' | |
run: | | |
./gradlew clean build --stacktrace | |
cp sdk/build/outputs/aar/sdk-release.aar sdk-pr.aar | |
- name: 'Build main' | |
run: | | |
git checkout origin/main | |
./gradlew clean build --stacktrace | |
cp sdk/build/outputs/aar/sdk-release.aar sdk-main.aar | |
- id: diffuse | |
uses: usefulness/diffuse-action@v1 | |
with: | |
old-file-path: sdk-main.aar | |
new-file-path: sdk-pr.aar | |
- uses: peter-evans/find-comment@v2 | |
id: find_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body-includes: Diffuse report | |
- uses: peter-evans/create-or-update-comment@v2 | |
if: ${{ steps.diffuse.outputs.diff-raw != null || steps.find_comment.outputs.comment-id != null }} | |
with: | |
body: | | |
Diffuse report: | |
${{ steps.diffuse.outputs.diff-gh-comment }} | |
edit-mode: replace | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
issue-number: ${{ github.event.pull_request.number }} | |
token: ${{ secrets.GITHUB_TOKEN }} |