]> Git Repo - VerusCoin.git/blob - .gitlab-ci.yml
Update version
[VerusCoin.git] / .gitlab-ci.yml
1 stages:
2   - build
3   - test
4   - deploy
5 ########################################################################################################################
6 ####START####                                     PROJECT LEVEL VARIABLES                                  ####START####
7 ########################################################################################################################
8 variables:
9   VERSION: 0.6.4-3
10   VERUS_CLI_ARM64_LINUX: Verus-CLI-Linux-v${VERSION}-arm64.tar.gz
11   VERUS_CLI_LINUX_AMD64: Verus-CLI-Linux-v${VERSION}-amd64.tar.gz
12   VERUS_CLI_WINDOWS: Verus-CLI-Windows-v${VERSION}.zip
13   VERUS_CLI_MACOS: Verus-CLI-MacOS-v${VERSION}.tar.gz
14   DOWNSTREAM_AGAMA_BRANCH: ${CI_COMMIT_REF_NAME}
15   POST_MESSAGE: "Source: ${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}\n
16   Pipeline Trigger: ${CI_PIPELINE_SOURCE}\n
17   Commit: https://github.com/VerusCoin/VerusCoin/commit/${CI_COMMIT_SHA}\n
18   ${CI_COMMIT_MESSAGE}"
19   STRIP_BINARIES: "true"
20 ########################################################################################################################
21 ####END####                                        PROJECT LEVEL VARIABLES                                   ####END####
22 ########################################################################################################################
23 ########################################################################################################################
24 ########################################################################################################################
25 ####START####          Build Stage: compile and package binaries for Verus CLI                     ####START#####
26 ########################################################################################################################
27 ########################################################################################################################
28 ####START####                                            LINUX                                             ####START####
29 ########################################################################################################################
30 build:linux:
31   image: asherd/verus-builders:verus-centos
32   variables:
33     DOCKER_DRIVER: overlay2
34     CONFIGURE_FLAGS: --with-gcc-arch=x86-64
35   stage: build
36   cache:
37     key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
38     paths:
39       - depends
40   script:
41     - scl enable devtoolset-7 sh
42     - source /opt/rh/devtoolset-7/enable
43     - zcutil/build.sh -j$(nproc)
44     - if [ "${STRIP_BINARIES}" = "true" ]; then strip --strip-unneeded  src/verus && strip --strip-unneeded  src/verusd; fi
45     - mkdir verus-cli
46     - cp src/verus
47       src/verusd
48       doc/man/verus-cli/linux/README.txt
49       zcutil/fetch-params.sh
50       verus-cli
51     - mv verus-cli/fetch-params.sh verus-cli/fetch-params
52     - chmod +x verus-cli/verus
53     - chmod +x verus-cli/verusd
54     - chmod +x verus-cli/fetch-params
55     - tar -czvf ${VERUS_CLI_LINUX_AMD64} verus-cli
56     - sha256sum ${VERUS_CLI_LINUX_AMD64} > ${VERUS_CLI_LINUX_AMD64}.sha256
57     - git status
58   after_script:
59     - curl -F file=@"${VERUS_CLI_LINUX_AMD64}"
60       -F channels="${CLI_POST_CHANNEL}"
61       -F initial_comment="${POST_MESSAGE}"
62       -H "${SLACK_BOT_AUTH}"
63       "https://slack.com/api/files.upload"
64   artifacts:
65     paths:
66       - ${VERUS_CLI_LINUX_AMD64}
67       - ${VERUS_CLI_LINUX_AMD64}.sha256
68     expire_in: 1 week
69
70 build:linux:arm64:
71   image: asherd/verus-builders:cross-arm
72   variables:
73     DOCKER_DRIVER: overlay2
74     HOST: aarch64-linux-gnu
75     STRIP: /usr/aarch64-linux-gnu/bin/strip
76   stage: build
77   cache:
78     key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
79     paths:
80       - depends
81   script:
82     - zcutil/build.sh -j$(nproc)
83     - if [ "${STRIP_BINARIES}" = "true" ]; then /usr/aarch64-linux-gnu/bin/strip --strip-unneeded  src/verus && /usr/aarch64-linux-gnu/bin/strip --strip-unneeded  src/verusd; fi
84     - mkdir verus-cli
85     - cp src/verus
86       src/verusd
87       doc/man/verus-cli/linux/README.txt
88       zcutil/fetch-params.sh
89       verus-cli
90     - mv verus-cli/fetch-params.sh verus-cli/fetch-params
91     - chmod +x verus-cli/verus
92     - chmod +x verus-cli/verusd
93     - chmod +x verus-cli/fetch-params
94     - tar -czvf ${VERUS_CLI_ARM64_LINUX} verus-cli
95     - sha256sum ${VERUS_CLI_ARM64_LINUX} > ${VERUS_CLI_ARM64_LINUX}.sha256
96     - git status
97   after_script:
98     - curl -F file=@"${VERUS_CLI_ARM64_LINUX}"
99       -F channels="${CLI_POST_CHANNEL}"
100       -F initial_comment="${POST_MESSAGE}"
101       -H "${SLACK_BOT_AUTH}"
102       "https://slack.com/api/files.upload"
103   artifacts:
104     paths:
105       - ${VERUS_CLI_ARM64_LINUX}
106       - ${VERUS_CLI_ARM64_LINUX}.sha256
107     expire_in: 1 week
108 ########################################################################################################################
109 ####END####                                              LINUX                                               ####END####
110 ########################################################################################################################
111 ####START####                                           WINDOWS                                            ####START####
112 ########################################################################################################################
113 build:windows:
114   image: asherd/verus-builders:verus-windows
115   variables:
116     DOCKER_DRIVER: overlay2
117     CONFIGURE_FLAGS: --with-gcc-arch=x86-64
118   stage: build
119   cache:
120     key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
121     paths:
122       - depends
123   script:
124     - zcutil/build-win.sh -j$(nproc)
125     - mkdir verus-cli
126     - cp src/verus.exe
127       src/verusd.exe
128       doc/man/verus-cli/windows/README.txt
129       zcutil/fetch-params.bat
130       verus-cli
131     - if [ "${STRIP_BINARIES}" = "true" ]; then strip --strip-unneeded verus-cli/verusd.exe && strip --strip-unneeded verus-cli/verus.exe; fi
132     - zip -r ${VERUS_CLI_WINDOWS} verus-cli
133     - sha256sum ${VERUS_CLI_WINDOWS} > ${VERUS_CLI_WINDOWS}.sha256
134     - curl -F file=@"${VERUS_CLI_WINDOWS}"
135       -F channels="${CLI_POST_CHANNEL}"
136       -F initial_comment="${POST_MESSAGE}"
137       -H "${SLACK_BOT_AUTH}"
138       "https://slack.com/api/files.upload"
139   artifacts:
140     paths:
141       - ${VERUS_CLI_WINDOWS}
142       - ${VERUS_CLI_WINDOWS}.sha256
143     expire_in: 1 week
144 ########################################################################################################################
145 ####END####                                             WINDOWS                                              ####END####
146 ########################################################################################################################
147 ####START####                                            MACOS                                             ####START####
148 ########################################################################################################################
149 build:mac:
150   variables:
151     CONFIGURE_FLAGS: --with-gcc-arch=x86-64
152   stage: build
153   tags: ["Mojave"]
154   cache:
155     key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
156     paths:
157       - depends
158   script:
159     - zcutil/build-mac.sh -j$(sysctl -n hw.physicalcpu)
160     - ./makeReleaseMac.sh
161     - tar -czvf ${VERUS_CLI_MACOS} verus-cli
162     - shasum -a 256 ${VERUS_CLI_MACOS} > ${VERUS_CLI_MACOS}.sha256
163     - curl -F file=@"${VERUS_CLI_MACOS}"
164       -F channels="${CLI_POST_CHANNEL}"
165       -F initial_comment="${POST_MESSAGE}"
166       -H "${SLACK_BOT_AUTH}"
167       "https://slack.com/api/files.upload"
168   artifacts:
169     paths:
170       - ${VERUS_CLI_MACOS}
171       - ${VERUS_CLI_MACOS}.sha256
172     expire_in: 1 week
173 ########################################################################################################################
174 ####END####                                              MACOS                                               ####END####
175 ########################################################################################################################
176 ########################################################################################################################
177 ####END####                                           Build Stage                                            ####END####
178 ########################################################################################################################
179 ########################################################################################################################
180 ########################################################################################################################
181 ########################################################################################################################
182 ####START####     Test stage: Test functionality of komodo binaries. Produce code quality and SAST reports. ####START####
183 ########################################################################################################################
184 ########################################################################################################################
185 ########################################################################################################################
186 ####START####                                        Code Quality                                          ####START####
187 ########################################################################################################################
188 .code_quality:
189   image: docker:stable
190   variables:
191     DOCKER_DRIVER: overlay2
192   allow_failure: true
193   services:
194     - docker:stable-dind
195   script:
196     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
197     - docker run
198       --env SOURCE_CODE="$PWD"
199       --volume "$PWD":/code
200       --volume /var/run/docker.sock:/var/run/docker.sock
201       "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
202   artifacts:
203     paths: [gl-code-quality-report.json]
204 ########################################################################################################################
205 ####END####                                          Code Quality                                            ####END####
206 ########################################################################################################################
207 ########################################################################################################################
208 ####START####                              Static Application Security Tests                               ####START####
209 ########################################################################################################################
210 .sast:
211   image: docker:stable
212   variables:
213     DOCKER_DRIVER: overlay2
214   allow_failure: true
215   services:
216     - docker:stable-dind
217   script:
218     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
219     - docker run
220       --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
221       --volume "$PWD:/code"
222       --volume /var/run/docker.sock:/var/run/docker.sock
223       "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
224   artifacts:
225     paths: [gl-sast-report.json]
226 ########################################################################################################################
227 ####END####                                Static Application Security Tests                                 ####END####
228 ########################################################################################################################
229 ########################################################################################################################
230 ####START####                            Run Verus CLI on Ubuntu Xenial (16.04)                            ####START####
231 ########################################################################################################################
232 .ubuntu:xenial:
233   image: ubuntu:xenial
234   variables:
235     DOCKER_DRIVER: overlay2
236   stage: test
237   before_script:
238     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
239     - rm -rf /root/.komodo || true
240     - mv .komodo /root/ || true
241   script:
242     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
243     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
244     - python qa/verus-cli-tests/verus-cli-tester.py
245   after_script:
246     - mv /root/.komodo ./ || true
247   cache:
248     key: ${CI_JOB_NAME}
249     paths: [.komodo]
250   artifacts:
251     paths: [log.txt]
252     expire_in: 1 week
253   dependencies:
254     - build:linux
255 ########################################################################################################################
256 ####END####                               Run Verus CLI on Ubuntu Xenial (16.04)                             ####END####
257 ########################################################################################################################
258 ########################################################################################################################
259 ####START####                             Run Verus CLI on Ubuntu Bionic (18.04)                           ####START####
260 ########################################################################################################################
261 .ubuntu:bionic:
262   image: ubuntu:bionic
263   variables:
264     DOCKER_DRIVER: overlay2
265   stage: test
266   before_script:
267     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
268     - rm -rf /root/.komodo || true
269     - mv .komodo /root/ || true
270   script:
271     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
272     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
273     - python qa/verus-cli-tests/verus-cli-tester.py
274   after_script:
275     - mv /root/.komodo ./ || true
276   cache:
277     key: ${CI_JOB_NAME}
278     paths: [.komodo]
279   artifacts:
280     paths: [log.txt]
281     expire_in: 1 week
282   dependencies:
283     - build:linux
284 ########################################################################################################################
285 ####END####                               Run Verus CLI on Ubuntu Bionic (18.04)                             ####END####
286 ########################################################################################################################
287 ########################################################################################################################
288 ####START####                             Run Verus CLI on MacOS Sierra (10.12.6)                          ####START####
289 ########################################################################################################################
290 .macos:sierra:
291   stage: test
292   tags: ["Sierra"]
293   script:
294     - tar -xzvf $VERUS_CLI_MACOS
295     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
296     - python qa/verus-cli-tests/verus-cli-tester.py
297   artifacts:
298     paths: [log.txt]
299     expire_in: 1 week
300   dependencies:
301     - build:mac
302 ########################################################################################################################
303 ####END####                               Run Verus CLI on MacOS Sierra (10.12.6)                            ####END####
304 ########################################################################################################################
305 ########################################################################################################################
306 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
307 ########################################################################################################################
308 .macos:high-sierra:
309   stage: test
310   tags: ["High Sierra"]
311   script:
312     - tar -xzvf ${VERUS_CLI_MACOS}
313     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
314     - python qa/verus-cli-tests/verus-cli-tester.py
315   artifacts:
316     paths: [log.txt]
317     expire_in: 1 week
318   dependencies:
319     - build:mac
320 ########################################################################################################################
321 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
322 ########################################################################################################################
323 ########################################################################################################################
324 ####START####                              Run Verus CLI on Windows 10                                     ####START####
325 ########################################################################################################################
326 .windows:10:
327   stage: test
328   tags: ["Windows 10"]
329   script:
330     - PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS% -DestinationPath %CI_PROJECT_DIR%
331     - set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli
332     - qa\verus-cli-tests\verus-cli-tester.py
333   artifacts:
334     paths: [log.txt]
335     expire_in: 1 week
336   dependencies:
337     - build:windows
338 ########################################################################################################################
339 ####END####                                Run Verus CLI on Windows 10                                       ####END####
340 ########################################################################################################################
341 ########################################################################################################################
342 ####END####                                           Test Stage                                             ####END####
343 ########################################################################################################################
344 ########################################################################################################################
345 ####START####                                         Deploy                                               ####START####
346 ########################################################################################################################
347 deploy:
348   stage: deploy
349   image: google/cloud-sdk:alpine
350   variables:
351     DOCKER_DRIVER: overlay2
352   dependencies:
353     - build:linux
354     - build:windows
355     - build:mac
356     - build:linux:arm64
357   script:
358     - mkdir Windows && mkdir Linux && mkdir MacOS
359     - cp ${VERUS_CLI_WINDOWS} Windows
360     - cp ${VERUS_CLI_LINUX_AMD64} Linux
361     - cp ${VERUS_CLI_ARM64_LINUX} Linux
362     - cp ${VERUS_CLI_MACOS} MacOS
363     - echo "$AUTH_KEY" > AUTH_KEY.json &&
364       gcloud auth activate-service-account
365       --key-file AUTH_KEY.json
366     - gsutil cp -r Windows MacOS Linux  $STAGING/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}
367   artifacts:
368     paths:
369       - ${VERUS_CLI_LINUX_AMD64}
370       - ${VERUS_CLI_LINUX_AMD64}.sha256
371       - ${VERUS_CLI_WINDOWS}
372       - ${VERUS_CLI_WINDOWS}.sha256
373       - ${VERUS_CLI_MACOS}
374       - ${VERUS_CLI_MACOS}.sha256
375       - ${VERUS_CLI_ARM64_LINUX}
376       - ${VERUS_CLI_ARM64_LINUX}.sha256
377     expire_in: 1 week
378 ########################################################################################################################
379 ####END####                                           Deploy                                                 ####END####
380 ########################################################################################################################
This page took 0.04731 seconds and 4 git commands to generate.