mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 10:19:06 +01:00
108 lines
3.6 KiB
YAML
108 lines
3.6 KiB
YAML
image: briar/ci-image-android:latest
|
|
|
|
stages:
|
|
- test
|
|
- optional_tests
|
|
- check_reproducibility
|
|
|
|
variables:
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
|
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
|
|
|
workflow:
|
|
# when to create a CI pipeline
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
|
|
when: never # avoids duplicate jobs for branch and MR
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
.base-test:
|
|
before_script:
|
|
- set -e
|
|
- export GRADLE_USER_HOME=$PWD/.gradle
|
|
cache:
|
|
key: "$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- .gradle/wrapper
|
|
- .gradle/caches
|
|
after_script:
|
|
# these file change every time and should not be cached
|
|
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
|
|
- rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
|
|
|
|
test:
|
|
extends: .base-test
|
|
stage: test
|
|
script:
|
|
- git submodule update
|
|
- ./gradlew -Djava.security.egd=file:/dev/urandom animalSnifferMain animalSnifferTest
|
|
- ./gradlew -Djava.security.egd=file:/dev/urandom assembleOfficialDebug :briar-headless:linuxJars
|
|
- ./gradlew -Djava.security.egd=file:/dev/urandom compileOfficialDebugAndroidTestSources compileScreenshotDebugAndroidTestSources check
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
when: always
|
|
- when: always
|
|
|
|
android test:
|
|
extends: .base-test
|
|
stage: optional_tests
|
|
image: briar/ci-image-android-emulator:latest
|
|
script:
|
|
# start emulator first, so it can fail early
|
|
- start-emulator.sh
|
|
# run normal and screenshot tests together (exclude Large tests)
|
|
- ./gradlew -Djava.security.egd=file:/dev/urandom connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.package=org.briarproject.briar.android -Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest
|
|
after_script:
|
|
- adb pull /sdcard/Pictures/screenshots
|
|
artifacts:
|
|
name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
|
|
paths:
|
|
- kernel.log
|
|
- logcat.txt
|
|
- briar-android/build/reports/androidTests/connected/flavors/*
|
|
- screenshots
|
|
expire_in: 3 days
|
|
when: on_failure
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
when: manual
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
changes:
|
|
- briar-android/**/*
|
|
when: manual
|
|
allow_failure: true
|
|
- if: '$CI_COMMIT_TAG == null'
|
|
when: manual
|
|
allow_failure: true
|
|
retry:
|
|
max: 1
|
|
tags:
|
|
- kvm
|
|
|
|
test_reproducible:
|
|
stage: check_reproducibility
|
|
script:
|
|
- "curl -X POST -F token=${RELEASE_CHECK_TOKEN} -F ref=master -F variables[APP]='briar' -F variables[RELEASE_TAG]=${CI_COMMIT_REF_NAME} https://code.briarproject.org/api/v4/projects/61/trigger/pipeline"
|
|
- "curl -X POST -F token=${RELEASE_JAR_CHECK_TOKEN} -F ref=main -F variables[APP]='briar-headless' -F variables[RELEASE_TAG]=${CI_COMMIT_REF_NAME} https://code.briarproject.org/api/v4/projects/307/trigger/pipeline"
|
|
only:
|
|
- tags
|
|
|
|
mailbox integration test:
|
|
stage: optional_tests
|
|
extends: .base-test
|
|
rules:
|
|
- changes:
|
|
- mailbox-integration-tests/**/*
|
|
when: on_success
|
|
allow_failure: false
|
|
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
when: on_success
|
|
- if: '$CI_COMMIT_TAG == null'
|
|
when: manual
|
|
allow_failure: true # TODO figure out how not to allow failure while leaving this optional
|
|
script:
|
|
- (cd briar-mailbox; git fetch; git reset --hard origin/main)
|
|
- MAILBOX_INTEGRATION_TESTS=true ./gradlew --info mailbox-integration-tests:test
|