diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 87b227388..90e59f9c9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,13 +4,15 @@ stages: - push-release - build variables: - SIMPLECOV: "true" RUST_BACKTRACE: "1" RUSTFLAGS: "" CARGOFLAGS: "" CI_SERVER_NAME: "GitLab CI" + LIBSSL: "libssl1.0.0 (>=1.0.0)" cache: key: "$CI_BUILD_STAGE-$CI_BUILD_REF_NAME" + paths: + - target untracked: true linux-stable: stage: build @@ -22,77 +24,14 @@ linux-stable: - triggers script: - rustup default stable - - cargo build -j $(nproc) --release --features final $CARGOFLAGS - - cargo build -j $(nproc) --release -p evmbin - - cargo build -j $(nproc) --release -p ethstore-cli - - cargo build -j $(nproc) --release -p ethkey-cli - - strip target/release/parity - - strip target/release/parity-evm - - strip target/release/ethstore - - strip target/release/ethkey - - export SHA3=$(target/release/parity tools hash target/release/parity) - - md5sum target/release/parity > parity.md5 - - sh scripts/deb-build.sh amd64 - - cp target/release/parity deb/usr/bin/parity - - cp target/release/parity-evm deb/usr/bin/parity-evm - - cp target/release/ethstore deb/usr/bin/ethstore - - cp target/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_amd64.deb" - - md5sum "parity_"$VER"_amd64.deb" > "parity_"$VER"_amd64.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/parity --body target/release/parity - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/"parity_"$VER"_amd64.deb" --body "parity_"$VER"_amd64.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/"parity_"$VER"_amd64.deb.md5" --body "parity_"$VER"_amd64.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu + # ARGUMENTS: 1. BUILD_PLATFORM (target for binaries) 2. PLATFORM (target for cargo) 3. ARC (architecture) 4. & 5. CC & CXX flags + - scripts/gitlab-build.sh x86_64-unknown-linux-gnu x86_64-unknown-linux-gnu amd64 gcc g++ tags: - - rust - rust-stable artifacts: paths: - - target/release/parity - - target/release/parity-evm - - target/release/ethstore - - target/release/ethkey + - parity.zip name: "stable-x86_64-unknown-linux-gnu_parity" -linux-snap: - stage: build - image: parity/snapcraft:gitlab-ci - only: - - snap - - beta - - tags - - triggers - script: - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - cd snap - - rm -rf *snap - - sed -i 's/master/'"$VER"'/g' snapcraft.yaml - - echo "Version:"$VER - - snapcraft - - ls - - cp "parity_"$CI_BUILD"_REF_NAME_amd64.snap" "parity_"$VER"_amd64.snap" - - md5sum "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/"parity_"$VER"_amd64.snap" --body "parity_"$VER"_amd64.snap" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu/"parity_"$VER"_amd64.snap.md5" --body "parity_"$VER"_amd64.snap.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-linux-gnu - tags: - - rust - - rust-stable - artifacts: - paths: - - scripts/parity_*_amd64.snap - name: "stable-x86_64-unknown-snap-gnu_parity" - allow_failure: true linux-stable-debian: stage: build image: parity/rust-debian:gitlab-ci @@ -102,81 +41,14 @@ linux-stable-debian: - stable - triggers script: - - cargo build -j $(nproc) --release --features final $CARGOFLAGS - - cargo build -j $(nproc) --release -p evmbin - - cargo build -j $(nproc) --release -p ethstore-cli - - cargo build -j $(nproc) --release -p ethkey-cli - - strip target/release/parity - - strip target/release/parity-evm - - strip target/release/ethstore - - strip target/release/ethkey - - export SHA3=$(target/release/parity tools hash target/release/parity) - - md5sum target/release/parity > parity.md5 - - sh scripts/deb-build.sh amd64 - - cp target/release/parity deb/usr/bin/parity - - cp target/release/parity-evm deb/usr/bin/parity-evm - - cp target/release/ethstore deb/usr/bin/ethstore - - cp target/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_amd64.deb" - - md5sum "parity_"$VER"_amd64.deb" > "parity_"$VER"_amd64.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu/parity --body target/release/parity - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu/"parity_"$VER"_amd64.deb" --body "parity_"$VER"_amd64.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu/"parity_"$VER"_amd64.deb.md5" --body "parity_"$VER"_amd64.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/x86_64-unknown-debian-gnu + - export LIBSSL="libssl1.1 (>=1.1.0)" + - scripts/gitlab-build.sh x86_64-unknown-debian-gnu x86_64-unknown-linux-gnu amd64 gcc g++ tags: - - rust - rust-debian artifacts: paths: - - target/release/parity + - parity.zip name: "stable-x86_64-unknown-debian-gnu_parity" -linux-beta: - stage: build - image: parity/rust:gitlab-ci - only: - - beta - - tags - - stable - - triggers - script: - - rustup default beta - - cargo build -j $(nproc) --release $CARGOFLAGS - - strip target/release/parity - tags: - - rust - - rust-beta - artifacts: - paths: - - target/release/parity - name: "beta-x86_64-unknown-linux-gnu_parity" - allow_failure: true -linux-nightly: - stage: build - image: parity/rust:gitlab-ci - only: - - beta - - tags - - stable - - triggers - script: - - rustup default nightly - - cargo build -j $(nproc) --release $CARGOFLAGS - - strip target/release/parity - tags: - - rust - - rust-nightly - artifacts: - paths: - - target/release/parity - name: "nigthly-x86_64-unknown-linux-gnu_parity" - allow_failure: true linux-centos: stage: build image: parity/rust-centos:gitlab-ci @@ -186,42 +58,12 @@ linux-centos: - stable - triggers script: - - export CXX="g++" - - export CC="gcc" - - export PLATFORM=x86_64-unknown-centos-gnu - - cargo build -j $(nproc) --release --features final $CARGOFLAGS - - cargo build -j $(nproc) --release -p evmbin - - cargo build -j $(nproc) --release -p ethstore-cli - - cargo build -j $(nproc) --release -p ethkey-cli - - strip target/release/parity - - strip target/release/parity-evm - - strip target/release/ethstore - - strip target/release/ethkey - - md5sum target/release/parity > parity.md5 - - md5sum target/release/parity-evm > parity-evm.md5 - - md5sum target/release/ethstore > ethstore.md5 - - md5sum target/release/ethkey > ethkey.md5 - - export SHA3=$(target/release/parity tools hash target/release/parity) - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/parity --body target/release/parity - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/parity.md5 --body parity.md5 - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/parity-evm --body target/release/parity-evm - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/parity-evm.md5 --body parity-evm.md5 - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/ethstore --body target/release/ethstore - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/ethstore.md5 --body ethstore.md5 - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/ethkey --body target/release/ethkey - - aws s3api put-object --bucket builds-parity --key $CI_BUILD_REF_NAME/x86_64-unknown-centos-gnu/ethkey.md5 --body ethkey.md5 - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + - scripts/gitlab-build.sh x86_64-unknown-centos-gnu x86_64-unknown-linux-gnu x86_64 gcc g++ tags: - - rust - rust-centos artifacts: paths: - - target/release/parity + - parity.zip name: "x86_64-unknown-centos-gnu_parity" linux-i686: stage: build @@ -232,47 +74,13 @@ linux-i686: - stable - triggers script: - - export HOST_CC=gcc - - export HOST_CXX=g++ - - export COMMIT=$(git rev-parse HEAD) - - export PLATFORM=i686-unknown-linux-gnu - - cargo build -j $(nproc) --target $PLATFORM --features final --release $CARGOFLAGS - - cargo build -j $(nproc) --target $PLATFORM --release -p evmbin - - cargo build -j $(nproc) --target $PLATFORM --release -p ethstore-cli - - cargo build -j $(nproc) --target $PLATFORM --release -p ethkey-cli - - strip target/$PLATFORM/release/parity - - strip target/$PLATFORM/release/parity-evm - - strip target/$PLATFORM/release/ethstore - - strip target/$PLATFORM/release/ethkey - - strip target/$PLATFORM/release/parity - - md5sum target/$PLATFORM/release/parity > parity.md5 - - export SHA3=$(target/$PLATFORM/release/parity tools hash target/$PLATFORM/release/parity) - - sh scripts/deb-build.sh i386 - - cp target/$PLATFORM/release/parity deb/usr/bin/parity - - cp target/$PLATFORM/release/parity-evm deb/usr/bin/parity-evm - - cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore - - cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_i386.deb" - - md5sum "parity_"$VER"_i386.deb" > "parity_"$VER"_i386.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$PLATFORM - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity --body target/$PLATFORM/release/parity - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_i386.deb" --body "parity_"$VER"_i386.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_i386.deb.md5" --body "parity_"$VER"_i386.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + - scripts/gitlab-build.sh i686-unknown-linux-gnu i686-unknown-linux-gnu i386 gcc g++ tags: - - rust - rust-i686 artifacts: paths: - - target/i686-unknown-linux-gnu/release/parity + - parity.zip name: "i686-unknown-linux-gnu" - allow_failure: true linux-armv7: stage: build image: parity/rust-armv7:gitlab-ci @@ -282,55 +90,13 @@ linux-armv7: - stable - triggers script: - - export CC=arm-linux-gnueabihf-gcc - - export CXX=arm-linux-gnueabihf-g++ - - export HOST_CC=gcc - - export HOST_CXX=g++ - - export PLATFORM=armv7-unknown-linux-gnueabihf - - rm -rf .cargo - - mkdir -p .cargo - - echo "[target.$PLATFORM]" >> .cargo/config - - echo "linker= \"arm-linux-gnueabihf-gcc\"" >> .cargo/config - - cat .cargo/config - - cargo build -j $(nproc) --target $PLATFORM --features final --release $CARGOFLAGS - - cargo build -j $(nproc) --target $PLATFORM --release -p evmbin - - cargo build -j $(nproc) --target $PLATFORM --release -p ethstore-cli - - cargo build -j $(nproc) --target $PLATFORM --release -p ethkey-cli - - md5sum target/$PLATFORM/release/parity > parity.md5 - - export SHA3=$(target/$PLATFORM/release/parity tools hash target/$PLATFORM/release/parity) - - sh scripts/deb-build.sh i386 - - arm-linux-gnueabihf-strip target/$PLATFORM/release/parity - - arm-linux-gnueabihf-strip target/$PLATFORM/release/parity-evm - - arm-linux-gnueabihf-strip target/$PLATFORM/release/ethstore - - arm-linux-gnueabihf-strip target/$PLATFORM/release/ethkey - - export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h) - - md5sum target/$PLATFORM/release/parity > parity.md5 - - sh scripts/deb-build.sh armhf - - cp target/$PLATFORM/release/parity deb/usr/bin/parity - - cp target/$PLATFORM/release/parity-evm deb/usr/bin/parity-evm - - cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore - - cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_armhf.deb" - - md5sum "parity_"$VER"_armhf.deb" > "parity_"$VER"_armhf.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$PLATFORM - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity --body target/$PLATFORM/release/parity - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_armhf.deb" --body "parity_"$VER"_armhf.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_armhf.deb.md5" --body "parity_"$VER"_armhf.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + - scripts/gitlab-build.sh armv7-unknown-linux-gnueabihf armv7-unknown-linux-gnueabihf armhf arm-linux-gnueabihf-gcc arm-linux-gnueabihf-g++ tags: - - rust - rust-arm artifacts: paths: - - target/armv7-unknown-linux-gnueabihf/release/parity + - parity.zip name: "armv7_unknown_linux_gnueabihf_parity" - allow_failure: true linux-arm: stage: build image: parity/rust-arm:gitlab-ci @@ -340,52 +106,13 @@ linux-arm: - stable - triggers script: - - export CC=arm-linux-gnueabihf-gcc - - export CXX=arm-linux-gnueabihf-g++ - - export HOST_CC=gcc - - export HOST_CXX=g++ - - export PLATFORM=arm-unknown-linux-gnueabihf - - rm -rf .cargo - - mkdir -p .cargo - - echo "[target.$PLATFORM]" >> .cargo/config - - echo "linker= \"arm-linux-gnueabihf-gcc\"" >> .cargo/config - - cat .cargo/config - - cargo build -j $(nproc) --target $PLATFORM --features final --release $CARGOFLAGS - - cargo build -j $(nproc) --target $PLATFORM --release -p evmbin - - cargo build -j $(nproc) --target $PLATFORM --release -p ethstore-cli - - cargo build -j $(nproc) --target $PLATFORM --release -p ethkey-cli - - arm-linux-gnueabihf-strip target/$PLATFORM/release/parity - - arm-linux-gnueabihf-strip target/$PLATFORM/release/parity-evm - - arm-linux-gnueabihf-strip target/$PLATFORM/release/ethstore - - arm-linux-gnueabihf-strip target/$PLATFORM/release/ethkey - - export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h) - - md5sum target/$PLATFORM/release/parity > parity.md5 - - sh scripts/deb-build.sh armhf - - cp target/$PLATFORM/release/parity deb/usr/bin/parity - - cp target/$PLATFORM/release/parity-evm deb/usr/bin/parity-evm - - cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore - - cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_armhf.deb" - - md5sum "parity_"$VER"_armhf.deb" > "parity_"$VER"_armhf.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$PLATFORM - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity --body target/$PLATFORM/release/parity - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_armhf.deb" --body "parity_"$VER"_armhf.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_armhf.deb.md5" --body "parity_"$VER"_armhf.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + - scripts/gitlab-build.sh arm-unknown-linux-gnueabihf arm-unknown-linux-gnueabihf armhf arm-linux-gnueabihf-gcc arm-linux-gnueabihf-g++ tags: - - rust - rust-arm artifacts: paths: - - target/arm-unknown-linux-gnueabihf/release/parity + - parity.zip name: "arm-unknown-linux-gnueabihf_parity" - allow_failure: true linux-aarch64: stage: build image: parity/rust-arm64:gitlab-ci @@ -395,50 +122,29 @@ linux-aarch64: - stable - triggers script: - - export CC=aarch64-linux-gnu-gcc - - export CXX=aarch64-linux-gnu-g++ - - export HOST_CC=gcc - - export HOST_CXX=g++ - - export PLATFORM=aarch64-unknown-linux-gnu - - rm -rf .cargo - - mkdir -p .cargo - - echo "[target.$PLATFORM]" >> .cargo/config - - echo "linker= \"aarch64-linux-gnu-gcc\"" >> .cargo/config - - cat .cargo/config - - cargo build -j $(nproc) --target $PLATFORM --features final --release $CARGOFLAGS - - cargo build -j $(nproc) --target $PLATFORM --release -p evmbin - - cargo build -j $(nproc) --target $PLATFORM --release -p ethstore-cli - - cargo build -j $(nproc) --target $PLATFORM --release -p ethkey-cli - - aarch64-linux-gnu-strip target/$PLATFORM/release/parity - - aarch64-linux-gnu-strip target/$PLATFORM/release/parity-evm - - aarch64-linux-gnu-strip target/$PLATFORM/release/ethstore - - aarch64-linux-gnu-strip target/$PLATFORM/release/ethkey - - export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h) - - md5sum target/$PLATFORM/release/parity > parity.md5 - - sh scripts/deb-build.sh arm64 - - cp target/$PLATFORM/release/parity deb/usr/bin/parity - - cp target/$PLATFORM/release/parity-evm deb/usr/bin/parity-evm - - cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore - - cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey - - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - - dpkg-deb -b deb "parity_"$VER"_arm64.deb" - - md5sum "parity_"$VER"_arm64.deb" > "parity_"$VER"_arm64.deb.md5" - - aws configure set aws_access_key_id $s3_key - - aws configure set aws_secret_access_key $s3_secret - - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$PLATFORM - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity.md5 --body parity.md5 - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_arm64.deb" --body "parity_"$VER"_arm64.deb" - - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity_"$VER"_arm64.deb.md5" --body "parity_"$VER"_arm64.deb.md5" - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + - scripts/gitlab-build.sh aarch64-unknown-linux-gnu aarch64-unknown-linux-gnu arm64 aarch64-linux-gnu-gcc aarch64-linux-gnu-g++ tags: - - rust - rust-arm artifacts: paths: - - target/aarch64-unknown-linux-gnu/release/parity + - parity.zip name: "aarch64-unknown-linux-gnu_parity" +linux-snap: + stage: build + image: parity/snapcraft:gitlab-ci + only: + - stable + - beta + - tags + - triggers + script: + - scripts/gitlab-build.sh x86_64-unknown-snap-gnu x86_64-unknown-linux-gnu amd64 gcc g++ + tags: + - rust-stable + artifacts: + paths: + - scripts/parity_*_amd64.snap + name: "stable-x86_64-unknown-snap-gnu_parity" allow_failure: true darwin: stage: build @@ -447,41 +153,13 @@ darwin: - tags - stable - triggers - script: | - export COMMIT=$(git rev-parse HEAD) - export PLATFORM=x86_64-apple-darwin - rustup default stable - cargo clean - cargo build -j 8 --features final --release #$CARGOFLAGS - cargo build -j 8 --release -p ethstore-cli #$CARGOFLAGS - cargo build -j 8 --release -p ethkey-cli #$CARGOFLAGS - cargo build -j 8 --release -p evmbin #$CARGOFLAGS - rm -rf parity.md5 - md5sum target/release/parity > parity.md5 - export SHA3=$(target/release/parity tools hash target/release/parity) - cd mac - xcodebuild -configuration Release - cd .. - packagesbuild -v mac/Parity.pkgproj - productsign --sign 'Developer ID Installer: PARITY TECHNOLOGIES LIMITED (P2PX3JU8FT)' target/release/Parity\ Ethereum.pkg target/release/Parity\ Ethereum-signed.pkg - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") - mv target/release/Parity\ Ethereum-signed.pkg "parity-"$VER"-macos-installer.pkg" - md5sum "parity-"$VER"-macos-installer.pkg" >> "parity-"$VER"-macos-installer.pkg.md5" - aws configure set aws_access_key_id $s3_key - aws configure set aws_secret_access_key $s3_secret - if [[ $CI_BUILD_REF_NAME =~ ^(master|beta|stable|nightly)$ ]]; then export S3_BUCKET=builds-parity-published; else export S3_BUCKET=builds-parity; fi - aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$PLATFORM - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity --body target/release/parity - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/parity.md5 --body parity.md5 - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity-"$VER"-macos-installer.pkg" --body "parity-"$VER"-macos-installer.pkg" - aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$PLATFORM/"parity-"$VER"-macos-installer.pkg.md5" --body "parity-"$VER"-macos-installer.pkg.md5" - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM - curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM + script: + - scripts/gitlab-build.sh x86_64-apple-darwin x86_64-apple-darwin macos gcc g++ tags: - osx artifacts: paths: - - target/release/parity + - parity.zip name: "x86_64-apple-darwin_parity" windows: cache: @@ -494,62 +172,12 @@ windows: - stable - triggers script: - - set PLATFORM=x86_64-pc-windows-msvc - - set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;C:\vs2015\VC\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt - - set LIB=C:\vs2015\VC\lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64 - - set RUST_BACKTRACE=1 - - set RUSTFLAGS=%RUSTFLAGS% - - rustup default stable-x86_64-pc-windows-msvc - - cargo clean - - cargo build --features final --release #%CARGOFLAGS% - - cargo build --release -p ethstore-cli #%CARGOFLAGS% - - cargo build --release -p ethkey-cli #%CARGOFLAGS% - - cargo build --release -p evmbin #%CARGOFLAGS% - - signtool sign /f %keyfile% /p %certpass% target\release\parity.exe - - target\release\parity.exe tools hash target\release\parity.exe > parity.sha3 - - set /P SHA3= InstallParity.exe.md5 - - zip win-installer.zip InstallParity.exe InstallParity.exe.md5 - - md5sums win-installer.zip > win-installer.zip.md5 - - cd ..\target\release\ - - md5sums parity.exe > parity.exe.md5 - - zip parity.zip parity.exe parity.md5 - - md5sums parity.zip > parity.zip.md5 - - cd ..\.. - - aws configure set aws_access_key_id %s3_key% - - aws configure set aws_secret_access_key %s3_secret% - - echo %CI_BUILD_REF_NAME% - - echo %CI_BUILD_REF_NAME% | findstr /R "master" >nul 2>&1 && set S3_BUCKET=builds-parity-published|| set S3_BUCKET=builds-parity - - echo %CI_BUILD_REF_NAME% | findstr /R "beta" >nul 2>&1 && set S3_BUCKET=builds-parity-published|| set S3_BUCKET=builds-parity - - echo %CI_BUILD_REF_NAME% | findstr /R "stable" >nul 2>&1 && set S3_BUCKET=builds-parity-published|| set S3_BUCKET=builds-parity - - echo %CI_BUILD_REF_NAME% | findstr /R "nightly" >nul 2>&1 && set S3_BUCKET=builds-parity-published|| set S3_BUCKET=builds-parity - - echo %S3_BUCKET% - - aws s3 rm --recursive s3://%S3_BUCKET%/%CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/parity.exe --body target\release\parity.exe - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/parity.exe.md5 --body target\release\parity.exe.md5 - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/parity.zip --body target\release\parity.zip - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/parity.zip.md5 --body target\release\parity.zip.md5 - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/InstallParity.exe --body nsis\InstallParity.exe - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/InstallParity.exe.md5 --body nsis\InstallParity.exe.md5 - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/win-installer.zip --body nsis\win-installer.zip - - aws s3api put-object --bucket %S3_BUCKET% --key %CI_BUILD_REF_NAME%/x86_64-pc-windows-msvc/win-installer.zip.md5 --body nsis\win-installer.zip.md5 - - curl --data "commit=%CI_BUILD_REF%&sha3=%SHA3%&filename=parity.exe&secret=%RELEASES_SECRET%" http://update.parity.io:1337/push-build/%CI_BUILD_REF_NAME%/%PLATFORM% - - curl --data "commit=%CI_BUILD_REF%&sha3=%SHA3%&filename=parity.exe&secret=%RELEASES_SECRET%" http://update.parity.io:1338/push-build/%CI_BUILD_REF_NAME%/%PLATFORM% + - sh scripts/gitlab-build.sh x86_64-pc-windows-msvc x86_64-pc-windows-msvc installer "" "" "" tags: - rust-windows artifacts: paths: - - target/release/parity.exe - - target/release/parity.pdb - - nsis/InstallParity.exe + - parity.zip name: "x86_64-pc-windows-msvc_parity" docker-build: stage: build @@ -559,10 +187,10 @@ docker-build: before_script: - docker info script: - - if [ "$CI_BUILD_REF_NAME" == "beta-release" ]; then DOCKER_TAG="latest"; else DOCKER_TAG=$CI_BUILD_REF_NAME; fi + - DOCKER_TAG=$CI_BUILD_REF_NAME - echo "Tag:" $DOCKER_TAG - docker login -u $Docker_Hub_User_Parity -p $Docker_Hub_Pass_Parity - - sh scripts/docker-build.sh $DOCKER_TAG + - scripts/docker-build.sh $DOCKER_TAG - docker logout tags: - docker @@ -571,63 +199,16 @@ test-coverage: only: - master script: - - git submodule update --init --recursive - - rm -rf target/* - - rm -rf js/.coverage - - scripts/cov.sh - # - COVERAGE=$(grep -Po 'covered":.*?[^\\]"' target/cov/index.json | grep "[0-9]*\.[0-9]" -o) - # - echo "Coverage:" $COVERAGE + - scripts/gitlab-test.sh test-coverage tags: - kcov allow_failure: true -test-darwin: - stage: test - only: - - triggers - variables: - RUST_BACKTRACE: 1 - script: - - git submodule update --init --recursive - - if [ $RUST_FILES_MODIFIED -eq 0 ]; then echo "Skipping Rust tests since no Rust files modified."; else ./test.sh $CARGOFLAGS; fi - tags: - - osx - allow_failure: true -test-windows: - stage: test - only: - - triggers - variables: - RUST_BACKTRACE: 1 - script: - - git submodule update --init --recursive - - echo cargo test --features json-tests -p rlp -p ethash -p ethcore -p ethcore-bigint -p parity-dapps -p parity-rpc -p ethcore-util -p ethcore-network -p ethcore-io -p ethkey -p ethstore -p ethsync -p ethcore-ipc -p ethcore-ipc-tests -p ethcore-ipc-nano -p parity-rpc-client -p parity %CARGOFLAGS% --verbose --release - tags: - - rust-windows - allow_failure: true test-rust-stable: stage: test image: parity/rust:gitlab-ci - variables: - RUST_BACKTRACE: 1 script: - - git submodule update --init --recursive - - rustup show - - if [ $RUST_FILES_MODIFIED -eq 0 ]; then echo "Skipping Rust tests since no Rust files modified."; else ./test.sh $CARGOFLAGS; fi - - if [ "$CI_BUILD_REF_NAME" == "nightly" ]; then sh scripts/aura-test.sh; fi + - scripts/gitlab-test.sh stable tags: - - rust - - rust-stable -js-test: - stage: test - image: parity/rust:gitlab-ci - script: - - git submodule update --init --recursive - - if [ $JS_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS deps install since no JS files modified."; else ./js/scripts/install-deps.sh;fi - - if [ $JS_OLD_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS (old) deps install since no JS files modified."; else ./js-old/scripts/install-deps.sh;fi - - if [ $JS_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS lint since no JS files modified."; else ./js/scripts/lint.sh && ./js/scripts/test.sh && ./js/scripts/build.sh; fi - - if [ $JS_OLD_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS (old) lint since no JS files modified."; else ./js-old/scripts/lint.sh && ./js-old/scripts/test.sh && ./js-old/scripts/build.sh; fi - tags: - - rust - rust-stable test-rust-beta: stage: test @@ -635,14 +216,9 @@ test-rust-beta: - triggers - master image: parity/rust:gitlab-ci - variables: - RUST_BACKTRACE: 1 script: - - git submodule update --init --recursive - - rustup default beta - - if [ $RUST_FILES_MODIFIED -eq 0 ]; then echo "Skipping Rust tests since no Rust files modified."; else ./test.sh $CARGOFLAGS; fi + - scripts/gitlab-test.sh beta tags: - - rust - rust-beta allow_failure: true test-rust-nightly: @@ -651,16 +227,19 @@ test-rust-nightly: - triggers - master image: parity/rust:gitlab-ci - variables: - RUST_BACKTRACE: 1 script: - - git submodule update --init --recursive - - rustup default nightly - - if [ $RUST_FILES_MODIFIED -eq 0 ]; then echo "Skipping Rust tests since no Rust files modified."; else ./test.sh $CARGOFLAGS; fi + - scripts/gitlab-test.sh nightly tags: - rust - rust-nightly allow_failure: true +js-test: + stage: test + image: parity/rust:gitlab-ci + script: + - scripts/gitlab-test.sh js-test + tags: + - rust-stable js-release: stage: js-build only: @@ -671,16 +250,7 @@ js-release: - triggers image: parity/rust:gitlab-ci script: - - rustup default stable - - echo $JS_FILES_MODIFIED - - if [ $JS_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS deps install since no JS files modified."; else ./js/scripts/install-deps.sh;fi - - if [ $JS_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS rebuild since no JS files modified."; else ./js/scripts/build.sh && ./js/scripts/push-precompiled.sh; fi - - - echo $JS_OLD_FILES_MODIFIED - - if [ $JS_OLD_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS (old) deps install since no JS files modified."; else ./js-old/scripts/install-deps.sh;fi - - if [ $JS_OLD_FILES_MODIFIED -eq 0 ]; then echo "Skipping JS (old) rebuild since no JS files modified."; else ./js-old/scripts/build.sh && ./js-old/scripts/push-precompiled.sh; fi - - - if [ $JS_FILES_MODIFIED -eq 0 ] && [ $JS_OLD_FILES_MODIFIED -eq 0 ]; then echo "Skipping Cargo update since no JS files modified."; else ./js/scripts/push-cargo.sh; fi + - scripts/gitlab-test.sh js-release tags: - javascript push-release: @@ -695,13 +265,3 @@ push-release: - curl --data "secret=$RELEASES_SECRET" http://update.parity.io:1338/push-release/$CI_BUILD_REF_NAME/$CI_BUILD_REF tags: - curl - -# --------------------------------------------------------------------------- -.functions: &functions | - export JS_FILES_MODIFIED=$(git --no-pager diff --name-only master...$CI_BUILD_REF | grep ^js/ | wc -l) - export JS_OLD_FILES_MODIFIED=$(git --no-pager diff --name-only master...$CI_BUILD_REF | grep ^js-old/ | wc -l) - export RUST_FILES_MODIFIED=$(git --no-pager diff --name-only master...$CI_BUILD_REF | grep -v -e ^js -e ^\\. -e ^LICENSE -e ^README.md -e ^test.sh -e ^windows/ -e ^scripts/ -e^mac/ -e ^nsis/ | wc -l) - -before_script: - - *functions - diff --git a/mac/Parity Ethereum.xcodeproj/project.pbxproj b/mac/Parity Ethereum.xcodeproj/project.pbxproj index 913feec70..2e41be637 100644 --- a/mac/Parity Ethereum.xcodeproj/project.pbxproj +++ b/mac/Parity Ethereum.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 0ACF9AC71E30FAB600D5C935 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0ACF9AC51E30FAB600D5C935 /* MainMenu.xib */; }; 0AE564F11E3CE42C00BD01F7 /* GetBSDProcessList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */; }; 0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AED4D9F1E3E22F800BF87C0 /* ethstore */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 84CF92B3200E559900AD6E78 /* parity-evm in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84CF92B2200E559900AD6E78 /* parity-evm */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 84CF92B6200E56AE00AD6E78 /* ethkey in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84CF92B5200E56AE00AD6E78 /* ethkey */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -22,6 +24,8 @@ dstPath = ""; dstSubfolderSpec = 6; files = ( + 84CF92B6200E56AE00AD6E78 /* ethkey in CopyFiles */, + 84CF92B3200E559900AD6E78 /* parity-evm in CopyFiles */, 0AED4DA01E3E22F800BF87C0 /* ethstore in CopyFiles */, 0A7A475D1E3D2CDD0093D1AB /* parity in CopyFiles */, ); @@ -38,6 +42,8 @@ 0ACF9AC81E30FAB600D5C935 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0AE564F01E3CE42C00BD01F7 /* GetBSDProcessList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetBSDProcessList.swift; sourceTree = ""; }; 0AED4D9F1E3E22F800BF87C0 /* ethstore */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = ethstore; path = ../target/release/ethstore; sourceTree = ""; }; + 84CF92B2200E559900AD6E78 /* parity-evm */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = "parity-evm"; path = "../target/release/parity-evm"; sourceTree = ""; }; + 84CF92B5200E56AE00AD6E78 /* ethkey */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = ethkey; path = ../target/release/ethkey; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,6 +60,8 @@ 0ACF9AB51E30FAB600D5C935 = { isa = PBXGroup; children = ( + 84CF92B5200E56AE00AD6E78 /* ethkey */, + 84CF92B2200E559900AD6E78 /* parity-evm */, 0AED4D9F1E3E22F800BF87C0 /* ethstore */, 0A7A475C1E3D2CDD0093D1AB /* parity */, 0ACF9AC01E30FAB600D5C935 /* Parity Ethereum */, @@ -110,7 +118,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0820; ORGANIZATIONNAME = "Parity Technologies"; TargetAttributes = { 0ACF9ABD1E30FAB600D5C935 = { @@ -192,6 +200,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -241,6 +250,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/mac/Parity.pkgproj b/mac/Parity.pkgproj index 560f8b022..6c411d228 100755 --- a/mac/Parity.pkgproj +++ b/mac/Parity.pkgproj @@ -462,7 +462,7 @@ OVERWRITE_PERMISSIONS VERSION - 1.9.0 + 1.10.0 UUID 2DCD5B81-7BAF-4DA1-9251-6274B089FD36 diff --git a/mac/Parity/AppDelegate.swift b/mac/Parity/AppDelegate.swift index c017e79bd..d65c1d601 100644 --- a/mac/Parity/AppDelegate.swift +++ b/mac/Parity/AppDelegate.swift @@ -1,4 +1,4 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// Copyright 2015-2018 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify @@ -22,12 +22,12 @@ import Cocoa class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet weak var statusMenu: NSMenu! @IBOutlet weak var startAtLogonMenuItem: NSMenuItem! - + let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) var parityPid: Int32? = nil var commandLine: [String] = [] let defaultDefaults = "{\"fat_db\":false,\"mode\":\"passive\",\"mode.alarm\":3600,\"mode.timeout\":300,\"pruning\":\"fast\",\"tracing\":false}" - + func menuAppPath() -> String { return Bundle.main.executablePath! } @@ -40,20 +40,20 @@ class AppDelegate: NSObject, NSApplicationDelegate { return NSRunningApplication.runningApplications(withBundleIdentifier: Bundle.main.bundleIdentifier!).count > 1 } - + func isParityRunning() -> Bool { if let pid = self.parityPid { return kill(pid, 0) == 0 } return false } - + func killParity() { if let pid = self.parityPid { kill(pid, SIGKILL) } } - + func openUI() { let parity = Process() parity.launchPath = self.parityPath() @@ -61,29 +61,29 @@ class AppDelegate: NSObject, NSApplicationDelegate { parity.arguments!.append("ui") parity.launch() } - + func writeConfigFiles() { let basePath = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first? .appendingPathComponent(Bundle.main.bundleIdentifier!, isDirectory: true) - + if FileManager.default.fileExists(atPath: basePath!.path) { return } - + do { let defaultsFileDir = basePath?.appendingPathComponent("chains").appendingPathComponent("ethereum") let defaultsFile = defaultsFileDir?.appendingPathComponent("user_defaults") - + try FileManager.default.createDirectory(atPath: (defaultsFileDir?.path)!, withIntermediateDirectories: true, attributes: nil) if !FileManager.default.fileExists(atPath: defaultsFile!.path) { try defaultDefaults.write(to: defaultsFile!, atomically: false, encoding: String.Encoding.utf8) } - + let configFile = basePath?.appendingPathComponent("config.toml") } catch {} } - + func autostartEnabled() -> Bool { return itemReferencesInLoginItems().existingReference != nil } @@ -123,7 +123,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return (nil, nil) } - + func toggleLaunchAtStartup() { let itemReferences = itemReferencesInLoginItems() let shouldBeToggled = (itemReferences.existingReference == nil) @@ -155,7 +155,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { func launchParity() { self.commandLine = CommandLine.arguments.dropFirst().filter({ $0 != "ui"}) - + let processes = GetBSDProcessList()! let parityProcess = processes.index(where: { var name = $0.kp_proc.p_comm @@ -166,7 +166,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return str == "parity" }) - + if parityProcess == nil { let parity = Process() let p = self.parityPath() @@ -178,7 +178,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { self.parityPid = processes[parityProcess!].kp_proc.p_pid } } - + func applicationDidFinishLaunching(_ aNotification: Notification) { if self.isAlreadyRunning() { openUI() @@ -188,12 +188,12 @@ class AppDelegate: NSObject, NSApplicationDelegate { self.writeConfigFiles() self.launchParity() - Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: {_ in + Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: {_ in if !self.isParityRunning() { NSApplication.shared().terminate(self) } }) - + let icon = NSImage(named: "statusIcon") icon?.isTemplate = true // best for dark mode statusItem.image = icon @@ -206,19 +206,18 @@ class AppDelegate: NSObject, NSApplicationDelegate { } return true } - + @IBAction func quitClicked(_ sender: NSMenuItem) { self.killParity() NSApplication.shared().terminate(self) } - + @IBAction func openClicked(_ sender: NSMenuItem) { self.openUI() } - + @IBAction func startAtLogonClicked(_ sender: NSMenuItem) { self.toggleLaunchAtStartup() } } - diff --git a/mac/Parity/Assets.xcassets/AppIcon.appiconset/Parity.png b/mac/Parity/Assets.xcassets/AppIcon.appiconset/Parity.png index 97d5fd189..a7f085dab 100644 Binary files a/mac/Parity/Assets.xcassets/AppIcon.appiconset/Parity.png and b/mac/Parity/Assets.xcassets/AppIcon.appiconset/Parity.png differ diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png index 040d444e2..75767ebd7 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-1.png differ diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png index 3a4d72b29..6a1106f5f 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity-2.png differ diff --git a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png index 194799988..dfbda8ea3 100644 Binary files a/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png and b/mac/Parity/Assets.xcassets/statusIcon.imageset/Parity.png differ diff --git a/mac/Parity/GetBSDProcessList.swift b/mac/Parity/GetBSDProcessList.swift index 6ee1956e7..6737787be 100644 --- a/mac/Parity/GetBSDProcessList.swift +++ b/mac/Parity/GetBSDProcessList.swift @@ -1,4 +1,4 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. +// Copyright 2015-2018 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify @@ -21,21 +21,21 @@ import Foundation import Darwin public func GetBSDProcessList() -> ([kinfo_proc]?) { - + var done = false var result: [kinfo_proc]? var err: Int32 - + repeat { let name = [CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0]; let namePointer = name.withUnsafeBufferPointer { UnsafeMutablePointer(mutating: $0.baseAddress) } var length: Int = 0 - + err = sysctl(namePointer, u_int(name.count), nil, &length, nil, 0) if err == -1 { err = errno } - + if err == 0 { let count = length / MemoryLayout.stride result = [kinfo_proc](repeating: kinfo_proc(), count: count) @@ -54,6 +54,6 @@ public func GetBSDProcessList() -> ([kinfo_proc]?) { } } } while err == 0 && !done - + return result } diff --git a/mac/install-readme.txt b/mac/install-readme.txt index a68d18ae9..51f0330bb 100644 --- a/mac/install-readme.txt +++ b/mac/install-readme.txt @@ -3,8 +3,6 @@ Parity Wallet Welcome to Parity Wallet, your all-in-one Ethereum node and wallet. -WARNING: This installer is **EXPERIMENTAL**. Use it at your own risk. - -If you continue, Parity will be installed as a user service. You will be able to use the Parity Wallet through your browser by using the menu bar icon, following the shortcut in the Launchpad or navigating to http://localhost:8080/ in your browser. +If you continue, Parity will be installed as a user service. You will be able to use the Parity Wallet through your browser by using the menu bar icon, following the shortcut in the Launchpad or navigating to http://localhost:8180/ in your browser. Parity is distributed under the terms of the GPL. diff --git a/mac/uninstall-parity.sh b/mac/uninstall-parity.sh index a1575308b..840dba1f6 100755 --- a/mac/uninstall-parity.sh +++ b/mac/uninstall-parity.sh @@ -9,5 +9,4 @@ fi PLIST=~/Library/LaunchAgents/io.parity.ethereum.plist su $SUDO_USER -c "launchctl stop io.parity.ethereum" su $SUDO_USER -c "launchctl unload $PLIST" -rm -f /usr/local/libexec/parity /usr/local/libexec/uninstall-parity.sh /usr/local/bin/ethstore $PLIST - +rm -f /usr/local/libexec/parity /usr/local/libexec/uninstall-parity.sh /usr/local/bin/ethstore /usr/local/bin/ethkey /usr/local/bin/parity-evm $PLIST diff --git a/nsis/installer.nsi b/nsis/installer.nsi index 1e93b2255..03daf3bc2 100644 --- a/nsis/installer.nsi +++ b/nsis/installer.nsi @@ -6,17 +6,17 @@ !define SYNC_TERM 0x00100001 !define APPNAME "Parity" -!define COMPANYNAME "Parity" +!define COMPANYNAME "Parity Technologies" !define DESCRIPTION "Fast, light, robust Ethereum implementation" !define VERSIONMAJOR 1 -!define VERSIONMINOR 9 +!define VERSIONMINOR 10 !define VERSIONBUILD 0 !define ARGS "" !define FIRST_START_ARGS "--mode=passive ui" !addplugindir .\ -!define HELPURL "https://github.com/paritytech/parity/wiki" # "Support Information" link +!define HELPURL "https://paritytech.github.io/wiki/" # "Support Information" link !define UPDATEURL "https://github.com/paritytech/parity/releases" # "Product Updates" link !define ABOUTURL "https://github.com/paritytech/parity" # "Publisher" link !define INSTALLSIZE 26120 @@ -88,14 +88,13 @@ section "install" !insertmacro TerminateApp # Files added here should be removed by the uninstaller (see section "uninstall") - file /oname=parity.exe ..\target\release\parity.exe + file /oname=parity.exe ..\target\x86_64-pc-windows-msvc\release\parity.exe + file /oname=parity-evm.exe ..\target\x86_64-pc-windows-msvc\release\parity-evm.exe + file /oname=ethstore.exe ..\target\x86_64-pc-windows-msvc\release\ethstore.exe + file /oname=ethkey.exe ..\target\x86_64-pc-windows-msvc\release\ethkey.exe file /oname=ptray.exe ..\windows\ptray\x64\Release\ptray.exe file "logo.ico" - file vc_redist.x64.exe - - ExecWait '"$INSTDIR\vc_redist.x64.exe" /passive /norestart' - delete $INSTDIR\vc_redist.x64.exe # Add any other files for the install directory (license files, app data, etc) here # Uninstaller - See function un.onInit and section "uninstall" for configuration @@ -167,6 +166,9 @@ section "uninstall" # Remove files delete $INSTDIR\parity.exe + delete $INSTDIR\parity-evm.exe + delete $INSTDIR\ethstore.exe + delete $INSTDIR\ethkey.exe delete $INSTDIR\ptray.exe delete $INSTDIR\logo.ico @@ -187,4 +189,3 @@ section "uninstall" DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "${APPNAME}" DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${APPNAME}" sectionEnd - diff --git a/scripts/cov.sh b/scripts/cov.sh index 9be89a3df..bd733703c 100755 --- a/scripts/cov.sh +++ b/scripts/cov.sh @@ -12,42 +12,21 @@ ### Running coverage set -x - -KCOV=${1:-kcov} - -if ! type $KCOV > /dev/null; then - echo "Install kcov first (details inside this file). Aborting." - exit 1 -fi - -RUSTFLAGS="-C link-dead-code" cargo test --all --exclude parity-ipfs-api --exclude evmjit --no-run || exit $? - - +RUSTFLAGS="-C link-dead-code" cargo test --all --exclude evmjit --no-run || exit $? KCOV_TARGET="target/cov" KCOV_FLAGS="--verify" -EXCLUDE="/usr/lib,\ -/usr/include,\ -$HOME/.cargo,\ -$HOME/.multirust,\ -rocksdb,\ -secp256k1 -" - -rm -rf $KCOV_TARGET +EXCLUDE="/usr/lib,/usr/include,$HOME/.cargo,$HOME/.multirust,rocksdb,secp256k1" mkdir -p $KCOV_TARGET echo "Cover RUST" for FILE in `find target/debug/deps ! -name "*.*"` -do - $KCOV --exclude-pattern $EXCLUDE $KCOV_FLAGS $KCOV_TARGET $FILE -done - -$KCOV --exclude-pattern $EXCLUDE $KCOV_FLAGS $KCOV_TARGET target/debug/parity-* + do + timeout --signal=SIGKILL 5m kcov --exclude-pattern $EXCLUDE $KCOV_FLAGS $KCOV_TARGET $FILE + done +timeout --signal=SIGKILL 5m kcov --exclude-pattern $EXCLUDE $KCOV_FLAGS $KCOV_TARGET target/debug/parity-* echo "Cover JS" cd js npm install&&npm run test:coverage cd .. -codecov bash <(curl -s https://codecov.io/bash)&& echo "Uploaded code coverage" - exit 0 diff --git a/scripts/gitlab-build.sh b/scripts/gitlab-build.sh new file mode 100755 index 000000000..876658822 --- /dev/null +++ b/scripts/gitlab-build.sh @@ -0,0 +1,292 @@ +#!/bin/bash + +set -e # fail on any error +set -u # treat unset variables as error +#ARGUMENTS: 1. BUILD_PLATFORM (target for binaries) 2. PLATFORM (target for cargo) 3. ARC (architecture) 4. & 5. CC & CXX flags +BUILD_PLATFORM=$1 +PLATFORM=$2 +ARC=$3 +CC=$4 +CXX=$5 +VER="$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n")" +S3WIN="" +echo "--------------------" +echo "Build for platform: " $BUILD_PLATFORM +echo "Cargo target: " $PLATFORM +echo "CC&CXX flags: " $CC ", " $CXX +echo "Architecture: " $ARC +echo "Libssl version: " $LIBSSL +echo "Parity version: " $VER +echo "Branch: " $CI_BUILD_REF_NAME +echo "--------------------" + +set_env () { + echo "Set ENVIROMENT" + export HOST_CC=gcc + export HOST_CXX=g++ + rm -rf .cargo + mkdir -p .cargo + echo "[target.$PLATFORM]" >> .cargo/config + echo "linker= \"$CC\"" >> .cargo/config + cat .cargo/config +} +set_env_win () { + set PLATFORM=x86_64-pc-windows-msvc + set INCLUDE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;C:\vs2015\VC\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" + set LIB="C:\vs2015\VC\lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64" + set RUST_BACKTRACE=1 + #export RUSTFLAGS=$RUSTFLAGS + rustup default stable-x86_64-pc-windows-msvc + echo "MsBuild.exe windows\ptray\ptray.vcxproj /p:Platform=x64 /p:Configuration=Release" > msbuild.cmd + echo "@ signtool sign /f "\%"1 /p "\%"2 /tr http://timestamp.comodoca.com /du https://parity.io "\%"3" > sign.cmd +} +build () { + echo "Build parity:" + cargo build --target $PLATFORM --features final --release + echo "Build evmbin:" + cargo build --target $PLATFORM --release -p evmbin + echo "Build ethstore-cli:" + cargo build --target $PLATFORM --release -p ethstore-cli + echo "Build ethkey-cli:" + cargo build --target $PLATFORM --release -p ethkey-cli +} +strip_md5 () { + echo "Strip binaries:" + $STRIP_BIN -v target/$PLATFORM/release/parity + $STRIP_BIN -v target/$PLATFORM/release/parity-evm + $STRIP_BIN -v target/$PLATFORM/release/ethstore + $STRIP_BIN -v target/$PLATFORM/release/ethkey; + export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h) + echo "Checksum calculation:" + rm -rf *.md5 + export SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity -p %h) + echo "Parity file SHA3:" $SHA3 + md5sum target/$PLATFORM/release/parity > parity.md5 + md5sum target/$PLATFORM/release/parity-evm > parity-evm.md5 + md5sum target/$PLATFORM/release/ethstore > ethstore.md5 + md5sum target/$PLATFORM/release/ethkey > ethkey.md5 +} +make_deb () { + rm -rf deb + echo "create DEBIAN files" + mkdir -p deb/usr/bin/ + mkdir -p deb/DEBIAN + echo "create copyright, docs, compat" + cp LICENSE deb/DEBIAN/copyright + echo "https://github.com/paritytech/parity/wiki" >> deb/DEBIAN/docs + echo "8" >> deb/DEBIAN/compat + echo "create control file" + control=deb/DEBIAN/control + echo "Package: parity" >> $control + echo "Version: $VER" >> $control + echo "Source: parity" >> $control + echo "Section: science" >> $control + echo "Priority: extra" >> $control + echo "Maintainer: Parity Technologies " >> $control + echo "Build-Depends: debhelper (>=9)" >> $control + echo "Standards-Version: 3.9.5" >> $control + echo "Homepage: https://parity.io" >> $control + echo "Vcs-Git: git://github.com/paritytech/parity.git" >> $control + echo "Vcs-Browser: https://github.com/paritytech/parity" >> $control + echo "Architecture: $ARC" >> $control + echo "Depends: $LIBSSL" >> $control + echo "Description: Ethereum network client by Parity Technologies" >> $control + size=`du deb/|awk 'END {print $1}'` + echo "Installed-Size: $size" >> $control + echo "build .deb package" + cp target/$PLATFORM/release/parity deb/usr/bin/parity + cp target/$PLATFORM/release/parity-evm deb/usr/bin/parity-evm + cp target/$PLATFORM/release/ethstore deb/usr/bin/ethstore + cp target/$PLATFORM/release/ethkey deb/usr/bin/ethkey + dpkg-deb -b deb "parity_"$VER"_"$ARC".deb" + md5sum "parity_"$VER"_"$ARC".deb" > "parity_"$VER"_"$ARC".deb.md5" +} +make_rpm () { + rm -rf /install + mkdir -p /install/usr/bin + cp target/$PLATFORM/release/parity /install/usr/bin + cp target/$PLATFORM/release/parity-evm /install/usr/bin/parity-evm + cp target/$PLATFORM/release/ethstore /install/usr/bin/ethstore + cp target/$PLATFORM/release/ethkey /install/usr/bin/ethkey + fpm -s dir -t rpm -n parity -v $VER --epoch 1 --license GPLv3 -d openssl --provides parity --url https://parity.io --vendor "Parity Technologies" -a x86_64 -m "" --description "Ethereum network client by Parity Technologies" -C /install/ + cp "parity-"$VER"-1."$ARC".rpm" "parity_"$VER"_"$ARC".rpm" + md5sum "parity_"$VER"_"$ARC".rpm" > "parity_"$VER"_"$ARC".rpm.md5" +} +make_pkg () { + echo "make PKG" + cp target/$PLATFORM/release/parity target/release/parity + cp target/$PLATFORM/release/parity-evm target/release/parity-evm + cp target/$PLATFORM/release/ethstore target/release/ethstore + cp target/$PLATFORM/release/ethkey target/release/ethkey + cd mac + xcodebuild -configuration Release + cd .. + packagesbuild -v mac/Parity.pkgproj + productsign --sign 'Developer ID Installer: PARITY TECHNOLOGIES LIMITED (P2PX3JU8FT)' target/release/Parity\ Ethereum.pkg target/release/Parity\ Ethereum-signed.pkg + mv target/release/Parity\ Ethereum-signed.pkg "parity_"$VER"_"$ARC".pkg" + md5sum "parity_"$VER"_"$ARC"."$EXT >> "parity_"$VER"_"$ARC".pkg.md5" +} +make_exe () { + ./sign.cmd $keyfile $certpass "target/$PLATFORM/release/parity.exe" + SHA3=$(rhash --sha3-256 target/$PLATFORM/release/parity.exe -p %h) + echo "Checksum calculation:" + rm -rf *.md5 + echo "Parity file SHA3:" $SHA3 + rhash --md5 target/$PLATFORM/release/parity.exe -p %h > parity.exe.md5 + rhash --md5 target/$PLATFORM/release/parity-evm.exe -p %h > parity-evm.exe.md5 + rhash --md5 target/$PLATFORM/release/ethstore.exe -p %h > ethstore.exe.md5 + rhash --md5 target/$PLATFORM/release/ethkey.exe -p %h > ethkey.exe.md5 + ./msbuild.cmd + ./sign.cmd $keyfile $certpass windows/ptray/x64/release/ptray.exe + cd nsis + curl -sL --url "https://github.com/paritytech/win-build/raw/master/vc_redist.x64.exe" -o vc_redist.x64.exe + echo "makensis.exe installer.nsi" > nsis.cmd + ./nsis.cmd + cd .. + cp nsis/installer.exe "parity_"$VER"_"$ARC"."$EXT + ./sign.cmd $keyfile $certpass "parity_"$VER"_"$ARC"."$EXT + rhash --md5 "parity_"$VER"_"$ARC"."$EXT -p %h > "parity_"$VER"_"$ARC"."$EXT".md5" +} +push_binaries () { + echo "Push binaries to AWS S3" + aws configure set aws_access_key_id $s3_key + aws configure set aws_secret_access_key $s3_secret + if [[ "$CI_BUILD_REF_NAME" = "master" || "$CI_BUILD_REF_NAME" = "beta" || "$CI_BUILD_REF_NAME" = "stable" || "$CI_BUILD_REF_NAME" = "nightly" ]]; + then + export S3_BUCKET=builds-parity-published; + else + export S3_BUCKET=builds-parity; + fi + aws s3 rm --recursive s3://$S3_BUCKET/$CI_BUILD_REF_NAME/$BUILD_PLATFORM + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity$S3WIN --body target/$PLATFORM/release/parity$S3WIN + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity$S3WIN.md5 --body parity$S3WIN.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity-evm$S3WIN --body target/$PLATFORM/release/parity-evm$S3WIN + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity-evm$S3WIN.md5 --body parity-evm$S3WIN.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethstore$S3WIN --body target/$PLATFORM/release/ethstore$S3WIN + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethstore$S3WIN.md5 --body ethstore$S3WIN.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethkey$S3WIN --body target/$PLATFORM/release/ethkey$S3WIN + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethkey$S3WIN.md5 --body ethkey$S3WIN.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/"parity_"$VER"_"$ARC"."$EXT --body "parity_"$VER"_"$ARC"."$EXT + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/"parity_"$VER"_"$ARC"."$EXT".md5" --body "parity_"$VER"_"$ARC"."$EXT".md5" +} +make_archive () { + echo "add artifacts to archive" + rm -rf parity.zip + zip -r parity.zip target/$PLATFORM/release/parity$S3WIN target/$PLATFORM/release/parity-evm$S3WIN target/$PLATFORM/release/ethstore$S3WIN target/$PLATFORM/release/ethkey$S3WIN parity$S3WIN.md5 parity-evm$S3WIN.md5 ethstore$S3WIN.md5 ethkey$S3WIN.md5 +} +push_release () { + echo "push release" + curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1337/push-build/$CI_BUILD_REF_NAME/$PLATFORM + curl --data "commit=$CI_BUILD_REF&sha3=$SHA3&filename=parity&secret=$RELEASES_SECRET" http://update.parity.io:1338/push-build/$CI_BUILD_REF_NAME/$PLATFORM +} +case $BUILD_PLATFORM in + x86_64-unknown-linux-gnu) + #set strip bin + STRIP_BIN="strip" + #package extention + EXT="deb" + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-unknown-debian-gnu) + STRIP_BIN="strip" + EXT="deb" + LIBSSL="libssl1.1 (>=1.1.0)" + echo "Use libssl1.1 (>=1.1.0) for Debian builds" + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-unknown-centos-gnu) + STRIP_BIN="strip" + EXT="rpm" + build + strip_md5 + make_rpm + make_archive + push_binaries + push_release + ;; + i686-unknown-linux-gnu) + STRIP_BIN="strip" + EXT="deb" + set_env + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + armv7-unknown-linux-gnueabihf) + STRIP_BIN="arm-linux-gnueabihf-strip" + EXT="deb" + set_env + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + arm-unknown-linux-gnueabihf) + STRIP_BIN="arm-linux-gnueabihf-strip" + EXT="deb" + set_env + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + aarch64-unknown-linux-gnu) + STRIP_BIN="aarch64-linux-gnu-strip" + EXT="deb" + set_env + build + strip_md5 + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-apple-darwin) + STRIP_BIN="strip" + PLATFORM="x86_64-apple-darwin" + EXT="pkg" + build + strip_md5 + make_pkg + make_archive + push_binaries + push_release + ;; + x86_64-unknown-snap-gnu) + cd snap + ARC="amd64" + EXT="snap" + rm -rf *snap + sed -i 's/master/'"$VER"'/g' snapcraft.yaml + snapcraft + cp "parity_"$CI_BUILD_REF_NAME"_amd64.snap" "parity_"$VER"_amd64.snap" + md5sum "parity_"$VER"_amd64.snap" > "parity_"$VER"_amd64.snap.md5" + push_binaries + ;; + x86_64-pc-windows-msvc) + set_env_win + EXT="exe" + S3WIN=".exe" + build + make_exe + make_archive + push_binaries + push_release +esac diff --git a/scripts/gitlab-test.sh b/scripts/gitlab-test.sh new file mode 100755 index 000000000..1d7e18806 --- /dev/null +++ b/scripts/gitlab-test.sh @@ -0,0 +1,102 @@ +#!/bin/bash +#ARGUMENT test for RUST, JS, COVERAGE or JS_RELEASE +set -e # fail on any error +set -u # treat unset variables as error + +export JS_FILES_MODIFIED="$(git --no-pager diff --name-only $GIT_COMPARE...$CI_COMMIT_SHA | grep ^js/ | wc -l)" +export JS_OLD_FILES_MODIFIED="$(git --no-pager diff --name-only $GIT_COMPARE...$CI_COMMIT_SHA | grep ^js-old/ | wc -l)" +export RUST_FILES_MODIFIED="$(git --no-pager diff --name-only $GIT_COMPARE...$CI_COMMIT_SHA | grep -v -e ^js -e ^\\. -e ^LICENSE -e ^README.md -e ^test.sh -e ^windows/ -e ^scripts/ -e ^mac/ -e ^nsis/ | wc -l)" +echo "RUST_FILES_MODIFIED: $RUST_FILES_MODIFIED" +echo "JS_FILES_MODIFIED: $JS_FILES_MODIFIED" +echo "JS_OLD_FILES_MODIFIED: $JS_OLD_FILES_MODIFIED" +if [[ "$CI_COMMIT_REF_NAME" = "beta" || "$CI_COMMIT_REF_NAME" = "stable" ]]; then + export GIT_COMPARE=$CI_COMMIT_REF_NAME; +else + export GIT_COMPARE=master; +fi +echo "RUST_FILES_MODIFIED: $RUST_FILES_MODIFIED" +echo "JS_FILES_MODIFIED: $JS_FILES_MODIFIED" +echo "JS_OLD_FILES_MODIFIED: $JS_OLD_FILES_MODIFIED" +TEST_SWITCH=$1 +rust_test () { + git submodule update --init --recursive + rustup show + if [[ "${RUST_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping Rust tests since no Rust files modified."; + else ./test.sh; + fi + if [[ "$CI_COMMIT_REF_NAME" == "nightly" ]]; + then sh scripts/aura-test.sh; + fi +} +js_test () { + git submodule update --init --recursive + if [[ "${JS_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS deps install since no JS files modified."; + else ./js/scripts/install-deps.sh; + fi + if [[ "${JS_OLD_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS (old) deps install since no JS files modified."; + else ./js-old/scripts/install-deps.sh; + fi + if [[ "${JS_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS lint since no JS files modified."; + else ./js/scripts/lint.sh && ./js/scripts/test.sh && ./js/scripts/build.sh; + fi + if [[ "${JS_OLD_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS (old) lint since no JS files modified."; + else ./js-old/scripts/lint.sh && ./js-old/scripts/test.sh && ./js-old/scripts/build.sh; + fi +} +js_release () { + rustup default stable + if [[ "${JS_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS deps install since no JS files modified."; + else ./js/scripts/install-deps.sh; + fi + if [[ "${JS_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS rebuild since no JS files modified."; + else ./js/scripts/build.sh && ./js/scripts/push-precompiled.sh; + fi + if [[ "${JS_OLD_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS (old) deps install since no JS files modified."; + else ./js-old/scripts/install-deps.sh; + fi + if [[ "${JS_OLD_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping JS (old) rebuild since no JS files modified."; + else ./js-old/scripts/build.sh && ./js-old/scripts/push-precompiled.sh; + fi + if [[ "${JS_FILES_MODIFIED}" == "0" ]] && [[ "${JS_OLD_FILES_MODIFIED}" == "0" ]]; + then echo "Skipping Cargo update since no JS files modified."; + else ./js/scripts/push-cargo.sh; + fi +} +coverage_test () { + git submodule update --init --recursive + rm -rf target/* + rm -rf js/.coverage + scripts/cov.sh +} +case $TEST_SWITCH in + stable ) + rustup default stable + rust_test + ;; + beta) + rustup default beta + rust_test + ;; + nightly) + rustup default nightly + rust_test + ;; + js-test) + js_test + ;; + js-release) + js_release + ;; + test-coverage) + coverage_test + ;; +esac diff --git a/scripts/snapcraft.yaml b/scripts/snapcraft.yaml index bd71df3de..3f4cf80ea 100644 --- a/scripts/snapcraft.yaml +++ b/scripts/snapcraft.yaml @@ -17,6 +17,6 @@ apps: parts: parity: - source: .. + source: . plugin: rust - build-packages: [g++, libudev-dev, libssl-dev, make, pkg-config] \ No newline at end of file + build-packages: [g++, libudev-dev, libssl-dev, make, pkg-config]