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