-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy path.gitlab-ci.yml
97 lines (87 loc) · 2.38 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
default:
image: $CI_REGISTRY_IMAGE:latest
# tags:
# - my-tag
before_script:
- export GRADLE_USER_HOME=cache/.gradle
- echo $KEYSTORE | base64 -d -i > /tmp/my-release-key.keystore
- echo $SA_JSON_KEY | base64 -d -i > key_firebase.json
- echo $GOOGLE_SERVICES_JSON | base64 -d -i > app/google-services.json
cache:
key:
files:
- gradle/wrapper/gradle-wrapper.properties
paths:
- $PWD/cache/.gradle/
stages:
- build_base_image
- tests
- deploy_staging
- deploy_prod
build_base_image:
rules:
- if: $CI_COMMIT_REF_NAME == "main"
changes:
- Dockerfile
stage: build_base_image
image:
name: gcr.io/kaniko-project/debug:769
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
script:
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination $CI_REGISTRY_IMAGE:latest
lints:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
- if: $CI_COMMIT_REF_NAME == "main"
stage: tests
script:
- bundle exec fastlane lint
unit_test:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
- if: $CI_COMMIT_REF_NAME == "main"
stage: tests
script:
- bundle exec fastlane unit_test
staging_firebase:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
when: manual
- if: $CI_COMMIT_REF_NAME == "main"
stage: deploy_staging
script:
- bundle exec fastlane firebase_distribution
environment:
name: staging
prod_firebase:
rules:
- if: $CI_COMMIT_REF_NAME == "main"
stage: deploy_prod
script:
- bundle exec fastlane firebase_distribution
artifacts:
paths:
- app/build/outputs/bundle/release/app-release.aab
expire_in: 1 day
environment:
name: prod
google_play:
rules:
- if: $CI_COMMIT_REF_NAME == "main"
when: manual
stage: deploy_prod
script:
- echo $SA_JSON_GP_KEY | base64 -d -i > /tmp/key_gp.json
- bundle exec fastlane google_beta
dependencies:
- prod_firebase
environment:
name: prod-gp
when: manual