Skip to content

build: release 4.0.1 #511

build: release 4.0.1

build: release 4.0.1 #511

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'
workflow_dispatch:
env:
JAVA_VERSION: '17'
jobs:
test:
name: 'Test Unit'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
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@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false
- run: |
./gradlew build -PexampleCompileSdkVersion=${{ matrix.compile }} \
-PexampleTargetSdkVersion=${{ matrix.target }} \
-PexampleAppcompatVersion=${{ matrix.appcompat }}
test-ui:
name: 'Test UI'
needs: test
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false
- name: Run tests
uses: ./.github/actions/android-emulator-run
with:
script: "parallel --retries 3 ::: './gradlew test:connectedCheck'"
- if: failure()
uses: actions/upload-artifact@v4
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: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false
- name: Run tests
uses: ./.github/actions/android-emulator-run
with:
script: "parallel --retries 3 ::: './gradlew test:connectedCheck -P testingMinimizedBuild=true -P android.enableR8.fullMode=false'"
- if: failure()
uses: actions/upload-artifact@v4
with:
name: androidTest-minified-results
path: |
test/build/outputs/androidTest-results
test/build/reports/androidTests
test-benchmark:
name: 'Test Benchmark'
needs: test
# ubuntu-latest fails with JNI ERROR (app bug): weak global reference table overflow (max=51200)
# macos-latest i.e. macos-14 https://github.com/ReactiveCircus/android-emulator-runner/issues/324
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false
- name: Run tests
uses: ./.github/actions/android-emulator-run
timeout-minutes: 20
with:
api-level: 29
fresh-avd: true
script: |
adb uninstall com.hcaptcha.sdk.bench.test || true
./gradlew benchmark:connectedReleaseAndroidTest
- if: always()
uses: actions/upload-artifact@v4
with:
name: androidTest-benchmark-results
path: |
benchmark/build/outputs/
benchmark/build/reports/
- 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@v3
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@v4
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@v4
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@v4
with:
fetch-depth: 0
- uses: ./.github/actions/check-user-permission
id: write_access
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-java@v4
if: steps.write_access.outputs.granted == 'true'
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
if: steps.write_access.outputs.granted == 'true'
with:
cache-read-only: false
- uses: actions/cache@v4
if: steps.write_access.outputs.granted == 'true'
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- run: ./gradlew sonarqube --info
if: steps.write_access.outputs.granted == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: peter-evans/find-comment@v3
if: github.event_name == 'pull_request'
id: find_comment
with:
issue-number: ${{ github.event.pull_request.number }}
body-includes: SonarQube Execution
- uses: peter-evans/create-or-update-comment@v4
if: github.event_name == 'pull_request' && steps.find_comment.outputs.comment-id == null && steps.write_access.outputs.granted == 'false'
with:
body: |
SonarQube Execution Skipped. `${{ github.triggering_actor }}` does not have permissions on this repo. Maintainers will rerun it manually
edit-mode: replace
comment-id: ${{ steps.find_comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
token: ${{ secrets.GITHUB_TOKEN }}
- uses: peter-evans/create-or-update-comment@v4
if: github.event_name == 'pull_request' && steps.find_comment.outputs.comment-id != null && steps.write_access.outputs.granted == 'true'
with:
body: |
SonarQube Execution Completed.
edit-mode: append
comment-id: ${{ steps.find_comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
token: ${{ secrets.GITHUB_TOKEN }}
size-report:
name: 'Diffuse report'
needs: [ test ]
if: github.ref != 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: adopt
- uses: gradle/actions/setup-gradle@v3
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@v3
id: find_comment
with:
issue-number: ${{ github.event.pull_request.number }}
body-includes: Diffuse report
- uses: peter-evans/create-or-update-comment@v4
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 }}