123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- stages:
- - environment
- - build
- - test
- - internal
- - alpha
- - beta
- - production
- .updateContainerJob:
- image: docker:stable
- stage: environment
- services:
- - docker:dind
- script:
- - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG || true
- - docker build --cache-from $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG .
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- updateContainer:
- extends: .updateContainerJob
- only:
- changes:
- - Dockerfile
- ensureContainer:
- extends: .updateContainerJob
- allow_failure: true
- before_script:
- - "mkdir -p ~/.docker && echo '{\"experimental\": \"enabled\"}' > ~/.docker/config.json"
- - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- # Skip update container `script` if the container already exists
- # via https://gitlab.com/gitlab-org/gitlab-ce/issues/26866#note_97609397 -> https://stackoverflow.com/a/52077071/796832
- - docker manifest inspect $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG > /dev/null && exit || true
- except:
- changes:
- - Dockerfile
- .build_job:
- image: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- stage: build
- before_script:
- - chmod +x gradlew
- - "export VERSION_CODE=$(($CI_PIPELINE_IID)) && echo $VERSION_CODE"
- - "export VERSION_SHA=`echo ${CI_COMMIT_SHA:0:8}` && echo $VERSION_SHA"
- artifacts:
- paths:
- - app/build/outputs
- buildDebug:
- extends: .build_job
- script:
- - bundle exec fastlane buildDebug
- buildRelease:
- extends: .build_job
- script:
- - bundle exec fastlane buildRelease
- environment:
- name: production
- testDebug:
- image: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- stage: test
- dependencies:
- - buildDebug
- script:
- - chmod +x gradlew
- - bundle exec fastlane test
- .promote_job:
- image: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- when: manual
- dependencies: []
- before_script:
- - echo You need to add your google_play_api_key.json file for this to work. Please see project's README.md. && false
- - chmod +x gradlew
- after_script:
- - rm -f ~/google_play_api_key.json
- publishInternal:
- extends: .promote_job
- image: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- stage: internal
- dependencies:
- - buildRelease
- when: manual
- script:
- - bundle exec fastlane internal
- promoteAlpha:
- extends: .promote_job
- stage: alpha
- script:
- - bundle exec fastlane promote_internal_to_alpha
- promoteBeta:
- extends: .promote_job
- stage: beta
- script:
- - bundle exec fastlane promote_alpha_to_beta
- promoteProduction:
- extends: .promote_job
- stage: production
- # We only allow production promotion on master because
- # in this way you can protect production scoped secret variables
- only:
- - master
- script:
- - bundle exec fastlane promote_beta_to_production
|