-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
86 lines (75 loc) · 1.91 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
# Usage:
# Set these private variables in gitlab-ci environment:
# DOCKER_TOKEN, REGISTRY_URI
variables:
PLATFORMS: linux/amd64,linux/arm/v6,linux/arm/v7
VERSION_DOCKER: 19.03.15
VERSION_NODE: 14.17.0
VERSION_NPM: 7.16.0
stages:
- Analyze and Unit Test
- ui
- Functional Tests
- Promote Images
- Publish Package
- Clean
image: node:${VERSION_NODE}-alpine
before_script:
- export TAG=bld_$CI_PIPELINE_IID_${CI_COMMIT_SHA:0:7}
- apk add make
cache:
key: pipeline-$CI_PIPELINE_IID-$CI_COMMIT_SHORT_SHA
paths: [ .pnp.js, .yarn/ ]
policy: pull
.registry_template: ®istry_login
before_script:
- export TAG=bld_$CI_PIPELINE_IID_${CI_COMMIT_SHA:0:7}
- apk add make
- docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $REGISTRY_URI
image: docker:$VERSION_DOCKER
services: [ "docker:dind" ]
.create_image_template: &create_image
script: make create_image
analysis:
stage: Analyze and Unit Test
script:
- set -e
- make analysis
- make test
artifacts:
paths: [ coverage/, junit.xml ]
reports:
junit: junit.xml
cache:
key: pipeline-$CI_PIPELINE_IID-$CI_COMMIT_SHORT_SHA
paths: [ .pnp.js, .yarn/ ]
policy: push
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
create_apicrud_ui:
stage: ui
<<: *registry_login
<<: *create_image
# test:
# stage: Functional Tests
# script: make test_functional
promote_images:
stage: Promote Images
<<: *registry_login
script: apk add curl && IMAGES=ui make promote_images
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
- if: $CI_COMMIT_TAG
publish:
stage: Publish Package
script:
- echo "//registry.npmjs.org/:_authToken=$NPMJS_TOKEN" >$HOME/.npmrc
- npm config set always-auth=true
- npm install -g npm@$VERSION_NPM
- apk add jq
- TAG=$CI_COMMIT_TAG make publish
rules: [ if: $CI_COMMIT_TAG ]
clean:
stage: Clean
image: docker:19.03.8
script: apk add make && make clean_images
when: always