.gitlab-ci.yml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. image: briar/ci-image-android:latest
  2. stages:
  3. - test
  4. - optional_tests
  5. - check_reproducibility
  6. workflow:
  7. # when to create a CI pipeline
  8. rules:
  9. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  10. - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
  11. when: never # avoids duplicate jobs for branch and MR
  12. - if: '$CI_COMMIT_BRANCH'
  13. - if: '$CI_COMMIT_TAG'
  14. .base-test:
  15. before_script:
  16. - set -e
  17. - export GRADLE_USER_HOME=$PWD/.gradle
  18. cache:
  19. key: "$CI_COMMIT_REF_SLUG"
  20. paths:
  21. - .gradle/wrapper
  22. - .gradle/caches
  23. after_script:
  24. # these file change every time and should not be cached
  25. - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
  26. - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
  27. test:
  28. extends: .base-test
  29. stage: test
  30. script:
  31. - ./gradlew --no-daemon -Djava.security.egd=file:/dev/urandom animalSnifferMain animalSnifferTest
  32. - ./gradlew --no-daemon -Djava.security.egd=file:/dev/urandom check
  33. rules:
  34. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  35. when: always
  36. - when: always
  37. android test:
  38. extends: .base-test
  39. stage: optional_tests
  40. image: briar/ci-image-android-emulator:latest
  41. script:
  42. # start emulator first, so it can fail early
  43. - start-emulator.sh
  44. # run normal and screenshot tests together (exclude Large tests)
  45. - ./gradlew -Djava.security.egd=file:/dev/urandom connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.package=org.briarproject.briar.android -Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest
  46. after_script:
  47. - adb pull /sdcard/Pictures/screenshots
  48. artifacts:
  49. name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
  50. paths:
  51. - kernel.log
  52. - logcat.txt
  53. - briar-android/build/reports/androidTests/connected/flavors/*
  54. - screenshots
  55. expire_in: 3 days
  56. when: on_failure
  57. rules:
  58. - if: '$CI_PIPELINE_SOURCE == "schedule"'
  59. when: on_success
  60. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  61. changes:
  62. - briar-android/**/*
  63. when: manual
  64. allow_failure: true
  65. - if: '$CI_COMMIT_TAG == null'
  66. when: manual
  67. allow_failure: true
  68. retry:
  69. max: 1
  70. tags:
  71. - kvm
  72. test_reproducible:
  73. stage: check_reproducibility
  74. script:
  75. - "curl -X POST -F token=${RELEASE_CHECK_TOKEN} -F ref=master -F variables[RELEASE_TAG]=${CI_COMMIT_REF_NAME} https://code.briarproject.org/api/v4/projects/61/trigger/pipeline"
  76. only:
  77. - tags
  78. .optional_tests:
  79. stage: optional_tests
  80. before_script:
  81. - set -e
  82. - export GRADLE_USER_HOME=$PWD/.gradle
  83. cache:
  84. key: "$CI_COMMIT_REF_SLUG"
  85. paths:
  86. - .gradle/wrapper
  87. - .gradle/caches
  88. script:
  89. - OPTIONAL_TESTS=org.briarproject.bramble.plugin.tor.BridgeTest ./gradlew --info bramble-java:test --tests BridgeTest
  90. after_script:
  91. # these file change every time but should not be cached
  92. - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
  93. - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
  94. bridge test:
  95. extends: .optional_tests
  96. rules:
  97. - if: '$CI_PIPELINE_SOURCE == "schedule"'
  98. when: on_success
  99. allow_failure: true
  100. - if: '$CI_COMMIT_TAG == null'
  101. when: manual
  102. allow_failure: true
  103. pre_release_tests:
  104. extends: .optional_tests
  105. only:
  106. - tags