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