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