stages: - build - test - deploy ######################################################################################################################## ####START#### PROJECT LEVEL VARIABLES ####START#### ######################################################################################################################## variables: VERSION: 0.7.3 VERUS_CLI_ARM64_LINUX: Verus-CLI-Linux-v${VERSION}-arm64.tar.gz VERUS_CLI_LINUX_X86_64: Verus-CLI-Linux-v${VERSION}-x86_64.tar.gz VERUS_CLI_WINDOWS: Verus-CLI-Windows-v${VERSION}.zip VERUS_CLI_MACOS: Verus-CLI-MacOS-v${VERSION}.tar.gz DOWNSTREAM_AGAMA_BRANCH: ${CI_COMMIT_REF_NAME} POST_MESSAGE: "Source: ${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}\n Pipeline Trigger: ${CI_PIPELINE_SOURCE}\n Commit: https://github.com/VerusCoin/${CI_PROJECT_NAME}/commit/${CI_COMMIT_SHA}\n ${CI_COMMIT_MESSAGE}" STRIP_BINARIES: "false" ######################################################################################################################## ####END#### PROJECT LEVEL VARIABLES ####END#### ######################################################################################################################## ######################################################################################################################## ######################################################################################################################## ####START#### Build Stage: compile and package binaries for Verus CLI ####START##### ######################################################################################################################## ######################################################################################################################## ####START#### LINUX ####START#### ######################################################################################################################## build:linux: image: asherd/verus-builders:verus-xenial variables: DOCKER_DRIVER: overlay2 CONFIGURE_FLAGS: --with-gcc-arch=x86-64 stage: build cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends script: - zcutil/build.sh -j$(nproc) - if [ "${STRIP_BINARIES}" = "true" ]; then strip --strip-unneeded src/verus && strip --strip-unneeded src/verusd; fi - mkdir verus-cli - cp src/verus src/verusd doc/man/verus-cli/linux/README.txt zcutil/fetch-params.sh vcutil/fetch-bootstrap.sh verus-cli - mv verus-cli/fetch-params.sh verus-cli/fetch-params - mv verus-cli/fetch-bootstrap.sh verus-cli/fetch-bootstrap - chmod +x verus-cli/verus - chmod +x verus-cli/verusd - chmod +x verus-cli/fetch-params - chmod +x verus-cli/fetch-bootstrap - tar -czvf ${VERUS_CLI_LINUX_X86_64} verus-cli - sha256sum ${VERUS_CLI_LINUX_X86_64} > ${VERUS_CLI_LINUX_X86_64}.sha256 - git status after_script: - curl -F file=@"${VERUS_CLI_LINUX_X86_64}" -F channels="${CLI_POST_CHANNEL}" -F initial_comment="${POST_MESSAGE}" -H "${SLACK_BOT_AUTH}" "https://slack.com/api/files.upload" artifacts: paths: - ${VERUS_CLI_LINUX_X86_64} - ${VERUS_CLI_LINUX_X86_64}.sha256 expire_in: 1 week build:linux:arm64: image: asherd/verus-builders:cross-arm variables: DOCKER_DRIVER: overlay2 HOST: aarch64-linux-gnu STRIP: /usr/aarch64-linux-gnu/bin/strip stage: build cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends script: - zcutil/build.sh -j$(nproc) - 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 - mkdir verus-cli - cp src/verus src/verusd doc/man/verus-cli/linux/README.txt zcutil/fetch-params.sh vcutil/fetch-bootstrap.sh verus-cli - mv verus-cli/fetch-params.sh verus-cli/fetch-params - mv verus-cli/fetch-bootstrap.sh verus-cli/fetch-bootstrap - chmod +x verus-cli/verus - chmod +x verus-cli/verusd - chmod +x verus-cli/fetch-params - chmod +x verus-cli/fetch-bootstrap - tar -czvf ${VERUS_CLI_ARM64_LINUX} verus-cli - sha256sum ${VERUS_CLI_ARM64_LINUX} > ${VERUS_CLI_ARM64_LINUX}.sha256 - git status after_script: - curl -F file=@"${VERUS_CLI_ARM64_LINUX}" -F channels="${CLI_POST_CHANNEL}" -F initial_comment="${POST_MESSAGE}" -H "${SLACK_BOT_AUTH}" "https://slack.com/api/files.upload" artifacts: paths: - ${VERUS_CLI_ARM64_LINUX} - ${VERUS_CLI_ARM64_LINUX}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### LINUX ####END#### ######################################################################################################################## ####START#### WINDOWS ####START#### ######################################################################################################################## build:windows: image: asherd/verus-builders:verus-windows variables: DOCKER_DRIVER: overlay2 CONFIGURE_FLAGS: --with-gcc-arch=x86-64 stage: build cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends script: - zcutil/build-win.sh -j$(nproc) - mkdir verus-cli - cp src/verus.exe src/verusd.exe doc/man/verus-cli/windows/README.txt zcutil/fetch-params.bat vcutil/fetch-bootstrap.bat verus-cli - if [ "${STRIP_BINARIES}" = "true" ]; then strip --strip-unneeded verus-cli/verusd.exe && strip --strip-unneeded verus-cli/verus.exe; fi - zip -r ${VERUS_CLI_WINDOWS} verus-cli - sha256sum ${VERUS_CLI_WINDOWS} > ${VERUS_CLI_WINDOWS}.sha256 - curl -F file=@"${VERUS_CLI_WINDOWS}" -F channels="${CLI_POST_CHANNEL}" -F initial_comment="${POST_MESSAGE}" -H "${SLACK_BOT_AUTH}" "https://slack.com/api/files.upload" artifacts: paths: - ${VERUS_CLI_WINDOWS} - ${VERUS_CLI_WINDOWS}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### WINDOWS ####END#### ######################################################################################################################## ####START#### MACOS ####START#### ######################################################################################################################## build:mac: variables: CONFIGURE_FLAGS: --with-gcc-arch=x86-64 stage: build tags: ["Mojave"] cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends script: - zcutil/build-mac.sh -j$(sysctl -n hw.physicalcpu) - mkdir verus-cli - cp src/verus src/verusd doc/man/verus-cli/mac/README.txt zcutil/fetch-params.sh vcutil/fetch-bootstrap.sh verus-cli - mv verus-cli/fetch-params.sh verus-cli/fetch-params - mv verus-cli/fetch-bootstrap.sh verus-cli/fetch-bootstrap - chmod +x verus-cli/fetch-params - chmod +x verus-cli/fetch-bootstrap - chmod +x verus-cli/verus - chmod +x verus-cli/verusd - tar -czvf ${VERUS_CLI_MACOS} verus-cli - shasum -a 256 ${VERUS_CLI_MACOS} > ${VERUS_CLI_MACOS}.sha256 - curl -F file=@"${VERUS_CLI_MACOS}" -F channels="${CLI_POST_CHANNEL}" -F initial_comment="${POST_MESSAGE}" -H "${SLACK_BOT_AUTH}" "https://slack.com/api/files.upload" artifacts: paths: - ${VERUS_CLI_MACOS} - ${VERUS_CLI_MACOS}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### MACOS ####END#### ######################################################################################################################## ######################################################################################################################## ####END#### Build Stage ####END#### ######################################################################################################################## ######################################################################################################################## ######################################################################################################################## ######################################################################################################################## ####START#### Test stage: Test functionality of komodo binaries. Produce code quality and SAST reports. ####START#### ######################################################################################################################## ######################################################################################################################## ######################################################################################################################## ####START#### Code Quality ####START#### ######################################################################################################################## .code_quality: image: docker:stable variables: DOCKER_DRIVER: overlay2 allow_failure: true services: - docker:stable-dind script: - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - docker run --env SOURCE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code artifacts: paths: [gl-code-quality-report.json] ######################################################################################################################## ####END#### Code Quality ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Static Application Security Tests ####START#### ######################################################################################################################## .sast: image: docker:stable variables: DOCKER_DRIVER: overlay2 allow_failure: true services: - docker:stable-dind script: - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - docker run --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}" --volume "$PWD:/code" --volume /var/run/docker.sock:/var/run/docker.sock "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code artifacts: paths: [gl-sast-report.json] ######################################################################################################################## ####END#### Static Application Security Tests ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Run Verus CLI on Ubuntu Xenial (16.04) ####START#### ######################################################################################################################## .ubuntu:xenial: image: ubuntu:xenial variables: DOCKER_DRIVER: overlay2 stage: test before_script: - apt update && apt install -y wget libgomp1 python - rm -rf /root/.komodo || true - mv .komodo /root/ || true script: - tar -xzvf ${VERUS_CLI_LINUX_X86_64} - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli - python qa/verus-cli-tests/verus-cli-tester.py after_script: - mv /root/.komodo ./ || true cache: key: ${CI_JOB_NAME} paths: [.komodo] artifacts: paths: [log.txt] expire_in: 1 week dependencies: - build:linux ######################################################################################################################## ####END#### Run Verus CLI on Ubuntu Xenial (16.04) ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Run Verus CLI on Ubuntu Bionic (18.04) ####START#### ######################################################################################################################## .ubuntu:bionic: image: ubuntu:bionic variables: DOCKER_DRIVER: overlay2 stage: test before_script: - apt update && apt install -y wget libgomp1 python - rm -rf /root/.komodo || true - mv .komodo /root/ || true script: - tar -xzvf ${VERUS_CLI_LINUX_X86_64} - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli - python qa/verus-cli-tests/verus-cli-tester.py after_script: - mv /root/.komodo ./ || true cache: key: ${CI_JOB_NAME} paths: [.komodo] artifacts: paths: [log.txt] expire_in: 1 week dependencies: - build:linux ######################################################################################################################## ####END#### Run Verus CLI on Ubuntu Bionic (18.04) ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Run Verus CLI on MacOS Sierra (10.12.6) ####START#### ######################################################################################################################## .macos:sierra: stage: test tags: ["Sierra"] script: - tar -xzvf $VERUS_CLI_MACOS - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli - python qa/verus-cli-tests/verus-cli-tester.py artifacts: paths: [log.txt] expire_in: 1 week dependencies: - build:mac ######################################################################################################################## ####END#### Run Verus CLI on MacOS Sierra (10.12.6) ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Run Verus CLI on MacOS High Sierra (10.12.6) ####START#### ######################################################################################################################## .macos:high-sierra: stage: test tags: ["High Sierra"] script: - tar -xzvf ${VERUS_CLI_MACOS} - export PATH=$PATH:$CI_PROJECT_DIR/verus-cli - python qa/verus-cli-tests/verus-cli-tester.py artifacts: paths: [log.txt] expire_in: 1 week dependencies: - build:mac ######################################################################################################################## ####START#### Run Verus CLI on MacOS High Sierra (10.12.6) ####START#### ######################################################################################################################## ######################################################################################################################## ####START#### Run Verus CLI on Windows 10 ####START#### ######################################################################################################################## .windows:10: stage: test tags: ["Windows 10"] script: - PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS% -DestinationPath %CI_PROJECT_DIR% - set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli - qa\verus-cli-tests\verus-cli-tester.py artifacts: paths: [log.txt] expire_in: 1 week dependencies: - build:windows ######################################################################################################################## ####END#### Run Verus CLI on Windows 10 ####END#### ######################################################################################################################## ######################################################################################################################## ####END#### Test Stage ####END#### ######################################################################################################################## ######################################################################################################################## ####START#### Deploy ####START#### ######################################################################################################################## deploy: stage: deploy image: google/cloud-sdk:alpine variables: DOCKER_DRIVER: overlay2 dependencies: - build:linux - build:windows - build:mac - build:linux:arm64 script: - mkdir Windows && mkdir Linux && mkdir MacOS - cp ${VERUS_CLI_WINDOWS} Windows - cp ${VERUS_CLI_LINUX_X86_64} Linux - cp ${VERUS_CLI_ARM64_LINUX} Linux - cp ${VERUS_CLI_MACOS} MacOS - echo "$AUTH_KEY" > AUTH_KEY.json && gcloud auth activate-service-account --key-file AUTH_KEY.json - gsutil cp -r Windows MacOS Linux $STAGING/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME} artifacts: paths: - ${VERUS_CLI_LINUX_X86_64} - ${VERUS_CLI_LINUX_X86_64}.sha256 - ${VERUS_CLI_WINDOWS} - ${VERUS_CLI_WINDOWS}.sha256 - ${VERUS_CLI_MACOS} - ${VERUS_CLI_MACOS}.sha256 - ${VERUS_CLI_ARM64_LINUX} - ${VERUS_CLI_ARM64_LINUX}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### Deploy ####END#### ########################################################################################################################