-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path.gitlab-ci.yml
159 lines (141 loc) · 5.35 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
variables:
# Как долго хранить тестовые сборки, дней
DEV_EXPIRE_IN: "7"
# Каталог куда собираются тестовые сборки
DEV_RPMDIR: "/var/ftp/pvt/Etersoft/RX@Etersoft/CI"
BUILD_ID: "$CI_PIPELINE_ID"
# Каталог внутри которого создаются каталоги для контейнеров
CONTAINER_DIR: "docker-rxclient-containers"
stages:
- build
- test
- cleanup
build and public:
stage: build
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 git@gitlab.eterfund.ru:rx-etersoft/rxclient.git
- /usr/bin/rpmlog -q -r -l
- korinf -f rxclient.spec x86_64/ALTLinux/p8 /var/ftp/pvt/Etersoft/RX@Etersoft/unstable
- korinf -f rxclient.spec x86_64/ALTLinux/Sisyphus /var/ftp/pvt/Etersoft/RX@Etersoft/unstable
# - korinf -f rxclient.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
rx_bot_pub_file.py last_changes.txt || echo "ignore event bot error.."
after_script:
- mkdir -p RPM/log; cp -rf ${HOME}/RPM/log/*rxclient*.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
testsuite:
stage: test
script:
- epm --auto Install rxclient
- git clone git@gitlab.eterfund.ru: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}/$BUILD_ID
- mkdir -p $RPMDIR/sources
#- eterremove remove --days $DEV_EXPIRE_IN --notest dirs ${DEV_RPMDIR} || echo "ignore remove error.."
- /usr/bin/rpmlog -q -r -l
- korinf -f rxclient.spec x86_64/ALTLinux/p8 ${RPMDIR}
- korinf -f rxclient.spec x86_64/ALTLinux/Sisyphus ${RPMDIR}
# - korinf -f rxclient.spec x86_64/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="$HOME/$CONTAINER_DIR/build$BUILD_ID"
- export DAAS_IMAGE_POSTFIX="-$CI_COMMIT_REF_NAME-build$BUILD_ID"
- export "RXCLIENT_NAME=rxclient-$BUILD_ID"
- export "RXSERVER_NAME=rxserver-$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
- daas gen
- |
echo "RXCLIENT_NAME=$RXCLIENT_NAME" > "$DAAS_OUTDIR/rxclient-$BUILD_ID/.env"
echo "BUILD_ID=$BUILD_ID" >> "$DAAS_OUTDIR/rxclient-$BUILD_ID/.env"
- mkdir -p $DAAS_OUTDIR/rxclient-config
script:
- cd $DAAS_OUTDIR
- docker-compose build --force-rm
- docker-compose up -d
- sleep 8
- export RX_CLIENT_IP=$(curl -s http://localhost:8500/v1/catalog/service/$RXCLIENT_NAME | jq '.[].ServiceAddress' | sed 's|"||g')
- export RX_SERVER_IP=$(curl -s http://localhost:8500/v1/catalog/service/$RXSERVER_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" > $DAAS_OUTDIR/rxclient-config/rx-server.nxs
- chmod a+rw $DAAS_OUTDIR/rxclient-config/rx-server.nxs || echo "ignore chmod error.."
- |
echo " RXCLIENT IP: $RX_CLIENT_IP"
echo "REMOTE CONNECT TO RXCLIENT: ssh -p $CI_BUILD_ID guest@$(hostname -s)"
echo " RX-SERVER: $RX_SERVER_IP"
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="$HOME/$CONTAINER_DIR/build$BUILD_ID"
- export "SERVICE_NAME=rxclient-$BUILD_ID"
script:
- echo "Stop & remove containers"
- daas down
# - rm -rf $DAAS_OUTDIR
#- 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 rxclient | 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-.*/