Actions workflow for test and live/beta artifact (#2442)

docker builds as well
remove travis and appveyor
win use core_test rpc_test for tests
move redist into signing, as we only require it if we sign artifacts
This commit is contained in:
Russel Waters 2019-12-17 13:23:20 -05:00 committed by GitHub
commit 178026c1b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 616 additions and 256 deletions

82
.github/workflows/beta_artifacts.yml vendored Normal file
View file

@ -0,0 +1,82 @@
name: Beta
on:
push:
tags:
- V*RC*
- V*DB*
env:
BETA: 1
artifact: 1
jobs:
osx_job:
runs-on: macOS-latest
env:
BOOST_ROOT: /tmp/boost
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: echo "::set-env name=TAG::`git describe --tags $GITHUB_SHA`"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/osx/install_deps.sh
- name: Build Artifact
run: TRAVIS_TAG=${TAG} ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5";
- name: Deploy Artifact
run: ci/actions/deploy.sh
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
linux_job:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: echo "::set-env name=TAG::`git describe --tags $GITHUB_SHA`"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Build Artifact
run: docker run -v ${GITHUB_WORKSPACE}:/workspace nanocurrency/nano-env:gcc /bin/bash -c "cd /workspace && TRAVIS_TAG=${TAG} ci/build-deploy.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
- name: Deploy Artifact
run: ci/actions/deploy.sh
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
- name: Deploy Docker (nanocurrency/nano-beta)
run: ci/actions/linux/deploy-docker.sh
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
windows_job:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: |
$TRAVIS_TAG=git describe --tags $GITHUB_SHA
echo "::set-env name=TAG::$TRAVIS_TAG"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/windows/install_deps.ps1
- name: Build Artifact
run: ci/actions/windows/build.ps1
env:
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
- name: Deploy Artifact
run: ci/actions/windows/deploy.ps1
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2

19
.github/workflows/develop.yml vendored Normal file
View file

@ -0,0 +1,19 @@
name: Develop
on:
push:
branches:
- develop
jobs:
linux_job:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Deploy Docker (nanocurrency/nano-env)
run: ci/actions/linux/deploy-docker.sh
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

81
.github/workflows/live_artifacts.yml vendored Normal file
View file

@ -0,0 +1,81 @@
name: Live
on:
push:
tags-ignore:
- '*RC*'
- '*DB*'
env:
artifact: 1
jobs:
osx_job:
runs-on: macOS-latest
env:
BOOST_ROOT: /tmp/boost
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: echo "::set-env name=TAG::`git describe --tags $GITHUB_SHA`"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/osx/install_deps.sh
- name: Build Artifact
run: TRAVIS_TAG=${TAG} ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5";
- name: Deploy Artifact
run: ci/actions/deploy.sh
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
linux_job:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: echo "::set-env name=TAG::`git describe --tags $GITHUB_SHA`"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Build Artifact
run: docker run -v ${GITHUB_WORKSPACE}:/workspace nanocurrency/nano-env:gcc /bin/bash -c "cd /workspace && TRAVIS_TAG=${TAG} ci/build-deploy.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
- name: Deploy Artifact
run: ci/actions/deploy.sh
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2
- name: Deploy Docker (nanocurrency/nano)
run: ci/actions/linux/deploy-docker.sh
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
windows_job:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- uses: chrislennon/action-aws-cli@v1.1
- name: tag
run: |
$TRAVIS_TAG=git describe --tags $GITHUB_SHA
echo "::set-env name=TAG::$TRAVIS_TAG"
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/windows/install_deps.ps1
- name: Build Artifact
run: ci/actions/windows/build.ps1
env:
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
- name: Deploy Artifact
run: ci/actions/windows/deploy.ps1
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-2

56
.github/workflows/release_test.yml vendored Normal file
View file

@ -0,0 +1,56 @@
name: Release Tests
on:
push:
tags: '*'
env:
RELEASE: 1
artifact: 0
jobs:
osx_test:
runs-on: macOS-latest
env:
BOOST_ROOT: /tmp/boost
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: TEST=1 ci/actions/osx/install_deps.sh
- name: Run Tests
run: ci/build-travis.sh "/tmp/qt/lib/cmake/Qt5";
gcc_test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Run Tests
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:gcc /bin/bash -c "cd /workspace && RELEASE=1 ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
clang_test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Run Tests
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:clang /bin/bash -c "cd /workspace && RELEASE=1 ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
windows_test:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/windows/install_deps.ps1
- name: Run Tests
run: ci/actions/windows/build.ps1

58
.github/workflows/tests.yml vendored Normal file
View file

@ -0,0 +1,58 @@
name: Tests
on: [push, pull_request]
env:
RELEASE: 0
artifact: 1
jobs:
osx_test:
runs-on: macOS-latest
env:
BOOST_ROOT: /tmp/boost
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: TEST=1 ci/actions/osx/install_deps.sh
- name: Run Tests
run: ci/build-travis.sh "/tmp/qt/lib/cmake/Qt5";
gcc_test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Run Tests
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:gcc /bin/bash -c "cd /workspace && ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
clang_test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/linux/install_deps.sh
- name: Run Tests
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:clang /bin/bash -c "cd /workspace && RELEASE=0 ASAN=0 TSAN=0 ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
windows_test:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Windows Defender
run: ci/actions/windows/disable_windows_defender.ps1
- name: Checkout Submodules
run: git submodule update --init --recursive
- name: Fetch Deps
run: ci/actions/windows/install_deps.ps1
- name: Run Tests
env:
artifact: 0
run: ci/actions/windows/build.ps1

View file

@ -1,201 +0,0 @@
language: cpp
stages:
- build_base
- build_env
- master_beta_docker
- tag_test
- test
- artifacts_beta
- artifacts_live
jobs:
include:
- stage: build_base
name: "base"
if: branch=master AND type=push
script:
- if [ -n "$DOCKER_PASSWORD" ]; then ci/deploy-docker.sh; fi;
- stage: build_env
name: "clang"
if: branch=master AND type=push
script:
- if [ -n "$DOCKER_PASSWORD" ]; then ci/deploy-docker.sh; fi;
- name: "gcc"
if: branch=master AND type=push
script:
- if [ -n "$DOCKER_PASSWORD" ]; then ci/deploy-docker.sh; fi;
- stage: master_beta_docker
name: "beta docker master tag"
if: tag =~RC|DB
script:
- if [ -n "$DOCKER_PASSWORD" ]; then TRAVIS_TAG="${TRAVIS_TAG}" ci/deploy-docker.sh; fi;
- stage: tag_test
name: "gcc"
if: tag is present
os: linux
compiler: gcc
env:
- RELEASE=1
before_install:
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc;
- name: "clang"
if: tag is present
os: linux
compiler: clang
env:
- RELEASE=1
before_install:
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-clang nanocurrency/nano-env:clang;
- name: "osx clang"
if: tag is present
os: osx
compiler: clang
env:
- RELEASE=1
before_install:
- brew update;
- brew cask install xquartz;
- brew upgrade cmake;
- brew install rocksdb;
- util/build_prep/fetch_boost.sh
- util/build_prep/macosx/build_qt.sh
install:
- brew install ccache;
- export PATH="/usr/local/opt/ccache/libexec:$PATH";
- stage: test
name: "GCC + ONE_TIME_TESTS"
os: linux
compiler: gcc
dist: trusty
sudo: required
env:
- ONE_TIME_TESTS=true
addons:
apt:
packages:
- doxygen
before_install:
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc;
- name: "clang"
os: linux
compiler: clang
dist: trusty
sudo: required
before_install:
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-clang nanocurrency/nano-env:clang;
- name: "osx"
os: osx
compiler: clang
before_install:
- brew update;
- brew cask install xquartz;
- brew upgrade cmake;
- brew install rocksdb;
- util/build_prep/fetch_boost.sh
- util/build_prep/macosx/build_qt.sh
install:
- brew install ccache;
- export PATH="/usr/local/opt/ccache/libexec:$PATH";
- stage: artifacts_live
name: "live docker"
if: tag IS present AND !tag=~RC|DB
script:
if [ -n "$DOCKER_PASSWORD" ]; then TRAVIS_TAG="${TRAVIS_TAG}" ci/deploy-docker.sh; fi;
- name: "live linux"
os: linux
compiler: gcc
dist: trusty
if: tag IS present AND !tag=~RC|DB
before_install:
- sudo apt-get update -y && sudo apt-get install -y python-pip
- pip install --user awscli
- aws --version
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc;
script:
- docker run -v $TRAVIS_BUILD_DIR:/workspace -v $HOME/.ccache:/ccache nanocurrency/nano-env:$TRAVIS_COMPILER /bin/bash -c "apt install ccache; cd /workspace && TRAVIS_TAG=${TRAVIS_TAG} CCACHE_DIR=/ccache ci/build-deploy.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}";
- ci/deploy-travis.sh;
- name: "live osx"
os: osx
compiler: clang
before_install:
- brew update;
- brew cask install xquartz;
- brew upgrade cmake;
- util/build_prep/fetch_rocksdb.sh
- util/build_prep/fetch_boost.sh
- util/build_prep/macosx/build_qt.sh
install:
- pip install --user awscli
- brew install ccache;
- export PATH="$HOME/Library/Python/2.7/bin:/usr/local/opt/ccache/libexec:$PATH";
- aws --version
script:
- ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5";
- if [[ -n "$TRAVIS_TAG" ]]; then if [[ ! "${TRAVIS_TAG-0}" =~ ("RC"|"DB") ]]; then ci/deploy-travis.sh; fi; fi;
- stage: artifacts_beta
name: "beta docker"
if: tag =~RC|DB
script:
- if [ -n "$DOCKER_PASSWORD" ]; then TRAVIS_TAG="${TRAVIS_TAG}" ci/deploy-docker.sh; fi;
- name: "beta linux"
os: linux
env:
- BETA=1
compiler: gcc
dist: trusty
if: tag =~RC|DB
before_install:
- sudo apt-get update -y && sudo apt-get install -y python-pip
- pip install --user awscli
- aws --version
- sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
- ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc;
script:
- docker run -v $TRAVIS_BUILD_DIR:/workspace -v $HOME/.ccache:/ccache nanocurrency/nano-env:$TRAVIS_COMPILER /bin/bash -c "apt install ccache; cd /workspace && TRAVIS_TAG=${TRAVIS_TAG} BETA=1 CCACHE_DIR=/ccache ci/build-deploy.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"
- ci/deploy-travis.sh;
- name: "beta osx"
os: osx
compiler: clang
env:
- BETA=1
if: tag =~RC|DB
before_install:
- brew update;
- brew cask install xquartz;
- brew upgrade cmake;
- util/build_prep/fetch_rocksdb.sh
- util/build_prep/fetch_boost.sh
- util/build_prep/macosx/build_qt.sh
install:
- pip install --user awscli
- brew install ccache;
- export PATH="$HOME/Library/Python/2.7/bin:/usr/local/opt/ccache/libexec:$PATH";
- aws --version
script:
- ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5";
- ci/deploy-travis.sh;
cache:
- ccache: true
- directories:
- $HOME/.local
- $HOME/Library/Caches/Homebrew
- $TRAVIS_BUILD_DIR/load-tester/target
script:
- if [ -n "$ONE_TIME_TESTS" ]; then ci/check-commit-format.sh; fi
- if [ -n "$ONE_TIME_TESTS" ]; then doxygen doxygen.config; fi # TODO also deploy the built HTML
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then RELEASE=${RELEASE} ci/build-travis.sh "/tmp/qt/lib/cmake/Qt5"; fi
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v $TRAVIS_BUILD_DIR:/workspace -v $HOME/.ccache:/ccache nanocurrency/nano-env:$TRAVIS_COMPILER /bin/bash -c "apt install ccache; cd /workspace && RELEASE=${RELEASE} ASAN=${ASAN} TSAN=${TSAN} CCACHE_DIR=/ccache ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"; fi
env:
global:
- secure: "k8kmpD+xRS57ukdvlvaXT0WN4H0rr/aHSjV+l5IUUFpKx5N+DEsb+7ElIepKzqQrGG6qE71cFwDyn6rDwW/Objb9aiEITnvJBzk1XrOVgbc5AnlqDm8LKvqToD/VnQiojyXhBQe2wa//nEZ3PC9dv7hE5zb/K/U5z+LaE9T1cPPk1jHQMCUAFT7QGCK0YeX/gAZqPbLZdHHQChEi+Gu/XY0gc5Bl8Idbp8W7Aky9Ps06lKXPORkE1G2xQfJFrNPB3CKjxev/eoXGBJmNYzxkJlUHmyenjwgdDh9TWiOK2uKH1K6olLIx/qFuIgFRVJFv0QFzCjqqjOJJF1EN9i1M21Lm4wi1iJxYShAP86ZKkC/WmtRn1xNTEMHZJeZ3TXX+B3ybLEWTamHS1Ia8HOif18nrQE3O0aRC/NNfH1kewX+94UNxmSfHtL5Waa41shxeG5waemyQg+HR5zCEtrb5l1btgbfGrR8BMbHYLLe4ywJqMx3n8Iy6ZzC6Xx8+X1zTZZ3zDYPBHUalA+ZoYu2rrFG2+SARP0W/VKqCIKaB+lQKYpbv7ojXGrrDJe7MA/raTLL2pTfSkcx0qxJvcsbPLGI1MdG3mD7M8HncrZbw+sKI1LZ04gyWt3til6d3vSlbIkd6kCxxZh69nd1/KJy8rYrMYjqxxNSTctkGyVb2DtY="
- RELEASE=0
- AWS_BUCKET=repo.nano.org

View file

@ -1,53 +0,0 @@
version: 1.0.{build}
pull_requests:
do_not_increment_build_number: true
skip_branch_with_pr: true
max_jobs: 2
image: Visual Studio 2017
configuration: Release
platform: x64
environment:
VCPKG_DIR: C:\Tools\vcpkg
matrix:
- network: nano_live_network
configuration: Release
- network: nano_beta_network
configuration: RelWithDebInfo
clone_folder: C:\projects\myproject
cache: $VCPKG_DIR%\installed\
install:
- git submodule update --init --recursive
- echo set (VCPKG_LIBRARY_LINKAGE static) > temp.txt
- type %VCPKG_DIR%\ports\rocksdb\portfile.cmake >> temp.txt
- type temp.txt > %VCPKG_DIR%\ports\rocksdb\portfile.cmake
- del temp.txt
- echo set(VCPKG_BUILD_TYPE release) >> C:\Tools\vcpkg\triplets\x64-windows.cmake
- vcpkg install rocksdb:%PLATFORM%-windows
- IF NOT DEFINED APPVEYOR_REPO_TAG_NAME (set APPVEYOR_REPO_TAG_NAME=NOT_ARTIFACT)
- set TRAVIS_TAG=%APPVEYOR_REPO_TAG_NAME%
- cmake -DNANO_GUI=ON -DNANO_POW_SERVER=ON -DCI_BUILD=ON -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DACTIVE_NETWORK=%NETWORK% -DQt5_DIR="C:\Qt\5.9\msvc2017_64\lib\cmake\Qt5" -DNANO_SIMD_OPTIMIZATIONS=TRUE -DBoost_COMPILER="-vc141" -DBOOST_ROOT="C:/Libraries/boost_1_67_0" -DBOOST_LIBRARYDIR="C:/Libraries/boost_1_67_0/lib64-msvc-14.1" -G "Visual Studio 15 2017 Win64" -DNANO_ROCKSDB=ON -DROCKSDB_LIBRARIES="%VCPKG_DIR%\installed\x64-windows\lib\rocksdb.lib" -DROCKSDB_INCLUDE_DIRS="%VCPKG_DIR%\installed\x64_windows\include" -DZLIB_LIBRARY=%VCPKG_DIR%\installed\x64-windows\lib\zlib.lib -DZLIB_INCLUDE_DIR=%VCPKG_DIR%\installed\x64-windows\include -DIPHLPAPI_LIBRARY="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64/iphlpapi.lib" -DWINSOCK2_LIBRARY="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64/WS2_32.lib" .
- ps: Invoke-WebRequest -Uri https://aka.ms/vs/15/release/vc_redist.x64.exe -OutFile .\vc_redist.x64.exe
build:
project: INSTALL.vcxproj
parallel: true
verbosity: minimal
after_build:
- ps: |
if (Test-Path env:CSC_LINK) {
$path = Join-Path -Path "$env:TMP" -ChildPath csc.p12
[IO.File]::WriteAllBytes($path, [Convert]::FromBase64String($env:CSC_LINK))
$args = -split 'sign /a /ph /tr http://timestamp.digicert.com /td sha256 /fd sha256'
$args += @('/f', $path, '/p', $env:CSC_KEY_PASSWORD, "$env:APPVEYOR_BUILD_FOLDER\$env:CONFIGURATION\*.exe")
. 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe' $args
}
- cmd: >-
cpack -C %CONFIGURATION% --verbose --config ./CPackConfig.cmake
cpack -G ZIP -C %CONFIGURATION% --verbose --config ./CPackConfig.cmake
artifacts:
- path: nano*.zip
name: nano_release_%network%
- path: nano-node-*.exe
name: nano-node-%network%

18
ci/actions/deploy.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o xtrace
OS=`uname`
if [[ "${BETA-0}" -eq 1 ]]; then
BUILD="beta"
else
BUILD="live"
fi
if [[ "$OS" == 'Linux' ]]; then
aws s3 cp $GITHUB_WORKSPACE/build/nano-node-*-Linux.tar.bz2 s3://repo.nano.org/$BUILD/binaries/nano-node-$TAG-Linux.tar.bz2 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
else
aws s3 cp $GITHUB_WORKSPACE/build/nano-node-*-Darwin.dmg s3://repo.nano.org/$BUILD/binaries/nano-node-$TAG-Darwin.dmg --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
fi

View file

@ -0,0 +1,52 @@
#!/bin/bash
set -e
if [ -n "$DOCKER_PASSWORD" ]; then
echo "$DOCKER_PASSWORD" | docker login -u nanoreleaseteam --password-stdin
scripts="$PWD/ci"
TRAVIS_BRANCH=`git branch| cut -f2 -d' '`
if [[ "$GITHUB_WORKFLOW" = "Develop" ]]; then
"$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:base"
"$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:gcc"
"$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:clang"
echo "Deployed nano-env"
exit 0
else
tags=()
if [ -n "$TRAVIS_TAG" ]; then
tags+=("$TRAVIS_TAG" latest latest-including-rc)
elif [ -n "$TRAVIS_BRANCH" ]; then
TRAVIS_TAG=$TRAVIS_BRANCH
tags+=("$TRAVIS_BRANCH")
fi
if [[ "$GITHUB_WORKFLOW" = "Live" ]]; then
echo "Live"
network_tag_suffix=''
network="live"
elif [[ "$GITHUB_WORKFLOW" = "Beta" ]]; then
echo "Beta"
network_tag_suffix="-beta"
network="beta"
else
echo "Nothing to deploy"
exit 1
fi
docker_image_name="nanocurrency/nano${network_tag_suffix}"
"$scripts"/custom-timeout.sh 30 docker build --build-arg NETWORK="$network" --build-arg CI_BUILD=true --build-arg TRAVIS_TAG="$TRAVIS_TAG" -f docker/node/Dockerfile -t "$docker_image_name" .
for tag in "${tags[@]}"; do
# Sanitize docker tag
# https://docs.docker.com/engine/reference/commandline/tag/
tag="$(printf '%s' "$tag" | tr -c '[a-z][A-Z][0-9]_.-' -)"
if [ "$tag" != "latest" ]; then
docker tag "$docker_image_name" "${docker_image_name}:$tag"
fi
"$scripts"/custom-timeout.sh 30 docker push "${docker_image_name}:$tag"
done
fi
echo "$docker_image_name with tags ${tags[*]} deployed"
else
echo "\$DOCKER_PASSWORD environment variable required"
exit 1
fi

View file

@ -0,0 +1,7 @@
#!/bin/bash
sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart;
ci/build-docker-image.sh docker/ci/Dockerfile-base nanocurrency/nano-env:base
ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc
ci/build-docker-image.sh docker/ci/Dockerfile-clang nanocurrency/nano-env:clang

12
ci/actions/osx/install_deps.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
brew update
brew install coreutils
brew cask install xquartz
if [[ ${TEST-0} -eq 1 ]]; then
brew install rocksdb;
else
util/build_prep/fetch_rocksdb.sh
fi
util/build_prep/bootstrap_boost.sh -m -c -B 1.70 && \
util/build_prep/macosx/build_qt.sh

View file

@ -0,0 +1,29 @@
@echo off
set exit_code=0
goto %RUN%
:test
cmake --build . ^
--target core_test ^
--config %BUILD_TYPE% ^
-- /m:2
set exit_code=%errorlevel%
if %exit_code% neq 0 goto exit
cmake --build . ^
--target rpc_test ^
--config %BUILD_TYPE% ^
-- /m:2
set exit_code=%errorlevel%
goto exit
:artifact
cmake --build . ^
--target INSTALL ^
--config %BUILD_TYPE% ^
-- /m:2
set exit_code=%errorlevel%
goto exit
:exit
exit /B %exit_code%

View file

@ -0,0 +1,57 @@
# Stop immediately if any error happens
$ErrorActionPreference = "Stop"
if (${env:artifact} -eq 1) {
if ( ${env:BETA} -eq 1 ) {
$env:NETWORK_CFG = "beta"
$env:BUILD_TYPE = "RelWithDebInfo"
} else {
$env:NETWORK_CFG = "live"
$env:BUILD_TYPE = "Release"
}
$env:ROCKS_LIB = '-DROCKSDB_LIBRARIES="c:\vcpkg\installed\x64-windows-static\lib\rocksdb.lib"'
$env:NANO_TEST = "-DNANO_TEST=OFF"
$env:TRAVIS_TAG = ${env:TAG}
$env:CI = "-DCI_BUILD=ON"
$env:RUN = "artifact"
} else {
if ( ${env:RELEASE} -eq 1 ) {
$env:BUILD_TYPE = "RelWithDebInfo"
$env:ROCKS_LIB = '-DROCKSDB_LIBRARIES="c:\vcpkg\installed\x64-windows-static\lib\rocksdb.lib"'
} else {
$env:BUILD_TYPE = "Debug"
$env:ROCKS_LIB = '-DROCKSDB_LIBRARIES="c:\vcpkg\installed\x64-windows-static\debug\lib\rocksdbd.lib"'
}
$env:NETWORK_CFG = "test"
$env:NANO_TEST = "-DNANO_TEST=ON"
$env:CI = "-DCI_BUILD=OFF"
$env:RUN = "test"
}
mkdir build
Push-Location build
& ..\ci\actions\windows\configure.bat
if (${LastExitCode} -ne 0) {
throw "Failed to configure"
}
if (${env:RUN} -eq "artifact") {
$p = Get-Location
Invoke-WebRequest -Uri https://aka.ms/vs/15/release/vc_redist.x64.exe -OutFile "$p\vc_redist.x64.exe"
}
& ..\ci\actions\windows\build.bat
if (${LastExitCode} -ne 0) {
throw "Failed to build ${env:RUN}"
}
$env:cmake_path = Split-Path -Path(get-command cmake.exe).Path
. "$PSScriptRoot\signing.ps1"
& ..\ci\actions\windows\run.bat
if (${LastExitCode} -ne 0) {
throw "Failed to Pass Test ${env:RUN}"
}
Pop-Location

View file

@ -0,0 +1,28 @@
@echo off
set exit_code=0
echo "BUILD TYPE %BUILD_TYPE%"
echo "RUN %RUN%"
cmake .. ^
-Ax64 ^
%NANO_TEST% ^
%CI% ^
-DNANO_ROCKSDB=ON ^
%ROCKS_LIB% ^
-DROCKSDB_INCLUDE_DIRS="c:\vcpkg\installed\x64-windows-static\include" ^
-DZLIB_LIBRARY_RELEASE="c:\vcpkg\installed\x64-windows-static\lib\zlib.lib" ^
-DZLIB_LIBRARY_DEBUG="c:\vcpkg\installed\x64-windows-static\debug\lib\zlibd.lib" ^
-DZLIB_INCLUDE_DIR="c:\vcpkg\installed\x64-windows-static\include" ^
-DQt5_DIR="c:\qt\5.13.1\msvc2017_64\lib\cmake\Qt5" ^
-DNANO_GUI=ON ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DACTIVE_NETWORK=nano_%NETWORK_CFG%_network ^
-DNANO_SIMD_OPTIMIZATIONS=TRUE ^
-Dgtest_force_shared_crt=on
set exit_code=%errorlevel%
if %exit_code% neq 0 goto exit
:exit
exit /B %exit_code%

View file

@ -0,0 +1,13 @@
# Stop immediately if any error happens
$ErrorActionPreference = "Stop"
if ( ${env:BETA} -eq 1 ) {
$network_cfg="beta"
} else {
$network_cfg="live"
}
$exe=Resolve-Path -Path $env:GITHUB_WORKSPACE\build\nano-node-*-win64.exe
$zip=Resolve-Path -Path $env:GITHUB_WORKSPACE\build\nano-node-*-win64.zip
aws s3 cp $exe s3://repo.nano.org/$network_cfg/binaries/nano-node-$env:TAG-win64.exe --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
aws s3 cp "$zip" s3://repo.nano.org/$network_cfg/binaries/nano-node-$env:TAG-win64.zip --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers

View file

@ -0,0 +1,3 @@
Set-MpPreference -DisableArchiveScanning $true
Set-MpPreference -DisableRealtimeMonitoring $true
Set-MpPreference -DisableBehaviorMonitoring $true

View file

@ -0,0 +1,68 @@
function Get-RedirectedUri {
<#
.SYNOPSIS
Gets the real download URL from the redirection.
.DESCRIPTION
Used to get the real URL for downloading a file, this will not work if downloading the file directly.
.EXAMPLE
Get-RedirectedURL -URL "https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US"
.PARAMETER URL
URL for the redirected URL to be un-obfuscated
.NOTES
Code from: Redone per issue #2896 in core https://github.com/PowerShell/PowerShell/issues/2896
#>
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[string]$Uri
)
process {
do {
try {
$request = Invoke-WebRequest -Method Head -Uri $Uri
if ($null -ne $request.BaseResponse.ResponseUri) {
# This is for Powershell 5
$redirectUri = $request.BaseResponse.ResponseUri.AbsoluteUri
}
elseif ($null -ne $request.BaseResponse.RequestMessage.RequestUri) {
# This is for Powershell core
$redirectUri = $request.BaseResponse.RequestMessage.RequestUri.AbsoluteUri
}
$retry = $false
}
catch {
if (($_.Exception.GetType() -match "HttpResponseException") -and ($_.Exception -match "302")) {
$Uri = $_.Exception.Response.Headers.Location.AbsoluteUri
$retry = $true
}
else {
throw $_
}
}
} while ($retry)
$redirectUri
}
}
$qt5_root = "c:\qt"
$rocksdb_url = Get-RedirectedUri "https://repo.nano.org/artifacts/rocksdb-msvc14.1-latest.7z"
$qt5base_url = Get-RedirectedUri "https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5131/qt.qt5.5131.win64_msvc2017_64/5.13.1-0-201909031231qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z"
$qt5winextra_url = Get-RedirectedUri "https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5131/qt.qt5.5131.win64_msvc2017_64/5.13.1-0-201909031231qtwinextras-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z"
$rocksdb_artifact = "${env:TMP}\rocksdb.7z"
$qt5base_artifact = "${env:TMP}\qt5base.7z"
$qt5winextra_artifact = "${env:TMP}\qt5winextra.7z"
(New-Object System.Net.WebClient).DownloadFile($qt5base_url, $qt5base_artifact)
(New-Object System.Net.WebClient).DownloadFile($qt5winextra_url, $qt5winextra_artifact)
mkdir $qt5_root
Push-Location $qt5_root
7z x "${env:TMP}\qt5*.7z"
Pop-Location
Push-Location ${env:VCPKG_INSTALLATION_ROOT}
(New-Object System.Net.WebClient).DownloadFile($rocksdb_url, $rocksdb_artifact)
7z x $rocksdb_artifact
Pop-Location

