This repository has been archived by the owner on Dec 27, 2023. It is now read-only.
/
.gitlab-ci.yml
130 lines (117 loc) · 3.24 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# $REG see settings>ci_cd>variables
# $REG_USER see settings>ci_cd>variables
# $REG_PASS see settings>ci_cd>variables
# $CI_PROJECT_DIR set by gitlab
# $REG_PREFIX see settings>ci_cd>variables
# $CI_PIPELINE_ID set by gitlab
# $PHP_IMAGE_TAG default = 7.3-fpm-alpine
# $SKIP_TEST_SOURCE default = false
# $SKIP_TEST_BUILT default = false
# $SKIP_DEPLOY_1 default = false
# $SKIP_DEPLOY_2 default = false
# $PUSH default = true, false -> to skip pushing final images to registry
include:
- local: '/ci/gitlab-ci.yml/abstract_test.yml'
stages:
- build_1
- build_2
- test_source
- build_3
- test_built
- deploy_1
- deploy_2
- cleanup
variables:
PUSH: "true"
REG: "$CI_REGISTRY"
REG_USER: "$CI_REGISTRY_USER"
REG_PASS: "$CI_REGISTRY_PASSWORD"
docker_build_base_and_dependency_images:
image: docker:19.03.1
stage: build_1
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_build_1
docker_build_source_and_source_test_images:
image: docker:19.03.1
stage: build_2
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_build_2
rules:
- when: on_success
php_unit_all_test_source:
extends: .abstract_test.php_unit_test
stage: test_source
image:
name: "$REG/$REG_PREFIX/test-source:$CI_PIPELINE_ID"
rules:
- if: $SKIP_TEST_SOURCE == "true"
when: never
- when: on_success
docker_build_dev_and_built_and_built_test_images:
image: docker:19.03.1
stage: build_3
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_build_3
rules:
- if: &working_branch_condition $CI_COMMIT_REF_NAME =~ /^feat\// # todo match feature branches
when: never
- when: on_success
php_unit_all_tests_built:
extends: .abstract_test.php_unit_test
stage: test_built
image:
name: "$REG/$REG_PREFIX/test-built:$CI_PIPELINE_ID"
rules:
- if: $SKIP_TEST_BUILT == "true"
when: never
- if: *working_branch_condition
when: never
- when: on_success
php_unit_all_tests_built_with_ldap:
extends: .abstract_test.php_unit_test_with_ldap
stage: test_built
image:
name: "$REG/$REG_PREFIX/test-built:$CI_PIPELINE_ID"
rules:
- if: $RUN_LDAP_TESTA == "true"
when: on_success
- when: never
docker_push_base_and_dependency_images:
image: docker:19.03.1
stage: deploy_1
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_deploy_1
rules:
- if: $SKIP_DEPLOY == "true"
when: never
- when: on_success
docker_push_built_and_built_test_and_dev_images:
image: docker:19.03.1
stage: deploy_2
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_deploy_2
rules:
- if: $SKIP_DEPLOY == "true"
when: never
- if: *working_branch_condition
when: never
- when: on_success
docker_untag_build_id_tag_images:
image: docker:19.03.1
stage: cleanup
before_script:
- sh -e $CI_PROJECT_DIR/ci/build.sh docker_login
script:
- sh -e $CI_PROJECT_DIR/ci/build.sh stage_delete_images
rules:
- when: always