-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
179 lines (158 loc) · 6.01 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
variables:
# Как долго хранить тестовые сборки, дней
DEV_EXPIRE_IN: "20"
# Каталог куда собираются тестовые сборки
DEV_RPMDIR: "/var/ftp/pvt/Etersoft/RX@Etersoft/CI"
# каталог с конфигурациями для rxclient
RXCLIENT_CONFDIR: "docker-rx-client/rxclient-config"
BUILD_ID: "$CI_PIPELINE_ID"
stages:
- build
- update-server
- test
- cleanup
RELEASE:
stage: build
when: manual
script:
# /tmp/.private/.. нужен для hasher, т.к. он не позволяет собирать с другим каталогом, а по умолчанию
# у gitlab-runner выставляется /tmp
- export TMPDIR=/tmp/.private/${USER}; export TMP=${TMPDIR}
# вынимаем через ssh, чтобы потом смочь сделать коммит
- git remote | grep -q gitlab || git remote add gitlab [email protected]:rx-etersoft/rx-etersoft.git
- /usr/bin/rpmlog -q -r -l
- korinf -f rx-etersoft.spec x86_64/ALTLinux/p8 /var/ftp/pvt/Etersoft/RX@Etersoft/unstable
- korinf -f rx-etersoft.spec x86_64/ALTLinux/Sisyphus /var/ftp/pvt/Etersoft/RX@Etersoft/unstable
# - korinf -f rx-etersoft.spec x86_64/ALTLinux/p7 /var/ftp/pvt/Etersoft/RX@Etersoft/unstable
- git push -f --tags gitlab HEAD:ci/latest-build
- git push -f --tags gitlab HEAD:master
- |
echo "$CI_PROJECT_NAME ($CI_COMMIT_REF_NAME)" > last_changes.txt
rpmlog -q --last-changelog >> last_changes.txt
[ -n "$(git tag --contains)" ] && rx_bot_pub_file.py last_changes.txt || echo "ignore event bot error.."
after_script:
# Приходится делать так, потому-что gitlab-runner не позволяет обращаться к ресурсам лежащим вне сборочного каталога
- mkdir -p RPM/log; cp -rf ${HOME}/RPM/log/*rx-etersoft*.log RPM/log/
- mkdir -p korinf-log; cp -rf ${HOME}/RPM/tmp/korinf-log/* korinf-log/
artifacts:
paths:
- RPM/log
- korinf-log
expire_in: 10 days
only:
- master
tags:
- rx-build
rx-server update:
stage: update-server
when: manual
script:
- epm --auto Install rx-etersoft
only:
- master
tags:
- rx-server-update
testsuite:
stage: test
when: manual
script:
- epm --auto Install rx-etersoft
- git clone [email protected]:rx-etersoft/rx-testsuite.git
- cd rx-testsuite && ./rx-tests-start-all
artifacts:
paths:
- rx-testsuite/report/*
expire_in: 10 days
only:
- master
tags:
- rx-tests
test build:
stage: build
script:
- export TMPDIR=/tmp/.private/${USER}; export TMP=${TMPDIR}
- export RPMDIR=${DEV_RPMDIR}/$CI_PIPELINE_ID
- eterremove remove --days $DEV_EXPIRE_IN --notest dirs ${DEV_RPMDIR} || echo "ignore remove error.."
- mkdir -p $RPMDIR/sources
- /usr/bin/rpmlog -q -r -l
- korinf -f rx-etersoft.spec x86_64/ALTLinux/p8 ${RPMDIR}
- korinf -f rx-etersoft.spec x86_64/ALTLinux/Sisyphus ${RPMDIR}
#- korinf -f rx-etersoft.spec x86_64/ALTLinux/p7 ${RPMDIR}
# 32 bit
#- korinf -f rx-etersoft.spec ALTLinux/p8 ${RPMDIR}
#- korinf -f rx-etersoft.spec ALTLinux/Sisyphus ${RPMDIR}
#- korinf -f rx-etersoft.spec ALTLinux/p7 ${RPMDIR}
only:
- /^ci-.*/
- /^docker-ci-.*/
tags:
- rx-build
Testing:
stage: test
#when: manual
before_script:
- export DAAS_TEMPLATES_DIR="$HOME/.daas/templates"
- export DAAS_ADDONS_DIR="$HOME/.daas/addons"
- export DAAS_OUTDIR="$CI_PROJECT_DIR/daas-rx-etersoft"
- export DAAS_IMAGE_POSTFIX="-$CI_COMMIT_REF_NAME-build$BUILD_ID"
- export SERVICE_NAME="rx-etersoft-$BUILD_ID"
- |
mkdir -p $CI_PROJECT_DIR/.daas/addons/
cp $DAAS_ADDONS_DIR/rx-test.list $CI_PROJECT_DIR/.daas/addons/
subst "s|{{BUILD_ID}}|$BUILD_ID|g" $CI_PROJECT_DIR/.daas/addons/rx-test.list
subst "s|Sisyphus|p8|g" $CI_PROJECT_DIR/.daas/addons/rx-test.list
script:
- daas gen
- cd $DAAS_OUTDIR/rx-etersoft-$BUILD_ID/
- docker-compose build --force-rm
- $HOME/bin/start-rxclient-tester.sh
- docker-compose up -d
- sleep 5
- export RX_SERVER_IP=$(curl -s http://localhost:8500/v1/catalog/service/$SERVICE_NAME | jq '.[].ServiceAddress' | sed 's|"||g')
- |
mkdir -p $CI_PROJECT_DIR/.daas/templates/
cp $DAAS_TEMPLATES_DIR/rx-server.nxs.tpl $CI_PROJECT_DIR/.daas/templates/
cat $CI_PROJECT_DIR/.daas/templates/rx-server.nxs.tpl | sed "s|RX_SERVER_IP|${RX_SERVER_IP}|g" > $HOME/$RXCLIENT_CONFDIR/rx-server-$BUILD_ID.nxs
chmod a+rw $HOME/$RXCLIENT_CONFDIR/rx-server-$BUILD_ID.nxs || echo "ignore chmod error.."
# удаляем старые файлы конфигурации
- find $HOME/$RXCLIENT_CONFDIR/ -mindepth 1 -mtime +$DEV_EXPIRE_IN -print -delete || echo "ignore delete old configs error"
- |
echo " PACKAGES: ${DEV_RPMDIR}/$CI_PIPELINE_ID"
echo " SERVER IP: $RX_SERVER_IP"
echo " RXCLIENT CONFIG: rx-etersoft-$BUILD_ID"
echo "REMOTE CONNECT to RXSERVER: ssh -p $CI_BUILD_ID guest@$(hostname -s)"
only:
- /^docker-ci-.*/
tags:
- rx-test-builder
Cleanup:
stage: cleanup
when: manual
before_script:
- export DAAS_TEMPLATES_DIR="$HOME/.daas/templates"
- export DAAS_ADDONS_DIR="$HOME/.daas/addons"
- export DAAS_OUTDIR="$CI_PROJECT_DIR/rx-etersoft"
- export SERVICE_NAME="rx-etersoft-$BUILD_ID"
script:
- echo "Stop & remove containers"
- daas gen
- cd $DAAS_OUTDIR/rx-etersoft-$BUILD_ID/
- docker-compose down
#- docker image prune -f
#- docker container prune -f
#- docker volume prune -f
tags:
- rx-test-builder
only:
- /^docker-ci-.*/
Stop all rx containers:
stage: cleanup
when: manual
script:
- export RX_CLIST=$(docker ps | grep rx-etersoft | grep build | awk '{print $1}')
- test -n "$RX_CLIST" && docker stop $RX_CLIST
- test -n "$RX_CLIST" && docker rm $RX_CLIST
tags:
- rx-test-builder
only:
- /^docker-ci-.*/