From f400a7e1718dddd77f4d60f65c91134dbbfb3a4a Mon Sep 17 00:00:00 2001 From: "Denis S. Soldatov aka General-Beck" Date: Wed, 10 Jan 2018 05:58:12 +0300 Subject: [PATCH] .gitlab-ci cleanup Resolves issue #4226 #7086 ci #63 close PR #7506 --- .gitlab-ci.yml | 483 +++++----------------------------------- scripts/gitlab-build.sh | 287 ++++++++++++++++++++++++ 2 files changed, 345 insertions(+), 425 deletions(-) create mode 100644 scripts/gitlab-build.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6a64c9110..88703d21c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,9 @@ variables: RUSTFLAGS: "" CARGOFLAGS: "" CI_SERVER_NAME: "GitLab CI" + LIBSSL: "libssl1.0.0 (>=1.0.0)" + CC: gcc + CXX: g++ cache: key: "$CI_BUILD_STAGE/$CI_BUILD_REF_NAME" untracked: true @@ -22,77 +25,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 + - sh scripts/gitlab-build.sh x86_64-unknown-linux-gnu x86_64-unknown-linux-gnu amd64 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,40 +42,13 @@ 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.0 (>=1.1.0)" + - sh scripts/gitlab-build.sh x86_64-unknown-debian-gnu x86_64-unknown-linux-gnu amd64 tags: - - rust - rust-debian artifacts: paths: - - target/release/parity + - parity.zip name: "stable-x86_64-unknown-debian-gnu_parity" linux-beta: stage: build @@ -146,15 +59,12 @@ linux-beta: - stable - triggers script: - - rustup default beta - - cargo build -j $(nproc) --release $CARGOFLAGS - - strip target/release/parity + - sh scripts/gitlab-build.sh rust-beta x86_64-unknown-linux-gnu tags: - - rust - rust-beta artifacts: paths: - - target/release/parity + - parity.zip name: "beta-x86_64-unknown-linux-gnu_parity" allow_failure: true linux-nightly: @@ -166,15 +76,12 @@ linux-nightly: - stable - triggers script: - - rustup default nightly - - cargo build -j $(nproc) --release $CARGOFLAGS - - strip target/release/parity + - sh scripts/gitlab-build.sh rust-nightly x86_64-unknown-linux-gnu tags: - - rust - rust-nightly artifacts: paths: - - target/release/parity + - parity.zip name: "nigthly-x86_64-unknown-linux-gnu_parity" allow_failure: true linux-centos: @@ -186,42 +93,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 + - sh scripts/gitlab-build.sh x86_64-unknown-centos-gnu x86_64-unknown-linux-gnu tags: - - rust - rust-centos artifacts: paths: - - target/release/parity + - parity.zip name: "x86_64-unknown-centos-gnu_parity" linux-i686: stage: build @@ -232,47 +109,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 + - sh scripts/gitlab-build.sh i686-unknown-linux-gnu i686-unknown-linux-gnu i386 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 +125,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 + - sh 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 +141,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 + - sh 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 +157,30 @@ 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 + - sh 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: + - snap + - stable + - beta + - tags + - triggers + script: + - sh scripts/gitlab-build.sh x86_64-unknown-snap-gnu + 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 +189,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: + - sh scripts/gitlab-build.sh x86_64-apple-darwin x86_64-apple-darwin macos tags: - osx artifacts: paths: - - target/release/parity + - parity.zip name: "x86_64-apple-darwin_parity" windows: cache: @@ -494,61 +208,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% + - scripts/gitlab-build.sh x86_64-pc-windows-msvc tags: - rust-windows artifacts: paths: - target/release/parity.exe - - target/release/parity.pdb - nsis/InstallParity.exe name: "x86_64-pc-windows-msvc_parity" docker-build: @@ -575,35 +240,9 @@ test-coverage: - 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 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 @@ -615,19 +254,6 @@ test-rust-stable: - 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 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 @@ -642,7 +268,6 @@ test-rust-beta: - rustup default beta - if [ $RUST_FILES_MODIFIED -eq 0 ]; then echo "Skipping Rust tests since no Rust files modified."; else ./test.sh $CARGOFLAGS; fi tags: - - rust - rust-beta allow_failure: true test-rust-nightly: @@ -661,6 +286,17 @@ test-rust-nightly: - rust - rust-nightly allow_failure: true +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-stable js-release: stage: js-build only: @@ -675,11 +311,9 @@ js-release: - 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 tags: - javascript @@ -698,10 +332,9 @@ push-release: # --------------------------------------------------------------------------- .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) + JS_FILES_MODIFIED=$(git --no-pager diff --name-only master...$CI_BUILD_REF | grep ^js/ | wc -l) + JS_OLD_FILES_MODIFIED=$(git --no-pager diff --name-only master...$CI_BUILD_REF | grep ^js-old/ | wc -l) + 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/scripts/gitlab-build.sh b/scripts/gitlab-build.sh new file mode 100644 index 000000000..ee68e1761 --- /dev/null +++ b/scripts/gitlab-build.sh @@ -0,0 +1,287 @@ +#!/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. & 4. CC & CXX flags +# 5. ARC (architecture) 6.EXT (package extention) +BUILD_PLATFORM=$1 +PLATFORM=$2 +ARC=$3 +CC=$4 +CXX=$5 +EXT=deb +VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n") +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 "Package: " $EXT +echo "Parity version: " $VER +echo "Branch: " $CI_BUILD_REF_NAME +echo "--------------------" +echo "RUST:" rustup show +echo "Cargo:" cargo -V +echo "NODEJS:" nodejs -v +echo "NPM:" npm -v + +set_env () { + echo "Set ENVIROMENT" + HOST_CC=gcc + HOST_CXX=g++ + rm -rf .cargo + mkdir -p .cargo + echo "[target.$PLATFORM]" >> .cargo/config + echo "linker= \"$CC\"" >> .cargo/config + cat .cargo/config +} +build () { + echo "Build parity:" + cargo build --target $PLATFORM --features final --release $CARGOFLAGS + echo "Build evmbin:" + cargo build --target $PLATFORM --release -p evmbin + echo "Build ethstore-cli:" + cargo build --target $PLATFORM --release -p ethstore-cli + echo "Build ethkep-cli:" + cargo build --target $PLATFORM --release -p ethkey-cli + 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 + echo "Checksum calculation:" + rm -rf *.md5 + export SHA3=$(target/$PLATFORM/release/parity tools hash target/$PLATFORM/release/parity) + 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_pkg () { + echo "make PKG" + cd mac + xcodebuild -configuration Release + cd .. + packagesbuild -v mac/Parity.pkgproj + productsign --sign 'Developer ID Installer: PARITY TECHNOLOGIES LIMITED (P2PX3JU8FT)' target/$PLATFORM/release/Parity\ Ethereum.pkg target/$PLATFORM/release/Parity\ Ethereum-signed.pkg + mv target/$PLATFORM/release/Parity\ Ethereum-signed.pkg "parity-"$VER"_"$ARC".pkg" + md5sum "parity-"$VER"_"$ARC"."$EXT >> "parity-"$VER"_"$ARC".pkg.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 --body target/$PLATFORM/release/parity + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity.md5 --body parity.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity-evm --body target/$PLATFORM/release/parity-evm + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/parity-evm.md5 --body parity-evm.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethstore --body target/$PLATFORM/release/ethstore + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethstore.md5 --body ethstore.md5 + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethkey --body target/$PLATFORM/release/ethkey + aws s3api put-object --bucket $S3_BUCKET --key $CI_BUILD_REF_NAME/$BUILD_PLATFORM/ethkey.md5 --body ethkey.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 target/$PLATFORM/release/parity-evm target/$PLATFORM/release/ethstore target/$PLATFORM/release/ethkey parity.md5 parity-evm.md5 ethstore.md5 ethkey.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 +} +windows () { + 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 +} +case $BUILD_PLATFORM in + x86_64-unknown-linux-gnu) + #set strip bin + STRIP_BIN="strip" + build + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-unknown-debian-gnu) + STRIP_BIN="strip" + LIBSSL: "libssl1.1.0 (>=1.1.0)" + echo "Use libssl1.1.0 (>=1.1.0) for Debian builds" + build + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-unknown-centos-gnu) + STRIP_BIN="strip" + build + make_archive + push_binaries + push_release + ;; + i686-unknown-linux-gnu) + STRIP_BIN="strip" + set_env + build + make_deb + make_archive + push_binaries + push_release + ;; + armv7-unknown-linux-gnueabihf) + STRIP_BIN="arm-linux-gnueabihf-strip" + set_env + build + make_deb + make_archive + push_binaries + push_release + ;; + arm-unknown-linux-gnueabihf) + STRIP_BIN="arm-linux-gnueabihf-strip" + set_env + build + make_deb + make_archive + push_binaries + push_release + ;; + aarch64-unknown-linux-gnu) + STRIP_BIN="aarch64-linux-gnu-strip" + set_env + build + make_deb + make_archive + push_binaries + push_release + ;; + x86_64-apple-darwin) + STRIP_BIN="strip" + PLATFORM="x86_64-apple-darwin" + EXT="pkg" + build + 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 + ;; + rust_beta) + rustup default beta + export STRIP_BIN="strip" + build + make_archive + ;; + rust_nightly) + rustup default nightly + export STRIP_BIN="strip" + build + make_archive + ;; + x86_64-pc-windows-msvc) + windows + push_release +esac