Skip to content

feat: compose sdk

feat: compose sdk #458

Workflow file for this run

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'
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: 33
target: 33
appcompat: 1.5.1
- compile: 32
target: 32
appcompat: 1.4.2
- compile: 32
target: 30
appcompat: 1.3.1
- compile: 30
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: [29]
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.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: false
arch: x86_64
profile: Nexus 6
script: echo "Generated AVD snapshot for caching."
- name: 'Tests'
uses: reactivecircus/android-emulator-runner@v2.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: true
arch: x86_64
profile: Nexus 6
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'
runs-on: macos-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
api-level: [29]
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.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: false
arch: x86_64
profile: Nexus 6
script: echo "Generated AVD snapshot for caching."
- name: 'Tests'
uses: reactivecircus/android-emulator-runner@v2.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: true
arch: x86_64
profile: Nexus 6
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: [29]
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.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: false
arch: x86_64
profile: Nexus 6
script: echo "Generated AVD snapshot for caching."
- uses: reactivecircus/android-emulator-runner@v2.29.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
force-avd-creation: false
disable-animations: true
arch: x86_64
profile: Nexus 6
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 }}