View file

@ -0,0 +1,26 @@
@echo off
set exit_code=0
set count=0
goto %RUN%
:test
if %count% equ 10 goto rpc_test
call %BUILD_TYPE%\core_test.exe
set core_code=%errorlevel%
set /a count=count+1
if %core_code% neq 0 goto test
:rpc_test
call %BUILD_TYPE%\rpc_test.exe
set rpc_code=%errorlevel%
echo Core Test %core_code%
echo RPC Test %rpc_code%
exit /B %core_code%
:artifact
echo "Packaging NSIS"
call "%cmake_path%\cpack.exe" -C %BUILD_TYPE%
echo "Packaging ZIP"
call "%cmake_path%\cpack.exe" -G ZIP -C %BUILD_TYPE%

View file

@ -0,0 +1,7 @@
if (Test-Path env:CSC_LINK) {
$path = Join-Path -Path "$env:TMP" -ChildPath csc.p12
[IO.File]::WriteAllBytes($path, [Convert]::FromBase64String($env:CSC_LINK))
$args = -split 'sign /a /ph /tr http://timestamp.digicert.com /td sha256 /fd sha256'
$args += @('/f', $path, '/p', $env:CSC_KEY_PASSWORD, "$env:BUILD_TYPE\*.exe")
. "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" $args
}

View file

@ -31,7 +31,6 @@ cmake \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DBOOST_ROOT=/tmp/boost/ \
-DQt5_DIR=${qt_dir} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCI_BUILD=true \
..

View file

@ -61,7 +61,6 @@ cmake \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DBOOST_ROOT=/tmp/boost/ \
-DQt5_DIR=${qt_dir} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
${SANITIZERS} \
..