stages: - build - test - deploy ######################################################################################################################## ####START#### PROJECT LEVEL VARIABLES ####START#### ######################################################################################################################## variables: VERSION: 0.6.0-10-PBaaS-Cross-chain-Technology-Preview VERUS_CLI_LINUX: Verus-CLI-Linux-v${VERSION}.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/VerusCoin/commit/${CI_COMMIT_SHA}\n ${CI_COMMIT_MESSAGE}" STRIP_BINARIES: "true" ##############################################################################################################000########## ####END#### PROJECT LEVEL VARIABLES ####END#### ######################################################################################################################## ######################################################################################################################## ######################################################################################################################## ####START#### Build Stage: compile and package komodo binaries for Verus CLI ####START##### ######################################################################################################################## ######################################################################################################################## ####START#### LINUX ####START#### ######################################################################################################################## build:linux: image: asherd/verus-builders:verus-centos variables: DOCKER_DRIVER: overlay2 STATIC_LIBCURL: 1 stage: build cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends/built script: - scl enable devtoolset-7 sh - source /opt/rh/devtoolset-7/enable - 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 verus-cli - mv verus-cli/fetch-params.sh verus-cli/fetch-params - chmod +x verus-cli/verus - chmod +x verus-cli/verusd - chmod +x verus-cli/fetch-params - tar -czvf ${VERUS_CLI_LINUX} verus-cli - sha256sum ${VERUS_CLI_LINUX} > ${VERUS_CLI_LINUX}.sha256 - git status after_script: - curl -F file=@"${VERUS_CLI_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_LINUX} - ${VERUS_CLI_LINUX}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### LINUX ####END#### ######################################################################################################################## ####START#### WINDOWS ####START#### ######################################################################################################################## build:windows: image: asherd/verus-builders:verus-windows variables: DOCKER_DRIVER: overlay2 stage: build cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends/built 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 zcutil/wget64.exe 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: stage: build tags: ["Mojave"] cache: key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}" paths: - depends/built script: - zcutil/build-mac.sh -j$(sysctl -n hw.physicalcpu) - ./makeReleaseMac.sh - 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 libcurl4-gnutls-dev python - rm -rf /root/.komodo || true - mv .komodo /root/ || true script: - tar -xzvf ${VERUS_CLI_LINUX} - 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 libcurl4-gnutls-dev python - rm -rf /root/.komodo || true - mv .komodo /root/ || true script: - tar -xzvf ${VERUS_CLI_LINUX} - 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 script: - mkdir Windows && mkdir Linux && mkdir MacOS && cp ${VERUS_CLI_WINDOWS} Windows && cp ${VERUS_CLI_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} - curl -X POST -F token="$CI_JOB_TOKEN" -F ref="$DOWNSTREAM_AGAMA_BRANCH" -F variables\[UPSTREAM_TRIGGER\]="${CI_PROJECT_NAME}" -F variables\[UPSTREAM_CLI_BRANCH\]="${CI_COMMIT_REF_NAME}" -F variables\[VERUS_CLI_LINUX\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/Linux/${VERUS_CLI_LINUX}" -F variables\[VERUS_CLI_WINDOWS\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/Windows/${VERUS_CLI_WINDOWS}" -F variables\[VERUS_CLI_MACOS\]="${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}/MacOS/${VERUS_CLI_MACOS}" "https://gitlab.com/api/v4/projects/12539166/trigger/pipeline" artifacts: paths: - ${VERUS_CLI_LINUX} - ${VERUS_CLI_LINUX}.sha256 - ${VERUS_CLI_WINDOWS} - ${VERUS_CLI_WINDOWS}.sha256 - ${VERUS_CLI_MACOS} - ${VERUS_CLI_MACOS}.sha256 expire_in: 1 week ######################################################################################################################## ####END#### Deploy ####END#### ########################################################################################################################