diff --git a/.circleci/build_win.ps1 b/.circleci/build_win.ps1 index 4df23de42..66f9be33a 100644 --- a/.circleci/build_win.ps1 +++ b/.circleci/build_win.ps1 @@ -1,3 +1,5 @@ +$ErrorActionPreference = "Stop" + cd "$PSScriptRoot\.." if ("$Env:FORCE_RELEASE") { @@ -9,5 +11,8 @@ mkdir build cd build $boost_dir=(Resolve-Path $PSScriptRoot\..\deps\boost\lib\cmake\Boost-*) ..\deps\cmake\bin\cmake -G "Visual Studio 16 2019" -DBoost_DIR="$boost_dir\" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_INSTALL_PREFIX="$PSScriptRoot\..\upload" .. +if ( -not $? ) { throw "CMake configure failed." } msbuild solidity.sln /p:Configuration=Release /m:5 /v:minimal +if ( -not $? ) { throw "Build failed." } ..\deps\cmake\bin\cmake --build . -j 5 --target install --config Release +if ( -not $? ) { throw "Install target failed." } diff --git a/.circleci/config.yml b/.circleci/config.yml index 55204b8e5..daefe4472 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -250,6 +250,16 @@ defaults: requires: - b_ubu_ossfuzz + - workflow_win: &workflow_win + <<: *workflow_trigger_on_tags + requires: + - b_win + + - workflow_win_release: &workflow_win_release + <<: *workflow_trigger_on_tags + requires: + - b_win_release + # -------------------------------------------------------------------------- # Notification Templates - gitter_notify_failure: &gitter_notify_failure @@ -903,6 +913,9 @@ jobs: - run: name: "Building solidity" command: .circleci/build_win.ps1 + - run: + name: "Run solc.exe to make sure build was successful." + command: .\build\solc\Release\solc.exe --version - store_artifacts: *artifact_solc_windows - persist_to_workspace: *artifacts_build_dir @@ -911,6 +924,24 @@ jobs: environment: FORCE_RELEASE: ON + t_win: &t_win + executor: + name: win/default + shell: powershell.exe + steps: + - checkout + - attach_workspace: + at: build + - run: + name: "Install evmone" + command: scripts/install_evmone.ps1 + - run: + name: "Run soltest" + command: .circleci/soltest.ps1 + - store_artifacts: *artifacts_test_results + + t_win_release: + <<: *t_win workflows: version: 2 @@ -966,6 +997,8 @@ workflows: # Windows build and tests - b_win: *workflow_trigger_on_tags - b_win_release: *workflow_trigger_on_tags + - t_win: *workflow_win + - t_win_release: *workflow_win_release nightly: diff --git a/.circleci/soltest.ps1 b/.circleci/soltest.ps1 new file mode 100755 index 000000000..6b67adb13 --- /dev/null +++ b/.circleci/soltest.ps1 @@ -0,0 +1,12 @@ +$ErrorActionPreference = "Stop" + +cd "$PSScriptRoot\.." + +.\build\solc\Release\solc.exe --version +if ( -not $? ) { throw "Cannot execute solc --version." } + +mkdir test_results +.\build\test\Release\soltest.exe --color_output=no --show_progress=yes --logger=JUNIT,error,test_results/result.xml -- --no-smt +if ( -not $? ) { throw "Unoptimized soltest run failed." } +.\build\test\Release\soltest.exe --color_output=no --show_progress=yes --logger=JUNIT,error,test_results/result_opt.xml -- --optimize --no-smt +if ( -not $? ) { throw "Optimized soltest run failed." } \ No newline at end of file diff --git a/scripts/install_deps.ps1 b/scripts/install_deps.ps1 index bcf10eed9..c1301c74e 100644 --- a/scripts/install_deps.ps1 +++ b/scripts/install_deps.ps1 @@ -1,3 +1,5 @@ +$ErrorActionPreference = "Stop" + # Needed for Invoke-WebRequest to work via CI. $progressPreference = "silentlyContinue" @@ -12,4 +14,5 @@ tar -xf boost.zip cd boost_1_74_0 .\bootstrap.bat .\b2 -j4 -d0 link=static runtime-link=static variant=release threading=multi address-model=64 --with-filesystem --with-system --with-program_options --with-test --prefix="$PSScriptRoot\..\deps\boost" install +if ( -not $? ) { throw "Error building boost." } cd .. diff --git a/scripts/install_evmone.ps1 b/scripts/install_evmone.ps1 new file mode 100644 index 000000000..ba69dab34 --- /dev/null +++ b/scripts/install_evmone.ps1 @@ -0,0 +1,9 @@ +$ErrorActionPreference = "Stop" + +# Needed for Invoke-WebRequest to work via CI. +$progressPreference = "silentlyContinue" + +Invoke-WebRequest -URI "https://github.com/ethereum/evmone/releases/download/v0.5.0/evmone-0.5.0-windows-amd64.zip" -OutFile "evmone.zip" +tar -xf evmone.zip "bin/evmone.dll" +mkdir deps +mv bin/evmone.dll deps