]> 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.2-2
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       zcutil/wget64.exe
131       verus-cli
132     - if [ "${STRIP_BINARIES}" = "true" ]; then strip --strip-unneeded verus-cli/verusd.exe && strip --strip-unneeded verus-cli/verus.exe; fi
133     - zip -r ${VERUS_CLI_WINDOWS} verus-cli
134     - sha256sum ${VERUS_CLI_WINDOWS} > ${VERUS_CLI_WINDOWS}.sha256
135     - curl -F file=@"${VERUS_CLI_WINDOWS}"
136       -F channels="${CLI_POST_CHANNEL}"
137       -F initial_comment="${POST_MESSAGE}"
138       -H "${SLACK_BOT_AUTH}"
139       "https://slack.com/api/files.upload"
140   artifacts:
141     paths:
142       - ${VERUS_CLI_WINDOWS}
143       - ${VERUS_CLI_WINDOWS}.sha256
144     expire_in: 1 week
145 ########################################################################################################################
146 ####END####                                             WINDOWS                                              ####END####
147 ########################################################################################################################
148 ####START####                                            MACOS                                             ####START####
149 ########################################################################################################################
150 build:mac:
151   variables:
152     CONFIGURE_FLAGS: --with-gcc-arch=x86-64
153   stage: build
154   tags: ["Mojave"]
155   cache:
156     key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
157     paths:
158       - depends
159   script:
160     - zcutil/build-mac.sh -j$(sysctl -n hw.physicalcpu)
161     - ./makeReleaseMac.sh
162     - tar -czvf ${VERUS_CLI_MACOS} verus-cli
163     - shasum -a 256 ${VERUS_CLI_MACOS} > ${VERUS_CLI_MACOS}.sha256
164     - curl -F file=@"${VERUS_CLI_MACOS}"
165       -F channels="${CLI_POST_CHANNEL}"
166       -F initial_comment="${POST_MESSAGE}"
167       -H "${SLACK_BOT_AUTH}"
168       "https://slack.com/api/files.upload"
169   artifacts:
170     paths:
171       - ${VERUS_CLI_MACOS}
172       - ${VERUS_CLI_MACOS}.sha256
173     expire_in: 1 week
174 ########################################################################################################################
175 ####END####                                              MACOS                                               ####END####
176 ########################################################################################################################
177 ########################################################################################################################
178 ####END####                                           Build Stage                                            ####END####
179 ########################################################################################################################
180 ########################################################################################################################
181 ########################################################################################################################
182 ########################################################################################################################
183 ####START####     Test stage: Test functionality of komodo binaries. Produce code quality and SAST reports. ####START####
184 ########################################################################################################################
185 ########################################################################################################################
186 ########################################################################################################################
187 ####START####                                        Code Quality                                          ####START####
188 ########################################################################################################################
189 .code_quality:
190   image: docker:stable
191   variables:
192     DOCKER_DRIVER: overlay2
193   allow_failure: true
194   services:
195     - docker:stable-dind
196   script:
197     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
198     - docker run
199       --env SOURCE_CODE="$PWD"
200       --volume "$PWD":/code
201       --volume /var/run/docker.sock:/var/run/docker.sock
202       "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
203   artifacts:
204     paths: [gl-code-quality-report.json]
205 ########################################################################################################################
206 ####END####                                          Code Quality                                            ####END####
207 ########################################################################################################################
208 ########################################################################################################################
209 ####START####                              Static Application Security Tests                               ####START####
210 ########################################################################################################################
211 .sast:
212   image: docker:stable
213   variables:
214     DOCKER_DRIVER: overlay2
215   allow_failure: true
216   services:
217     - docker:stable-dind
218   script:
219     - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
220     - docker run
221       --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
222       --volume "$PWD:/code"
223       --volume /var/run/docker.sock:/var/run/docker.sock
224       "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
225   artifacts:
226     paths: [gl-sast-report.json]
227 ########################################################################################################################
228 ####END####                                Static Application Security Tests                                 ####END####
229 ########################################################################################################################
230 ########################################################################################################################
231 ####START####                            Run Verus CLI on Ubuntu Xenial (16.04)                            ####START####
232 ########################################################################################################################
233 .ubuntu:xenial:
234   image: ubuntu:xenial
235   variables:
236     DOCKER_DRIVER: overlay2
237   stage: test
238   before_script:
239     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
240     - rm -rf /root/.komodo || true
241     - mv .komodo /root/ || true
242   script:
243     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
244     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
245     - python qa/verus-cli-tests/verus-cli-tester.py
246   after_script:
247     - mv /root/.komodo ./ || true
248   cache:
249     key: ${CI_JOB_NAME}
250     paths: [.komodo]
251   artifacts:
252     paths: [log.txt]
253     expire_in: 1 week
254   dependencies:
255     - build:linux
256 ########################################################################################################################
257 ####END####                               Run Verus CLI on Ubuntu Xenial (16.04)                             ####END####
258 ########################################################################################################################
259 ########################################################################################################################
260 ####START####                             Run Verus CLI on Ubuntu Bionic (18.04)                           ####START####
261 ########################################################################################################################
262 .ubuntu:bionic:
263   image: ubuntu:bionic
264   variables:
265     DOCKER_DRIVER: overlay2
266   stage: test
267   before_script:
268     - apt update && apt install -y wget libgomp1 libcurl4-gnutls-dev python
269     - rm -rf /root/.komodo || true
270     - mv .komodo /root/ || true
271   script:
272     - tar -xzvf ${VERUS_CLI_LINUX_AMD64}
273     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
274     - python qa/verus-cli-tests/verus-cli-tester.py
275   after_script:
276     - mv /root/.komodo ./ || true
277   cache:
278     key: ${CI_JOB_NAME}
279     paths: [.komodo]
280   artifacts:
281     paths: [log.txt]
282     expire_in: 1 week
283   dependencies:
284     - build:linux
285 ########################################################################################################################
286 ####END####                               Run Verus CLI on Ubuntu Bionic (18.04)                             ####END####
287 ########################################################################################################################
288 ########################################################################################################################
289 ####START####                             Run Verus CLI on MacOS Sierra (10.12.6)                          ####START####
290 ########################################################################################################################
291 .macos:sierra:
292   stage: test
293   tags: ["Sierra"]
294   script:
295     - tar -xzvf $VERUS_CLI_MACOS
296     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
297     - python qa/verus-cli-tests/verus-cli-tester.py
298   artifacts:
299     paths: [log.txt]
300     expire_in: 1 week
301   dependencies:
302     - build:mac
303 ########################################################################################################################
304 ####END####                               Run Verus CLI on MacOS Sierra (10.12.6)                            ####END####
305 ########################################################################################################################
306 ########################################################################################################################
307 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
308 ########################################################################################################################
309 .macos:high-sierra:
310   stage: test
311   tags: ["High Sierra"]
312   script:
313     - tar -xzvf ${VERUS_CLI_MACOS}
314     - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
315     - python qa/verus-cli-tests/verus-cli-tester.py
316   artifacts:
317     paths: [log.txt]
318     expire_in: 1 week
319   dependencies:
320     - build:mac
321 ########################################################################################################################
322 ####START####                          Run Verus CLI on MacOS High Sierra (10.12.6)                        ####START####
323 ########################################################################################################################
324 ########################################################################################################################
325 ####START####                              Run Verus CLI on Windows 10                                     ####START####
326 ########################################################################################################################
327 .windows:10:
328   stage: test
329   tags: ["Windows 10"]
330   script:
331     - PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS% -DestinationPath %CI_PROJECT_DIR%
332     - set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli
333     - qa\verus-cli-tests\verus-cli-tester.py
334   artifacts:
335     paths: [log.txt]
336     expire_in: 1 week
337   dependencies:
338     - build:windows
339 ########################################################################################################################
340 ####END####                                Run Verus CLI on Windows 10                                       ####END####
341 ########################################################################################################################
342 ########################################################################################################################
343 ####END####                                           Test Stage                                             ####END####
344 ########################################################################################################################
345 ########################################################################################################################
346 ####START####                                         Deploy                                               ####START####
347 ########################################################################################################################
348 deploy:
349   stage: deploy
350   image: google/cloud-sdk:alpine
351   variables:
352     DOCKER_DRIVER: overlay2
353   dependencies:
354     - build:linux
355     - build:windows
356     - build:mac
357     - build:linux:arm64
358   script:
359     - mkdir Windows && mkdir Linux && mkdir MacOS
360     - cp ${VERUS_CLI_WINDOWS} Windows
361     - cp ${VERUS_CLI_LINUX_AMD64} Linux
362     - cp ${VERUS_CLI_ARM64_LINUX} Linux
363     - cp ${VERUS_CLI_MACOS} MacOS
364     - echo "$AUTH_KEY" > AUTH_KEY.json &&
365       gcloud auth activate-service-account
366       --key-file AUTH_KEY.json
367     - gsutil cp -r Windows MacOS Linux  $STAGING/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}
368     - curl -X POST
369       -F token="$CI_JOB_TOKEN"
370       -F ref="$DOWNSTREAM_AGAMA_BRANCH"
371       -F variables\[UPSTREAM_TRIGGER\]="${CI_PROJECT_NAME}"
372       -F variables\[VERUS_VERSION\]="${VERSION}"
373       -F variables\[UPSTREAM_CLI_BRANCH\]="${CI_COMMIT_REF_NAME}"
374       -F variables\[VERUS_CLI_LINUX_AMD64\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/Linux/${VERUS_CLI_LINUX_AMD64}"
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     - curl -X POST
379       -F token="$CI_JOB_TOKEN"
380       -F ref="${CI_COMMIT_REF_NAME}"
381       -F variables\[UPSTREAM_TRIGGER\]="${CI_PROJECT_NAME} ; ${CI_COMMIT_SHA}"
382       -F variables\[VERUS_VERSION\]="${VERSION}"
383       -F variables\[UPSTREAM_CLI_BRANCH\]="${CI_COMMIT_REF_NAME}"
384       -F variables\[VERUS_CLI_LINUX_AMD64\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/Linux/${VERUS_CLI_LINUX_AMD64}"
385       -F variables\[VERUS_CLI_WINDOWS\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/Windows/${VERUS_CLI_WINDOWS}"
386       -F variables\[VERUS_CLI_MACOS\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/MacOS/${VERUS_CLI_MACOS}"
387       "https://gitlab.com/api/v4/projects/16158513/trigger/pipeline"
388   artifacts:
389     paths:
390       - ${VERUS_CLI_LINUX_AMD64}
391       - ${VERUS_CLI_LINUX_AMD64}.sha256
392       - ${VERUS_CLI_WINDOWS}
393       - ${VERUS_CLI_WINDOWS}.sha256
394       - ${VERUS_CLI_MACOS}
395       - ${VERUS_CLI_MACOS}.sha256
396       - ${VERUS_CLI_ARM64_LINUX}
397       - ${VERUS_CLI_ARM64_LINUX}.sha256
398     expire_in: 1 week
399 ########################################################################################################################
400 ####END####                                           Deploy                                                 ####END####
401 ########################################################################################################################
This page took 0.058502 seconds and 4 git commands to generate.