Skip to content

Commit 93f622f

Browse files
committed
Add first gitlab ci template files
1 parent 52658c4 commit 93f622f

File tree

2 files changed

+191
-0
lines changed

2 files changed

+191
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
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

0 commit comments

Comments
 (0)