]> Git Repo - VerusCoin.git/blob - .gitlab-ci.yml
91cb75dee3d286f1884810082eb83a2566db384d
[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.5-dev-13
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: "false"
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-8 sh
42     - source /opt/rh/devtoolset-8/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     - mkdir verus-cli
161     - cp src/verus \
162         src/verusd \
163         doc/man/verus-cli/mac/README.txt \
164         zcutil/fetch-params.sh \
165         verus-cli
166     - mv verus-cli/fetch-params.sh verus-cli/fetch-params
167     - chmod +x verus-cli/fetch-params
168     - chmod +x verus-cli/verus
169     - chmod +x verus-cli/verusd
170     - tar -czvf ${VERUS_CLI_MACOS} verus-cli
171     - shasum -a 256 ${VERUS_CLI_MACOS} > ${VERUS_CLI_MACOS}.sha256
172     - curl -F file=@"${VERUS_CLI_MACOS}"
173       -F channels="${CLI_POST_CHANNEL}"
174       -F initial_comment="${POST_MESSAGE}"
175       -H "${SLACK_BOT_AUTH}"
176       "https://slack.com/api/files.upload"
177   artifacts:
178     paths:
179       - ${VERUS_CLI_MACOS}
180       - ${VERUS_CLI_MACOS}.sha256
181     expire_in: 1 week
182 ########################################################################################################################
183 ####END####                                              MACOS                                               ####END####
184 ########################################################################################################################
185 ########################################################################################################################
186 ####END####                                           Build Stage                                            ####END####
187 ########################################################################################################################
188 ########################################################################################################################
189 ########################################################################################################################
190 ########################################################################################################################
191 ####START####     Test stage: Test functionality of komodo binaries. Produce code quality and SAST reports. ####START####
192 ########################################################################################################################
193 ########################################################################################################################
194 ########################################################################################################################
195 ####START####                                        Code Quality                                          ####START####
196 ########################################################################################################################
197 .code_quality:
198   image: docker:stable
199   variables:
200     DOCKER_DRIVER: overlay2
201   allow_failure: true
202   services:
203     - docker:stable-dind
204   script:
205     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
206     - docker run
207       --env SOURCE_CODE="$PWD"
208       --volume "$PWD":/code
209       --volume /var/run/docker.sock:/var/run/docker.sock
210       "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
211   artifacts:
212     paths: [gl-code-quality-report.json]
213 ########################################################################################################################
214 ####END####                                          Code Quality                                            ####END####
215 ########################################################################################################################
216 ########################################################################################################################
217 ####START####                              Static Application Security Tests                               ####START####
218 ########################################################################################################################
219 .sast:
220   image: docker:stable
221   variables:
222     DOCKER_DRIVER: overlay2
223   allow_failure: true
224   services:
225     - docker:stable-dind
226   script:
227     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
228     - docker run
229       --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
230       --volume "$PWD:/code"
231       --volume /var/run/docker.sock:/var/run/docker.sock
232       "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
233   artifacts:
234     paths: [gl-sast-report.json]
235 ########################################################################################################################
236 ####END####                                Static Application Security Tests                                 ####END####
237 ########################################################################################################################
238 ########################################################################################################################
239 ####START####                            Run Verus CLI on Ubuntu Xenial (16.04)                            ####START####
240 ########################################################################################################################
241 .ubuntu:xenial:
242   image: ubuntu:xenial
243   variables:
244     DOCKER_DRIVER: overlay2
245   stage: test
246   before_script:
247     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
248     - rm -rf /root/.komodo || true
249     - mv .komodo /root/ || true
250   script:
251     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
252     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
253     - python qa/verus-cli-tests/verus-cli-tester.py
254   after_script:
255     - mv /root/.komodo ./ || true
256   cache:
257     key: ${CI_JOB_NAME}
258     paths: [.komodo]
259   artifacts:
260     paths: [log.txt]
261     expire_in: 1 week
262   dependencies:
263     - build:linux
264 ########################################################################################################################
265 ####END####                               Run Verus CLI on Ubuntu Xenial (16.04)                             ####END####
266 ########################################################################################################################
267 ########################################################################################################################
268 ####START####                             Run Verus CLI on Ubuntu Bionic (18.04)                           ####START####
269 ########################################################################################################################
270 .ubuntu:bionic:
271   image: ubuntu:bionic
272   variables:
273     DOCKER_DRIVER: overlay2
274   stage: test
275   before_script:
276     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
277     - rm -rf /root/.komodo || true
278     - mv .komodo /root/ || true
279   script:
280     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
281     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
282     - python qa/verus-cli-tests/verus-cli-tester.py
283   after_script:
284     - mv /root/.komodo ./ || true
285   cache:
286     key: ${CI_JOB_NAME}
287     paths: [.komodo]
288   artifacts:
289     paths: [log.txt]
290     expire_in: 1 week
291   dependencies:
292     - build:linux
293 ########################################################################################################################
294 ####END####                               Run Verus CLI on Ubuntu Bionic (18.04)                             ####END####
295 ########################################################################################################################
296 ########################################################################################################################
297 ####START####                             Run Verus CLI on MacOS Sierra (10.12.6)                          ####START####
298 ########################################################################################################################
299 .macos:sierra:
300   stage: test
301   tags: ["Sierra"]
302   script:
303     - tar -xzvf $VERUS_CLI_MACOS
304     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
305     - python qa/verus-cli-tests/verus-cli-tester.py
306   artifacts:
307     paths: [log.txt]
308     expire_in: 1 week
309   dependencies:
310     - build:mac
311 ########################################################################################################################
312 ####END####                               Run Verus CLI on MacOS Sierra (10.12.6)                            ####END####
313 ########################################################################################################################
314 ########################################################################################################################
315 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
316 ########################################################################################################################
317 .macos:high-sierra:
318   stage: test
319   tags: ["High Sierra"]
320   script:
321     - tar -xzvf ${VERUS_CLI_MACOS}
322     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
323     - python qa/verus-cli-tests/verus-cli-tester.py
324   artifacts:
325     paths: [log.txt]
326     expire_in: 1 week
327   dependencies:
328     - build:mac
329 ########################################################################################################################
330 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
331 ########################################################################################################################
332 ########################################################################################################################
333 ####START####                              Run Verus CLI on Windows 10                                     ####START####
334 ########################################################################################################################
335 .windows:10:
336   stage: test
337   tags: ["Windows 10"]
338   script:
339     - PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS% -DestinationPath %CI_PROJECT_DIR%
340     - set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli
341     - qa\verus-cli-tests\verus-cli-tester.py
342   artifacts:
343     paths: [log.txt]
344     expire_in: 1 week
345   dependencies:
346     - build:windows
347 ########################################################################################################################
348 ####END####                                Run Verus CLI on Windows 10                                       ####END####
349 ########################################################################################################################
350 ########################################################################################################################
351 ####END####                                           Test Stage                                             ####END####
352 ########################################################################################################################
353 ########################################################################################################################
354 ####START####                                         Deploy                                               ####START####
355 ########################################################################################################################
356 deploy:
357   stage: deploy
358   image: google/cloud-sdk:alpine
359   variables:
360     DOCKER_DRIVER: overlay2
361   dependencies:
362     - build:linux
363     - build:windows
364     - build:mac
365     - build:linux:arm64
366   script:
367     - mkdir Windows && mkdir Linux && mkdir MacOS
368     - cp ${VERUS_CLI_WINDOWS} Windows
369     - cp ${VERUS_CLI_LINUX_AMD64} Linux
370     - cp ${VERUS_CLI_ARM64_LINUX} Linux
371     - cp ${VERUS_CLI_MACOS} MacOS
372     - echo "$AUTH_KEY" > AUTH_KEY.json &&
373       gcloud auth activate-service-account
374       --key-file AUTH_KEY.json
375     - gsutil cp -r Windows MacOS Linux  $STAGING/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}
376   artifacts:
377     paths:
378       - ${VERUS_CLI_LINUX_AMD64}
379       - ${VERUS_CLI_LINUX_AMD64}.sha256
380       - ${VERUS_CLI_WINDOWS}
381       - ${VERUS_CLI_WINDOWS}.sha256
382       - ${VERUS_CLI_MACOS}
383       - ${VERUS_CLI_MACOS}.sha256
384       - ${VERUS_CLI_ARM64_LINUX}
385       - ${VERUS_CLI_ARM64_LINUX}.sha256
386     expire_in: 1 week
387 ########################################################################################################################
388 ####END####                                           Deploy                                                 ####END####
389 ########################################################################################################################
This page took 0.036411 seconds and 2 git commands to generate.