.gitlab-ci.yml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. image: briar/ci-image-android:latest
  2. stages:
  3. - test
  4. - optional_tests
  5. - check_reproducibility
  6. variables:
  7. GIT_SUBMODULE_STRATEGY: recursive
  8. workflow:
  9. # when to create a CI pipeline
  10. rules:
  11. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  12. - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
  13. when: never # avoids duplicate jobs for branch and MR
  14. - if: '$CI_COMMIT_BRANCH'
  15. - if: '$CI_COMMIT_TAG'
  16. .base-test:
  17. before_script:
  18. - set -e
  19. - export GRADLE_USER_HOME=$PWD/.gradle
  20. cache:
  21. key: "$CI_COMMIT_REF_SLUG"
  22. paths:
  23. - .gradle/wrapper
  24. - .gradle/caches
  25. after_script:
  26. # these file change every time and should not be cached
  27. - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
  28. - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
  29. test:
  30. extends: .base-test
  31. stage: test
  32. script:
  33. - git submodule update
  34. - ./gradlew -Djava.security.egd=file:/dev/urandom animalSnifferMain animalSnifferTest
  35. - ./gradlew -Djava.security.egd=file:/dev/urandom assembleOfficialDebug :briar-headless:linuxJars
  36. - ./gradlew -Djava.security.egd=file:/dev/urandom compileOfficialDebugAndroidTestSources compileScreenshotDebugAndroidTestSources check
  37. rules:
  38. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  39. when: always
  40. - when: always
  41. android test:
  42. extends: .base-test
  43. stage: optional_tests
  44. image: briar/ci-image-android-emulator:latest
  45. script:
  46. # start emulator first, so it can fail early
  47. - start-emulator.sh
  48. # run normal and screenshot tests together (exclude Large tests)
  49. - ./gradlew -Djava.security.egd=file:/dev/urandom connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.package=org.briarproject.briar.android -Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest
  50. after_script:
  51. - adb pull /sdcard/Pictures/screenshots
  52. artifacts:
  53. name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
  54. paths:
  55. - kernel.log
  56. - logcat.txt
  57. - briar-android/build/reports/androidTests/connected/flavors/*
  58. - screenshots
  59. expire_in: 3 days
  60. when: on_failure
  61. rules:
  62. - if: '$CI_PIPELINE_SOURCE == "schedule"'
  63. when: manual
  64. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  65. changes:
  66. - briar-android/**/*
  67. when: manual
  68. allow_failure: true
  69. - if: '$CI_COMMIT_TAG == null'
  70. when: manual
  71. allow_failure: true
  72. retry:
  73. max: 1
  74. tags:
  75. - kvm
  76. test_reproducible:
  77. stage: check_reproducibility
  78. script:
  79. - "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"
  80. - "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"
  81. only:
  82. - tags
  83. mailbox integration test:
  84. stage: optional_tests
  85. extends: .base-test
  86. rules:
  87. - changes:
  88. - mailbox-integration-tests/**/*
  89. when: on_success
  90. allow_failure: false
  91. - if: '$CI_PIPELINE_SOURCE == "schedule"'
  92. when: on_success
  93. - if: '$CI_COMMIT_TAG == null'
  94. when: manual
  95. allow_failure: true # TODO figure out how not to allow failure while leaving this optional
  96. script:
  97. - (cd briar-mailbox; git fetch; git reset --hard origin/main)
  98. - MAILBOX_INTEGRATION_TESTS=true ./gradlew --info mailbox-integration-tests:test