File tree Expand file tree Collapse file tree 2 files changed +191
-0
lines changed
Expand file tree Collapse file tree 2 files changed +191
-0
lines changed Original file line number Diff line number Diff line change 1+ stages :
2+ - test
3+ - build
4+ - push
5+
6+ .docker_login : &docker_login
7+ - echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
8+
9+
10+ variables :
11+ DOCKER_BUILDKIT : 1
12+ DOCKER_TLS_CERTDIR : " /certs"
13+
14+ include :
15+ - template : Security/SAST.gitlab-ci.yml
16+ - template : Security/Container-Scanning.gitlab-ci.yml
17+ - template : Security/Secret-Detection.gitlab-ci.yml
18+ # - template: Code-Quality.gitlab-ci.yml
19+
20+ eslint :
21+ image : node:16-alpine3.16
22+ # ###
23+ stage : test
24+ allow_failure : true
25+ timeout : 5m
26+ before_script :
27+ - npm ci
28+ script :
29+ - npm run eslint
30+
31+ Build :
32+ image : docker:20
33+ stage : build
34+ retry : 2
35+ needs :
36+ - eslint
37+ before_script :
38+ - *docker_login
39+ script :
40+ - " docker -v"
41+ # builder
42+ - docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --target builder -t $CI_REGISTRY_IMAGE/builder:latest .
43+ # final image
44+ - docker build --build-arg APP_VERSION=$CI_COMMIT_SHORT_SHA --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
45+ # push both
46+ - docker push $CI_REGISTRY_IMAGE/builder:latest
47+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
48+
49+ container_scanning :
50+ stage : push
51+ needs :
52+ - Build
53+
54+
55+ Push latest :
56+ image : docker:20
57+ variables :
58+ GIT_STRATEGY : none
59+ stage : push
60+ needs :
61+ - Build
62+ rules :
63+ - if : $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
64+ before_script :
65+ - *docker_login
66+ script :
67+ - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
68+ - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
69+ - docker push $CI_REGISTRY_IMAGE:latest
70+
71+ Push tag :
72+ image : docker:20
73+ variables :
74+ GIT_STRATEGY : none
75+ stage : push
76+ needs :
77+ - Build
78+ only :
79+ - tags
80+ before_script :
81+ - *docker_login
82+ script :
83+ - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
84+ - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
85+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
Original file line number Diff line number Diff line change 1+ stages :
2+ - test
3+ - build
4+ - push
5+
6+ .docker_login : &docker_login
7+ - echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
8+
9+
10+ variables :
11+ DOCKER_BUILDKIT : 1
12+ DOCKER_TLS_CERTDIR : " /certs"
13+
14+ include :
15+ - template : Security/SAST.gitlab-ci.yml
16+ - template : Security/Container-Scanning.gitlab-ci.yml
17+ - template : Security/Secret-Detection.gitlab-ci.yml
18+ # - template: Code-Quality.gitlab-ci.yml
19+
20+ eslint :
21+ image : node:16-alpine3.16
22+ # ###
23+ stage : test
24+ allow_failure : true
25+ timeout : 5m
26+ before_script :
27+ - npm ci
28+ script :
29+ - npm run eslint
30+
31+ unit-test :
32+ variables :
33+ NODE_ENV : test
34+ image : node:16-alpine3.16
35+ # ###
36+ stage : test
37+ retry : 1
38+ timeout : 5m
39+ coverage : /All files[^|]*\|[^|]*\s+([\d\.]+)/
40+ before_script :
41+ - npm ci
42+ script :
43+ - npm test
44+ artifacts :
45+ reports :
46+ junit :
47+ - test-results.xml
48+ cobertura :
49+ - coverage/cobertura-coverage.xml
50+
51+ Build :
52+ image : docker:20
53+ stage : build
54+ retry : 2
55+ needs :
56+ - unit-test
57+ - eslint
58+ before_script :
59+ - *docker_login
60+ script :
61+ - " docker -v"
62+ # builder
63+ - docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --target builder -t $CI_REGISTRY_IMAGE/builder:latest .
64+ # final image
65+ - docker build --build-arg APP_VERSION=$CI_COMMIT_SHORT_SHA --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
66+ # push both
67+ - docker push $CI_REGISTRY_IMAGE/builder:latest
68+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
69+
70+ container_scanning :
71+ stage : push
72+ needs :
73+ - Build
74+
75+
76+ Push latest :
77+ image : docker:20
78+ variables :
79+ GIT_STRATEGY : none
80+ stage : push
81+ needs :
82+ - Build
83+ rules :
84+ - if : $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
85+ before_script :
86+ - *docker_login
87+ script :
88+ - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
89+ - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
90+ - docker push $CI_REGISTRY_IMAGE:latest
91+
92+ Push tag :
93+ image : docker:20
94+ variables :
95+ GIT_STRATEGY : none
96+ stage : push
97+ needs :
98+ - Build
99+ only :
100+ - tags
101+ before_script :
102+ - *docker_login
103+ script :
104+ - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
105+ - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
106+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
You can’t perform that action at this time.
0 commit comments