Github Actions (#11528)

* actions

* add build scripts

* chmod +x

* remove clang env

* add ARM builds

* install LLVM for Windows

* check LLVM

* remove fi

* check platform

* fix LLVM install on windows

* diff cache

* remove unexpected token &&

* remove build directory cache from windows

* remove Show ENV

* remove checksum

* fix cross and RUSTFLAGS

* final fix for ARM and Windows build

* typo

* fix PATH for artifacts

* sudo for install
set PATH . for artifacts.zip

* target names for artifacts

* platform names for artifacts

* remove ARM builds
PLATFORM for build scripts

* remove PLATFORM and change PATH for artifacts.zip

* change PATH for artifacts

* add sccache
div to test and build

* env RUSTC_WRAPPER sccache

* sccache tag 0.2.13 
up cache to latest v1.1.2
set SCCACHE_CACHE_SIZE: "1G"

* remove dependencies from build

* add audit check
add tags for Build sccache --show-stats

* remove beta and nightly toolchains

* refactoring cache && sccache

* fix Windows PATH o sccache HOME

* "*"->'*'

* install scache from https://github.com/mozilla/sccache/releases

* fix lint

* url for sccache

* sccache up

* shell: pwsh for sccache

* up install script for sccache

* fix link

* splitting tests into multiple tasks

* Jobs renaming

* typo fix

* remove Continue on error

* TEST: remove cargo build cache

* TEST: sccache show stats before

* TEST: 1

* TEST: 2

* TEST: 3 
MacOS fix sccache PATH

* TEST 4: enable target cache

* remove build

* TEST 5: check cache and up Cargo.toml

* TEST 6

* TEST 7: restore cargo cache
splt build-tests and run-tests

* TEST 8: fix build-test

* TEST 9: fix sccache

* TEST 10: lint run-test

* TEST 11: build and test in one job

* prepare for merge

* test.yml -> check.yml

* add install sccache script

* sh -> ps1

* add os arg to ps cript

* os up

* fix os arg

* ls sccache tar

* echo url

* echo sccache url

* add swith for select platform

* fix args

* TEST CLEAN 1: clean biuld dir for all platforms

* TEST CLEAN 2: incude build step 
continue-on-error in test

* TEST CLEAN 3: script for clean

* ready for merge
This commit is contained in:
Denis S. Soldatov aka General-Beck
2020-03-04 17:49:43 +03:00
committed by GitHub
parent bfbb92f0a1
commit 729b10e1e0
9 changed files with 391 additions and 0 deletions

22
scripts/actions/build-linux.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
set -e # fail on any error
set -u # treat unset variables as error
#strip ON
export RUSTFLAGS=" -Clink-arg=-s -Ctarget-feature=+aes,+sse2,+ssse3"
echo "_____ Build OpenEthereum and tools _____"
time cargo build --verbose --color=always --release --features final
time cargo build --verbose --color=always --release -p evmbin
time cargo build --verbose --color=always --release -p ethstore-cli
time cargo build --verbose --color=always --release -p ethkey-cli
echo "_____ Post-processing binaries _____"
rm -rf artifacts/*
mkdir -p artifacts/
cp -v target/release/parity artifacts/parity
cp -v target/release/parity-evm artifacts/parity-evm
cp -v target/release/ethstore artifacts/ethstore
cp -v target/release/ethkey artifacts/ethkey

View File

@@ -0,0 +1,22 @@
#!/bin/bash
set -e # fail on any error
set -u # treat unset variables as error
# NOTE: Enables the aes-ni instructions for RustCrypto dependency.
# If you change this please remember to also update .cargo/config
export RUSTFLAGS=" -Ctarget-feature=+aes,+sse2,+ssse3 -Ctarget-feature=+crt-static -Clink-arg=-s"
echo "_____ Build OpenEthereum and tools _____"
time cargo build --verbose --release --features final
time cargo build --verbose --release -p evmbin
time cargo build --verbose --release -p ethstore-cli
time cargo build --verbose --release -p ethkey-cli
echo "_____ Post-processing binaries _____"
rm -rf artifacts
mkdir -p artifacts
cp --verbose target/release/parity.exe artifacts/parity.exe
cp --verbose target/release/parity-evm.exe artifacts/parity-evm.exe
cp --verbose target/release/ethstore.exe artifacts/ethstore.exe
cp --verbose target/release/ethkey.exe artifacts/ethkey.exe

View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e # fail on any error
set -u # treat unset variables as error
find ./target/release -maxdepth 1 -type f -delete;
rm -fr ./target/release/{deps,.fingerprint}/*{parity,ethcore,ethkey,ethstore,parity-evm}*;
rm -f ./target/.rustc_info.json;

View File

@@ -0,0 +1,21 @@
#!/usr/bin/env pwsh
$os=$args[0]
$SCCACHE_CACHE_SIZE="1G"
$SCCACHE_IDLE_TIMEOUT=0
$version="0.2.12"
echo "Current OS:" $os
switch ($os){
"macOS" {$platform = "x86_64-apple-darwin"}
"Linux" {$platform = "x86_64-unknown-linux-musl"}
"Windows" {$platform ="x86_64-pc-windows-msvc"}
}
echo "Target arch: " $platform
$basename = "sccache-$version-$platform"
$url = "https://github.com/mozilla/sccache/releases/download/"+"$version/$basename.tar.gz"
echo "Download sccache from "+$url
curl -LO $url
tar -xzvf "$basename.tar.gz"
ls $basename/
. $basename/sccache --start-server
echo "::add-path::$(pwd)/$basename"
echo "::set-env name=RUSTC_WRAPPER::sccache"

View File

@@ -0,0 +1,27 @@
#!/bin/bash
set -e # fail on any error
set -u # treat unset variables as error
echo "________Running validate_chainspecs.sh________"
ERR=0
echo "________Validate chainspecs________"
time cargo build --release -p chainspec --verbose --color=always
for spec in ethcore/res/*.json; do
if ! ./target/release/chainspec "$spec"; then ERR=1; fi
done
for spec in ethcore/res/ethereum/*.json; do
if ! ./target/release/chainspec "$spec"; then ERR=1; fi
done
echo "________Mainnet contains Istanbul EIPs________"
for eip in $(grep --only-matching "eip.*Transition" ethcore/res/ethereum/istanbul_test.json); do
if ! grep -q $eip ethcore/res/ethereum/foundation.json; then
echo "ERROR: $eip is missing in the foundation json spec"
ERR=1
fi
done
exit $ERR