215 lines
4.2 KiB
YAML
215 lines
4.2 KiB
YAML
image: ${CI_REGISTRY}/protonvpn/android/android-app-new:branch-compose
|
|
|
|
include:
|
|
- project: 'agarroux/publish-github'
|
|
ref: master
|
|
file: '/jobs/release.gitlab-ci.yml'
|
|
|
|
- project: 'translations/generator'
|
|
ref: master
|
|
file: '/jobs/sync-crowdin.gitlab-ci.yml'
|
|
|
|
- project: 'translations/generator'
|
|
ref: master
|
|
file: '/jobs/commit-locales.gitlab-ci.yml'
|
|
|
|
- project: 'ProtonVPN/android/android-app-new'
|
|
ref: development
|
|
file: '/appetize-integration.yml'
|
|
|
|
stages:
|
|
- bot
|
|
- analyze
|
|
- build
|
|
- startReview
|
|
- test
|
|
- report
|
|
- publish
|
|
- commit
|
|
- slackRelease
|
|
|
|
variables:
|
|
# Use fastzip to improve cache times
|
|
FF_USE_FASTZIP: "true"
|
|
# Output upload and download progress every 5 seconds
|
|
TRANSFER_METER_FREQUENCY: "5s"
|
|
# Use no compression for artifacts
|
|
ARTIFACT_COMPRESSION_LEVEL: "fast"
|
|
# Use no compression for caches
|
|
CACHE_COMPRESSION_LEVEL: "fastest"
|
|
|
|
cache:
|
|
key: ${CI_COMMIT_REF_SLUG}
|
|
paths:
|
|
- .gradle/caches/modules-*
|
|
- .gradle/caches/jars-*
|
|
- ./**/build
|
|
|
|
#####################
|
|
danger-review:
|
|
image: ruby:2.7
|
|
stage: analyze
|
|
when: always
|
|
tags:
|
|
- small
|
|
script:
|
|
- bundle config set path 'vendor/ruby'
|
|
- bundle config set without 'production'
|
|
- bundle install
|
|
- bundle exec danger --fail-on-errors=false
|
|
cache:
|
|
key:
|
|
files:
|
|
- Gemfile.lock
|
|
paths:
|
|
- vendor/ruby
|
|
variables:
|
|
DANGER_GITLAB_API_TOKEN: $DANGER_GITLAB_API_TOKEN
|
|
interruptible: true
|
|
|
|
detekt analysis:
|
|
stage: analyze
|
|
when: always
|
|
tags:
|
|
- medium
|
|
script:
|
|
- ./gradlew multiModuleDetekt
|
|
artifacts:
|
|
expire_in: 1 month
|
|
reports:
|
|
codequality: config/detekt/reports/mergedReport.json
|
|
|
|
assemble:
|
|
stage: build
|
|
tags:
|
|
- large
|
|
script:
|
|
- echo PROXY_TOKEN="$(curl -o - https://proxy.proton.black/token/get)" >> local.properties
|
|
- echo HOST="proton.black" >> local.properties
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- coreexample/build/outputs/
|
|
|
|
debugTests:
|
|
stage: test
|
|
tags:
|
|
- large
|
|
script:
|
|
- ./gradlew -Pci --console=plain allTest
|
|
|
|
uiTests:
|
|
stage: test
|
|
when: manual
|
|
trigger:
|
|
strategy: depend
|
|
include:
|
|
- local: coreexample/ci/test.coreexample.uitests.yml
|
|
|
|
release-publish-github:
|
|
stage: publish
|
|
tags:
|
|
- small
|
|
only:
|
|
- master
|
|
variables:
|
|
RELEASE_SYNC_PUBLIC_URL: git@github.com:ProtonMail/protoncore_android.git
|
|
RELEASE_SYNC_TO_BRANCH: 'master'
|
|
RELEASE_SYNC_FROM_BRANCH: 'master'
|
|
extends: .release-sync-commit-shared
|
|
|
|
publishMaven:
|
|
stage: publish
|
|
tags:
|
|
- large
|
|
script:
|
|
- ./gradlew publishNewRelease --no-daemon --no-parallel
|
|
only:
|
|
- master
|
|
artifacts:
|
|
expire_in: 10 days
|
|
paths:
|
|
- new_releases.tmp
|
|
- releases
|
|
- docs
|
|
- README.md
|
|
|
|
publishGradlePortal:
|
|
stage: publish
|
|
tags:
|
|
- small
|
|
script:
|
|
- ./gradlew -p plugins assemble && ./gradlew -p plugins publishAll
|
|
only:
|
|
- master
|
|
artifacts:
|
|
expire_in: 10 days
|
|
paths:
|
|
- new_releases.tmp
|
|
- releases
|
|
- docs
|
|
- README.md
|
|
|
|
commitRelease:
|
|
stage: commit
|
|
tags:
|
|
- small
|
|
needs:
|
|
- job: publishMaven
|
|
artifacts: true
|
|
script:
|
|
- ./util/commitRelease
|
|
only:
|
|
- master
|
|
|
|
postReleaseToSlack:
|
|
stage: slackRelease
|
|
tags:
|
|
- small
|
|
needs:
|
|
- job: publishMaven
|
|
artifacts: true
|
|
script:
|
|
- ./util/postReleaseToSlack
|
|
only:
|
|
- master
|
|
|
|
i18n-sync-crowdin:
|
|
extends: .i18n-sync-crowdin-common
|
|
variables:
|
|
I18N_SYNC_CROWDIN_PROJECT: 'android-core'
|
|
I18N_SYNC_BRANCH: 'master'
|
|
I18N_FILTER_OUT_ITEMS: 'coreexample'
|
|
|
|
i18n-commit-locales:
|
|
extends: .i18n-commit-locales-shared
|
|
variables:
|
|
I18N_COMMIT_CROWDIN_PROJECT: 'android-core'
|
|
I18N_COMMIT_BRANCH_PUSH: 'master'
|
|
I18N_COMMIT_BRANCH_ALLOWED: 'master'
|
|
|
|
startReview:
|
|
before_script:
|
|
- export REVIEW_APP_ARTIFACT_PATH="coreexample/build/outputs/apk/debug/coreexample-debug.apk"
|
|
extends: .startReview
|
|
|
|
stopReview:
|
|
extends: .stopReview
|
|
|
|
coverage report:
|
|
stage: report
|
|
tags:
|
|
- medium
|
|
script:
|
|
- ./gradlew coberturaCoverageReport
|
|
coverage: /Total.*?(\d{1,3}\.\d{0,2})%/
|
|
allow_failure: true
|
|
artifacts:
|
|
expire_in: 1 week
|
|
paths:
|
|
- ./build/reports/*
|
|
reports:
|
|
cobertura:
|
|
- ./**/build/reports/cobertura-coverage.xml
|
|
|