-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
84 lines (76 loc) · 1.67 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
stages:
- init
- build
- deploy
variables:
npm_config_cache: $CI_PROJECT_DIR/.npm
DEPLOY_PATH: '/var/web/ui-kit'
GIT_STRATEGY: none # по-умолчанию отключено у всех задач, кроме первой (git-init)
RUNNER_TAG1: node20
RUNNER_TAG2: dev
cache: []
#
# Templates
##
.cache: &cache
key:
files:
- package-lock.json # Если изменится этот файл, обновляем кеш
paths:
- .npm
- node_modules
policy: pull
##
# Tasks
##
git-init:
stage: init
variables:
GIT_STRATEGY: fetch
cache:
<<: *cache
script:
- echo "Инициализируем репозиторий в рабочем каталоге, загружаем кеш"
only:
- master
tags:
- '$RUNNER_TAG1'
- '$RUNNER_TAG2'
npm-install:
stage: init
needs:
- job: git-init
script:
- npm ci --no-audit
cache:
<<: *cache
policy: push
only:
- master
tags:
- '$RUNNER_TAG1'
- '$RUNNER_TAG2'
build:
stage: build
script:
- npm run build
- npm run docs:build
only:
- master
tags:
- '$RUNNER_TAG1'
- '$RUNNER_TAG2'
deploy:
stage: deploy
environment:
name: master
url: http://$CI_PROJECT_NAME.$CI_RUNNER_DESCRIPTION
script:
- mkdir -p $DEPLOY_PATH/release
- rsync --delete-excluded --exclude '.git*' --exclude '.npm' --chmod=Dg+s,ug+w,Fo-w,+X -rl ./ $DEPLOY_PATH
- cd $APP_PATH
only:
- master
tags:
- '$RUNNER_TAG1'
- '$RUNNER_TAG2'