From e7f4832f79f82e1b432ec2363eb5161c12992a9c Mon Sep 17 00:00:00 2001 From: Asher Dawes Date: Fri, 6 Jul 2018 15:16:22 -0700 Subject: [PATCH] Asher dev (#88) Introducing verus-cli tests, adding staging destination. --- .gitlab-ci.yml | 200 +++++++++++++----- README.md | 1 - kmd/linux/verus-cli/README.txt | 2 +- .../{fetch-params.sh => fetch-params} | 0 kmd/linux/verus-cli/verus | 2 +- kmd/linux/verus-cli/verusd | 2 +- .../{fetch-params.sh => fetch-params} | 0 makeDistrib.sh | 35 --- makeReleaseLinux.sh | 7 +- makeReleaseMac.sh | 4 + qa/verus-cli-tests/verus-cli-tester.py | 39 ++++ 11 files changed, 198 insertions(+), 94 deletions(-) rename kmd/linux/verus-cli/{fetch-params.sh => fetch-params} (100%) mode change 100755 => 100644 rename kmd/mac/verus-cli/{fetch-params.sh => fetch-params} (100%) mode change 100755 => 100644 delete mode 100755 makeDistrib.sh create mode 100644 qa/verus-cli-tests/verus-cli-tester.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86be2c3f1..67ad7d43c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,14 +4,15 @@ stages: - deploy variables: - VERSION: "0.3.9" - AGAMA_ARTIFACTS_LINUX: "linux64.tar.gz" - AGAMA_ARTIFACTS_MACOS: "osx.tar.gz" - AGAMA_ARTIFACTS_WINDOWS: "win64.zip" - VERUS_CLI_DEBIAN: "verus-cli-v${VERSION}-beta-amd64.deb" - VERUS_CLI_LINUX_PORTABLE: "verus-cli-linux-v$VERSION-beta.tar.gz" - VERUS_CLI_WINDOWS_PORTABLE: "verus-cli-windows-v$VERSION-beta.zip" - VERUS_CLI_MACOS_PORTABLE: "verus-cli-mac-v$VERSION-beta.tar.gz" + VERSION: 0.3.9 + AGAMA_ARTIFACTS_LINUX: linux64.tar.gz + AGAMA_ARTIFACTS_MACOS: osx.tar.gz + AGAMA_ARTIFACTS_WINDOWS: win64.zip + VERUS_CLI_DEBIAN: verus-cli-v${VERSION}-beta-amd64.deb + VERUS_CLI_LINUX_PORTABLE: verus-cli-linux-v$VERSION-beta.tar.gz + VERUS_CLI_WINDOWS_PORTABLE: verus-cli-windows-v$VERSION-beta.zip + VERUS_CLI_MACOS_PORTABLE: verus-cli-mac-v$VERSION-beta.tar.gz + build:linux: image: asherd/veruscoin-cross-compiler:linux @@ -23,23 +24,26 @@ build:linux: paths: - depends/built - .ccache - before_script: - - mkdir .ccache || echo ccache exists - - ln -s $PWD/.ccache /root/.ccache + before_script: # Setup Cache + - rm -rf /root/.ccache || true + - mv .ccache /root/ || true script: - - "./zcutil/build.sh" - ##- "./zcutil/build-debian-package.sh" - - "./makeReleaseLinux.sh" - - "cd kmd/linux" - - "tar -czvf $VERUS_CLI_LINUX_PORTABLE verus-cli" - - "mv $VERUS_CLI_LINUX_PORTABLE ../.." - - "mv verus-cli linux64" - - "tar -czvf $AGAMA_ARTIFACTS_LINUX linux64" - - "mv $AGAMA_ARTIFACTS_LINUX ../.." + - zcutil/build.sh -j4 + - ./makeReleaseLinux.sh + - dos2unix kmd/linux/verus-cli/README.txt + - tar -C kmd/linux/ -czvf $VERUS_CLI_LINUX_PORTABLE verus-cli ./ + - mv kmd/linux/verus-cli kmd/linux/linux64 + - tar -C kmd/linux/ -czvf $AGAMA_ARTIFACTS_LINUX linux64 ./ + after_script: + - mv /root/.ccache ./ || true + cache: + key: ${CI_JOB_NAME} + paths: + - depends/built + - .ccache artifacts: paths: - $VERUS_CLI_LINUX_PORTABLE - ## - $VERUS_CLI_DEBIAN - $AGAMA_ARTIFACTS_LINUX expire_in: 1 week @@ -59,19 +63,17 @@ build:windows: - mkdir .ccache || echo ccache exists - ln -s $PWD/.ccache /root/.ccache - mkdir .zcash-params || echo zcash-params exists - - ln -s $PWD/.zcash-params /root/.zcash-params - mkdir .cargo || echo .cargo exists - ln -s $PWD/.cargo /root/.cargo script: - ## add dos2unix - - "./zcutil/build-win.sh" - - "./makeReleaseWindows.sh" - - "cd kmd/windows/" - - "zip -r $VERUS_CLI_WINDOWS_PORTABLE verus-cli" - - "mv $VERUS_CLI_WINDOWS_PORTABLE ../.." - - "mv verus-cli win64" - - "zip -r $AGAMA_ARTIFACTS_WINDOWS win64" - - "mv $AGAMA_ARTIFACTS_WINDOWS ../.." + - zcutil/build-win.sh + - ./makeReleaseWindows.sh + - cd kmd/windows/ + - zip -r $VERUS_CLI_WINDOWS_PORTABLE verus-cli + - mv $VERUS_CLI_WINDOWS_PORTABLE ../.. + - mv verus-cli win64 + - zip -r $AGAMA_ARTIFACTS_WINDOWS win64 + - mv $AGAMA_ARTIFACTS_WINDOWS ../.. artifacts: paths: - $VERUS_CLI_WINDOWS_PORTABLE @@ -81,20 +83,18 @@ build:windows: build:mac: stage: build - tags: ["osx"] + tags: ["High Sierra"] cache: key: ${CI_JOB_NAME} paths: - depends/built script: - - "./zcutil/build-mac.sh | xcpretty" - - "./makeReleaseMac.sh" - - "cd kmd/mac/" - - "tar -czvf $VERUS_CLI_MACOS_PORTABLE verus-cli" - - "mv verus-cli-mac-v$VERSION-beta.tar.gz ../.." - - "mv verus-cli osx" - - "tar -czvf $AGAMA_ARTIFACTS_MACOS osx" - - "mv $AGAMA_ARTIFACTS_MACOS ../.." + - zcutil/build-mac.sh | xcpretty + - ./makeReleaseMac.sh + - dos2unix kmd/mac/verus-cli/README.txt + - tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS_PORTABLE verus-cli ./ + - mv kmd/mac/verus-cli kmd/mac/osx + - tar -C kmd/mac/ -czvf $AGAMA_ARTIFACTS_MACOS osx ./ artifacts: paths: - $VERUS_CLI_MACOS_PORTABLE @@ -138,24 +138,118 @@ sast: paths: [gl-sast-report.json] + +license_management: + image: docker:stable + variables: + DOCKER_DRIVER: overlay2 + allow_failure: true + services: + - docker:stable-dind + script: + - export LICENSE_MANAGEMENT_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - docker run + --volume "$PWD:/code" + "registry.gitlab.com/gitlab-org/security-products/license-management:$LICENSE_MANAGEMENT_VERSION" analyze /code + artifacts: + paths: [gl-license-management-report.json] + +ubuntu:xenial: + image: ubuntu:xenial + variables: + DOCKER_DRIVER: overlay2 + stage: test + before_script: + - apt update && apt install -y wget g++-multilib libcurl3 python + script: + - tar -xzvf $VERUS_CLI_LINUX_PORTABLE + - 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:linux + + +ubuntu:bionic: + image: ubuntu:bionic + variables: + DOCKER_DRIVER: overlay2 + stage: test + before_script: + - apt update && apt install -y wget g++-multilib libcurl3 python + script: + - tar -xzvf $VERUS_CLI_LINUX_PORTABLE + - 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:linux + + +osx:sierra: + stage: test + tags: ["Sierra"] + script: + - tar -xzvf $VERUS_CLI_MACOS_PORTABLE + - 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 + + +osx:high-sierra: + stage: test + tags: ["High Sierra"] + script: + - tar -xzvf $VERUS_CLI_MACOS_PORTABLE + - 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 + + +windows:10: + stage: test + tags: ["Windows 10"] + script: + - PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS_PORTABLE% -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 + + deploy: stage: deploy image: google/cloud-sdk:alpine variables: DOCKER_DRIVER: overlay2 dependencies: - - build:linux - - build:windows - - build:mac + - build:linux + - build:windows + - build:mac script: - - "mkdir $CI_COMMIT_REF_NAME" - - "cd $CI_COMMIT_REF_NAME" - - "mkdir Windows && mkdir Linux @&& mkdir MacOS" - - "cd .." - - "mv $VERUS_CLI_WINDOWS_PORTABLE $AGAMA_ARTIFACTS_WINDOWS $CI_COMMIT_REF_NAME/Windows" - - "mv $VERUS_CLI_LINUX_PORTABLE $AGAMA_ARTIFACTS_LINUX $CI_COMMIT_REF_NAME/Linux" - - "mv $AGAMA_ARTIFACTS_MACOS $VERUS_CLI_MACOS_PORTABLE $CI_COMMIT_REF_NAME/MacOS" - - 'echo "$AUTH_KEY" > AUTH_KEY.json' - - "gcloud auth activate-service-account --key-file AUTH_KEY.json" - - "gsutil rsync -r $CI_COMMIT_REF_NAME/ $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/" + - mkdir -p $CI_COMMIT_REF_NAME/Windows + - mkdir -p $CI_COMMIT_REF_NAME/Linux + - mkdir -p $CI_COMMIT_REF_NAME/MacOS + - mv $VERUS_CLI_WINDOWS_PORTABLE $AGAMA_ARTIFACTS_WINDOWS $CI_COMMIT_REF_NAME/Windows + - mv $VERUS_CLI_LINUX_PORTABLE $AGAMA_ARTIFACTS_LINUX $CI_COMMIT_REF_NAME/Linux + - mv $VERUS_CLI_MACOS_PORTABLE $AGAMA_ARTIFACTS_MACOS $CI_COMMIT_REF_NAME/MacOS + - echo "$AUTH_KEY" > AUTH_KEY.json + - gcloud auth activate-service-account --key-file AUTH_KEY.json + - gsutil rsync -r $CI_COMMIT_REF_NAME/ $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/ + diff --git a/README.md b/README.md index 848dcd445..bed92e9f2 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,6 @@ Building for Windows: ``` ./zcutil/build-win.sh ``` - VerusCoin ------ We develop on dev and some other branches and produce releases of of the master branch, using pull requests to manage what goes into master. diff --git a/kmd/linux/verus-cli/README.txt b/kmd/linux/verus-cli/README.txt index 7c5f2d047..691ba4ff0 100644 --- a/kmd/linux/verus-cli/README.txt +++ b/kmd/linux/verus-cli/README.txt @@ -5,7 +5,7 @@ komodo-cli - VerusCoin's Komodo command line utility verus - wrapper for komodo-cli that applies the command to the VRSC coin verusd - wrapper for komodod that sets the VerusCoin parameters to defaults properly -The first time on a new system you will need to run ./fetch-params.sh before using komodod or verusd. +The first time on a new system you will need to run ./fetch-params before using komodod or verusd. Run ./verusd to launch komodod, and use verus to run commands such as: ./verus stop diff --git a/kmd/linux/verus-cli/fetch-params.sh b/kmd/linux/verus-cli/fetch-params old mode 100755 new mode 100644 similarity index 100% rename from kmd/linux/verus-cli/fetch-params.sh rename to kmd/linux/verus-cli/fetch-params diff --git a/kmd/linux/verus-cli/verus b/kmd/linux/verus-cli/verus index b5c080f69..5ba1e0721 100755 --- a/kmd/linux/verus-cli/verus +++ b/kmd/linux/verus-cli/verus @@ -2,4 +2,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $DIR -komodo-cli -ac_name=VRSC "$@" +./komodo-cli -ac_name=VRSC "$@" diff --git a/kmd/linux/verus-cli/verusd b/kmd/linux/verus-cli/verusd index b83039541..6ce5df644 100755 --- a/kmd/linux/verus-cli/verusd +++ b/kmd/linux/verus-cli/verusd @@ -1,4 +1,4 @@ #!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $DIR -komodod -ac_name=VRSC -ac_algo=verushash -ac_cc=1 -ac_supply=0 -ac_eras=3 -ac_reward=0,38400000000,2400000000 -ac_halving=1,43200,1051920 -ac_decay=100000000,0,0 -ac_end=10080,226080,0 -addnode=185.25.48.236 -addnode=185.64.105.111 -ac_timelockgte=19200000000 -ac_timeunlockfrom=129600 -ac_timeunlockto=1180800 -ac_veruspos=50 -gen -genproclimit=0 "$@" +./komodod -ac_name=VRSC -ac_algo=verushash -ac_cc=1 -ac_supply=0 -ac_eras=3 -ac_reward=0,38400000000,2400000000 -ac_halving=1,43200,1051920 -ac_decay=100000000,0,0 -ac_end=10080,226080,0 -addnode=185.25.48.236 -addnode=185.64.105.111 -ac_timelockgte=19200000000 -ac_timeunlockfrom=129600 -ac_timeunlockto=1180800 -ac_veruspos=50 -gen -genproclimit=0 "$@" diff --git a/kmd/mac/verus-cli/fetch-params.sh b/kmd/mac/verus-cli/fetch-params old mode 100755 new mode 100644 similarity index 100% rename from kmd/mac/verus-cli/fetch-params.sh rename to kmd/mac/verus-cli/fetch-params diff --git a/makeDistrib.sh b/makeDistrib.sh deleted file mode 100755 index ad72fbb16..000000000 --- a/makeDistrib.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -TMP_DIR=~/tmp/komodo - -# make a tmp directory -mkdir -p $TMP_DIR -echo "making $TMP_DIR" - -binaries=("komodo-cli" "komodod") - -for binary in "${binaries[@]}"; -do - echo "copying $binary to $TMP_DIR" - - cp src/$binary $TMP_DIR - - # find the dylibs to copy for komodod - DYLIBS=`otool -L $TMP_DIR/$binary | grep "/usr/local" | awk -F' ' '{ print $1 }'` - echo "copying $DYLIBS to $TMP_DIR" - - # copy the dylibs to the tmpdir - for dylib in $DYLIBS; do cp -rf $dylib $TMP_DIR/; done - - # modify komodod to point to dylibs - echo "modifying $binary to use local libraries" - for dylib in $DYLIBS; do install_name_tool -change $dylib @executable_path/`basename $dylib` $TMP_DIR/$binary; done; -done - - - - - - - - diff --git a/makeReleaseLinux.sh b/makeReleaseLinux.sh index c76fa67dc..9e48f16eb 100755 --- a/makeReleaseLinux.sh +++ b/makeReleaseLinux.sh @@ -1,5 +1,8 @@ #!/bin/sh cp src/komodod src/komodo-cli kmd/linux/verus-cli -chmod +x kmd/linux/verus-cli/komodo* -chmod +x kmd/linux/verus-cli/veru* +chmod +x kmd/linux/verus-cli/komodo +chmod +x kmd/linux/verus-cli/komodod +chmod +x kmd/linux/verus-cli/verus +chmod +x kmd/linux/verus-cli/verusd +chmod +x kmd/linux/verus-cli/fetch-params diff --git a/makeReleaseMac.sh b/makeReleaseMac.sh index 02a2bac90..29cf91dd4 100755 --- a/makeReleaseMac.sh +++ b/makeReleaseMac.sh @@ -65,4 +65,8 @@ do chmod +x $KMD_DIR/$binary done +chmod +x kmd/mac/verus-cli/fetch-params +chmod +x kmd/linux/verus-cli/verus +chmod +x kmd/linux/verus-cli/verusd + diff --git a/qa/verus-cli-tests/verus-cli-tester.py b/qa/verus-cli-tests/verus-cli-tester.py new file mode 100644 index 000000000..147686110 --- /dev/null +++ b/qa/verus-cli-tests/verus-cli-tester.py @@ -0,0 +1,39 @@ +from subprocess import Popen, check_output, call +from time import sleep +from os import environ, path + +daemon_wrapper = "verusd" +cli_wrapper = "verus" +daemon_runtime_seconds = 600 +cli_commands = ["getblockchaininfo", "getmininginfo", "getwalletinfo", "stop"] + + +def start_daemon(daemon_wrapper): + try: + Popen(daemon_wrapper, shell=True, close_fds=True) + except: + exit(1) + + +def fetch_zcash_params(): + try: + call("fetch-params", shell=True) + except: + exit(1) + + +def run_cli_commands(cli_wrapper, commands): + for command in commands: + command = "%(cli_wrapper)s %(command)s" % locals() + try: + with open(path.join(environ["CI_PROJECT_DIR"], "log.txt"), "a") as log: + command_output = check_output(command, shell=True) + log.write("%(command_output)s\n" % locals()) + except: + exit(1) + + +fetch_zcash_params() +start_daemon(daemon_wrapper) +sleep(daemon_runtime_seconds) +run_cli_commands(cli_wrapper, cli_commands)