From 82b37bfa0d063284ef4bb089d179e0c14838d558 Mon Sep 17 00:00:00 2001 From: adria0 Date: Wed, 29 Jul 2020 11:45:51 +0200 Subject: [PATCH] Add github actions --- .github/workflows/audit.yml | 18 + .github/workflows/build-test.yml | 99 +++++ .github/workflows/build.yml | 338 ++++++++++++++++ .github/workflows/check.yml | 86 ++++ .github/workflows/fmt.yml | 20 + .gitlab-ci.yml | 370 ------------------ scripts/actions/build-linux.sh | 22 ++ scripts/actions/build-windows.sh | 21 + scripts/actions/clean-target.sh | 8 + scripts/actions/install-sccache.ps1 | 19 + .../validate-chainspecs.sh | 0 scripts/gitlab/build-linux.sh | 63 --- scripts/gitlab/build-windows.sh | 51 --- scripts/gitlab/publish-av-whitelists.sh | 25 -- scripts/gitlab/publish-docs.sh | 77 ---- scripts/gitlab/publish-onchain.sh | 33 -- scripts/gitlab/publish-snap.sh | 46 --- scripts/gitlab/rust-changes.sh | 30 -- scripts/gitlab/safe-curl.sh | 19 - scripts/gitlab/sign-win.cmd | 1 - scripts/gitlab/test-cpp.sh | 21 - scripts/gitlab/test-linux.sh | 24 -- 22 files changed, 631 insertions(+), 760 deletions(-) create mode 100644 .github/workflows/audit.yml create mode 100644 .github/workflows/build-test.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/check.yml create mode 100644 .github/workflows/fmt.yml delete mode 100644 .gitlab-ci.yml create mode 100755 scripts/actions/build-linux.sh create mode 100755 scripts/actions/build-windows.sh create mode 100755 scripts/actions/clean-target.sh create mode 100755 scripts/actions/install-sccache.ps1 rename scripts/{gitlab => actions}/validate-chainspecs.sh (100%) delete mode 100755 scripts/gitlab/build-linux.sh delete mode 100755 scripts/gitlab/build-windows.sh delete mode 100755 scripts/gitlab/publish-av-whitelists.sh delete mode 100755 scripts/gitlab/publish-docs.sh delete mode 100755 scripts/gitlab/publish-onchain.sh delete mode 100755 scripts/gitlab/publish-snap.sh delete mode 100755 scripts/gitlab/rust-changes.sh delete mode 100755 scripts/gitlab/safe-curl.sh delete mode 100755 scripts/gitlab/sign-win.cmd delete mode 100755 scripts/gitlab/test-cpp.sh delete mode 100755 scripts/gitlab/test-linux.sh diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml new file mode 100644 index 000000000..4c6b7e224 --- /dev/null +++ b/.github/workflows/audit.yml @@ -0,0 +1,18 @@ +name: Security audit +on: + pull_request: + paths: Cargo.lock + schedule: + - cron: '0 0 * * *' +jobs: + security_audit: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v1 + with: + fetch-depth: 50 + - name: Run cargo audit + uses: actions-rs/audit-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml new file mode 100644 index 000000000..a8357e5e9 --- /dev/null +++ b/.github/workflows/build-test.yml @@ -0,0 +1,99 @@ +name: Build and Test Suite + +on: + pull_request: + push: + branches: + - master + - stable +jobs: + build-tests: + name: Test and Build + env: + SCCACHE_CACHE_SIZE: "1G" + SCCACHE_IDLE_TIMEOUT: 0 + strategy: + matrix: + platform: + - ubuntu-20.04 + - macos-latest + - windows-latest + toolchain: + - stable + runs-on: ${{ matrix.platform }} + steps: + - name: Checkout sources + uses: actions/checkout@master + with: + submodules: true + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + profile: minimal + override: true + - name: Cache cargo registry + uses: actions/cache@v2 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-cargo-registry-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo index + uses: actions/cache@v2 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-cargo-git-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo build + uses: actions/cache@v2 + with: + path: target + key: ${{ runner.os }}-cargo-build-target-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache linux + if: matrix.platform == 'ubuntu-20.04' + uses: actions/cache@v2 + with: + path: "/home/runner/.cache/sccache" + key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache MacOS + if: matrix.platform == 'macos-latest' + uses: actions/cache@v2 + with: + path: "/Users/runner/Library/Caches/Mozilla.sccache" + key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache Windows + if: matrix.platform == 'windows-latest' + uses: actions/cache@v2 + with: + path: "C:\\Users\\runneradmin\\AppData\\Local\\Mozilla\\sccache\\cache" + key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }} + - name: Install sccache for ${{ matrix.platform }} + shell: pwsh + run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}} + - name: Install LLVM for Windows + if: matrix.platform == 'windows-latest' + run: choco install llvm + - name: Sccache statistics + run: sccache --show-stats + - name: Build tests + uses: actions-rs/cargo@v1 + with: + command: test + args: --locked --all --release --features "json-tests" --verbose --no-run + - name: Run tests for ${{ matrix.platform }} + if: matrix.platform == 'windows-latest' + continue-on-error: true #Skip step if Windows tests failure + uses: actions-rs/cargo@v1 + with: + command: test + args: --locked --all --release --features "json-tests" --verbose + - name: Run tests for ${{ matrix.platform }} + if: matrix.platform != 'windows-latest' + uses: actions-rs/cargo@v1 + with: + command: test + args: --locked --all --release --features "json-tests" --verbose + - name: Stop sccache + if: always() + run: sccache --stop-server + - name: Prepare build directory for cache + shell: bash + run: bash scripts/actions/clean-target.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..610cfe488 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,338 @@ +name: Build Release Suite + +on: + push: + branches: + - stable + tags: + - v* + +jobs: + build: + name: Build Release + env: + SCCACHE_CACHE_SIZE: "1G" + SCCACHE_IDLE_TIMEOUT: 0 + AWS_S3_ARTIFACTS_BUCKET: "openethereum-releases" + AWS_REGION: "us-east-1" + strategy: + matrix: + platform: + - ubuntu-20.04 + - macos-latest + - windows-latest + toolchain: + - stable + runs-on: ${{ matrix.platform }} + steps: + - name: Checkout sources + uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + profile: minimal + override: true + - name: Cache cargo registry + uses: actions/cache@v2 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-cargo-registry-build-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo index + uses: actions/cache@v2 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-cargo-git-build-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo build + uses: actions/cache@v2 + with: + path: target + key: ${{ runner.os }}-cargo-build-target-build-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache linux + if: matrix.platform == 'ubuntu-20.04' + uses: actions/cache@v2 + with: + path: "/home/runner/.cache/sccache" + key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache MacOS + if: matrix.platform == 'macos-latest' + uses: actions/cache@v2 + with: + path: "/Users/runner/Library/Caches/Mozilla.sccache" + key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }} + - name: Cache sccache Windows + if: matrix.platform == 'windows-latest' + uses: actions/cache@v2 + with: + path: "C:\\Users\\runneradmin\\AppData\\Local\\Mozilla\\sccache\\cache" + key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }} + - name: Install sccache for ${{ matrix.platform }} + shell: pwsh + run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}} + + # ============================== + # Windows Build + # ============================== + + - name: Install LLVM for Windows + if: matrix.platform == 'windows-latest' + run: choco install llvm + + - name: Sccache statistics + run: sccache --show-stats + + - name: Build OpenEthereum for Windows + if: matrix.platform == 'windows-latest' + run: sh scripts/actions/build-windows.sh ${{matrix.platform}} + + - name: Upload Windows build + uses: actions/upload-artifact@v2 + if: matrix.platform == 'windows-latest' + with: + name: windows-artifacts + path: artifacts + + # ============================== + # Linux/Macos Build + # ============================== + + - name: Build OpenEthereum for ${{matrix.platform}} + if: matrix.platform != 'windows-latest' + run: sh scripts/actions/build-linux.sh ${{matrix.platform}} + + - name: Upload Linux build + uses: actions/upload-artifact@v2 + if: matrix.platform == 'ubuntu-20.04' + with: + name: linux-artifacts + path: artifacts + + - name: Upload MacOS build + uses: actions/upload-artifact@v2 + if: matrix.platform == 'macos-latest' + with: + name: macos-artifacts + path: artifacts + + # ============================== + # End builds + # ============================== + + - name: Stop sccache + if: always() + run: sccache --stop-server + + - name: Prepare build directory for cache + shell: bash + run: bash scripts/actions/clean-target.sh + + zip-artifacts-creator: + name: Create zip artifacts + needs: build + runs-on: ubuntu-20.04 + steps: + - name: Set env + run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF#refs/*/} + + # ============================== + # Create ZIP files + # ============================== + + - name: Download Windows artifacts + uses: actions/download-artifact@v2 + with: + name: windows-artifacts + path: windows-artifacts + + - name: Download Linux artifacts + uses: actions/download-artifact@v2 + with: + name: linux-artifacts + path: linux-artifacts + + - name: Download MacOS artifacts + uses: actions/download-artifact@v2 + with: + name: macos-artifacts + path: macos-artifacts + + - name: Display structure of downloaded files + run: ls + + - name: Create zip Linux + id: create_zip_linux + run: | + cd linux-artifacts/ + zip -rT openethereum-linux-${{ env.RELEASE_VERSION }}.zip * + ls openethereum-linux-${{ env.RELEASE_VERSION }}.zip + cd .. + mv linux-artifacts/openethereum-linux-${{ env.RELEASE_VERSION }}.zip . + + echo "Setting outputs..." + echo ::set-output name=LINUX_ARTIFACT::openethereum-linux-${{ env.RELEASE_VERSION }}.zip + echo ::set-output name=LINUX_SHASUM::$(shasum -a 256 openethereum-linux-${{ env.RELEASE_VERSION }}.zip | awk '{print $1}') + + - name: Create zip MacOS + id: create_zip_macos + run: | + cd macos-artifacts/ + zip -rT openethereum-macos-${{ env.RELEASE_VERSION }}.zip * + ls openethereum-macos-${{ env.RELEASE_VERSION }}.zip + cd .. + mv macos-artifacts/openethereum-macos-${{ env.RELEASE_VERSION }}.zip . + + echo "Setting outputs..." + echo ::set-output name=MACOS_ARTIFACT::openethereum-macos-${{ env.RELEASE_VERSION }}.zip + echo ::set-output name=MACOS_SHASUM::$(shasum -a 256 openethereum-macos-${{ env.RELEASE_VERSION }}.zip | awk '{print $1}') + + - name: Create zip Windows + id: create_zip_windows + run: | + cd windows-artifacts/ + zip -rT openethereum-windows-${{ env.RELEASE_VERSION }}.zip * + ls openethereum-windows-${{ env.RELEASE_VERSION }}.zip + cd .. + mv windows-artifacts/openethereum-windows-${{ env.RELEASE_VERSION }}.zip . + + echo "Setting outputs..." + echo ::set-output name=WINDOWS_ARTIFACT::openethereum-windows-${{ env.RELEASE_VERSION }}.zip + echo ::set-output name=WINDOWS_SHASUM::$(shasum -a 256 openethereum-windows-${{ env.RELEASE_VERSION }}.zip | awk '{print $1}') + + # ======================================================================= + # Upload artifacts + # This is required to share artifacts between different jobs + # ======================================================================= + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: openethereum-linux-${{ env.RELEASE_VERSION }}.zip + path: openethereum-linux-${{ env.RELEASE_VERSION }}.zip + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: openethereum-macos-${{ env.RELEASE_VERSION }}.zip + path: openethereum-macos-${{ env.RELEASE_VERSION }}.zip + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: openethereum-windows-${{ env.RELEASE_VERSION }}.zip + path: openethereum-windows-${{ env.RELEASE_VERSION }}.zip + + # ======================================================================= + # Upload artifacts to S3 + # This is required by some software distribution systems which require + # artifacts to be downloadable, like Brew on MacOS. + # ======================================================================= + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Copy files to S3 with the AWS CLI + run: | + # Deploy zip artifacts to S3 bucket to a directory whose name is the tagged release version. + # Deploy macos binary artifact (if required, add more `aws s3 cp` commands to deploy specific OS versions) + aws s3 cp macos-artifacts/openethereum s3://${{ env.AWS_S3_ARTIFACTS_BUCKET }}/${{ env.RELEASE_VERSION }}/macos/ + + outputs: + linux-artifact: ${{ steps.create_zip_linux.outputs.LINUX_ARTIFACT }} + linux-shasum: ${{ steps.create_zip_linux.outputs.LINUX_SHASUM }} + macos-artifact: ${{ steps.create_zip_macos.outputs.MACOS_ARTIFACT }} + macos-shasum: ${{ steps.create_zip_macos.outputs.MACOS_SHASUM }} + windows-artifact: ${{ steps.create_zip_windows.outputs.WINDOWS_ARTIFACT }} + windows-shasum: ${{ steps.create_zip_windows.outputs.WINDOWS_SHASUM }} + + draft-release: + name: Draft Release + needs: zip-artifacts-creator + runs-on: ubuntu-20.04 + steps: + - name: Set env + run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF#refs/*/} + + # ============================== + # Download artifacts + # ============================== + + - name: Download artifacts + uses: actions/download-artifact@v2 + with: + name: openethereum-linux-${{ env.RELEASE_VERSION }}.zip + + - name: Download artifacts + uses: actions/download-artifact@v2 + with: + name: openethereum-macos-${{ env.RELEASE_VERSION }}.zip + + - name: Download artifacts + uses: actions/download-artifact@v2 + with: + name: openethereum-windows-${{ env.RELEASE_VERSION }}.zip + + - name: Display structure of downloaded files + run: ls + + # ============================== + # Create release draft + # ============================== + + - name: Create Release Draft + id: create_release_draft + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ github.ref }} + release_name: OpenEthereum ${{ github.ref }} + body: | + This release contains + + | System | Architecture | Binary | Sha256 Checksum | + |:---:|:---:|:---:|:---| + | Apple Icon by Pixel Perfect from https://www.flaticon.com/authors/pixel-perfect | x64 | [${{ needs.zip-artifacts-creator.outputs.macos-artifact }}](https://github.com/openethereum/openethereum/releases/download/${{ env.RELEASE_VERSION }}/${{ needs.zip-artifacts-creator.outputs.macos-artifact }}) | `${{ needs.zip-artifacts-creator.outputs.macos-shasum }}` | + | Linux Icon by Pixel Perfect from https://www.flaticon.com/authors/pixel-perfect | x64 | [${{ needs.zip-artifacts-creator.outputs.linux-artifact }}](https://github.com/openethereum/openethereum/releases/download/${{ env.RELEASE_VERSION }}/${{ needs.zip-artifacts-creator.outputs.linux-artifact }}) | `${{ needs.zip-artifacts-creator.outputs.linux-shasum }}` | + | Windows Icon by Pixel Perfect from https://www.flaticon.com/authors/pixel-perfect | x64 | [${{ needs.zip-artifacts-creator.outputs.windows-artifact }}](https://github.com/openethereum/openethereum/releases/download/${{ env.RELEASE_VERSION }}/${{ needs.zip-artifacts-creator.outputs.windows-artifact }}) | `${{ needs.zip-artifacts-creator.outputs.windows-shasum }}` | + | | | | | + | **System** | **Option** | - | **Resource** | + | Settings Icon by Pixel Perfect from https://www.flaticon.com/authors/pixel-perfect | Docker | - | [hub.docker.com/r/openethereum/openethereum](https://hub.docker.com/r/openethereum/openethereum) | + + draft: true + prerelease: true + + - name: Upload Release Asset - Linux + id: upload_release_asset_linux + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release_draft.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./openethereum-linux-${{ env.RELEASE_VERSION }}.zip + asset_name: openethereum-linux-${{ env.RELEASE_VERSION }}.zip + asset_content_type: application/zip + + - name: Upload Release Asset - MacOS + id: upload_release_asset_macos + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release_draft.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./openethereum-macos-${{ env.RELEASE_VERSION }}.zip + asset_name: openethereum-macos-${{ env.RELEASE_VERSION }}.zip + asset_content_type: application/zip + + - name: Upload Release Asset - Windows + id: upload_release_asset_windows + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release_draft.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ./openethereum-windows-${{ env.RELEASE_VERSION }}.zip + asset_name: openethereum-windows-${{ env.RELEASE_VERSION }}.zip + asset_content_type: application/zip diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 000000000..03edc614f --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,86 @@ +name: Check + +on: + pull_request: + push: + branches: + - master + - stable +jobs: + check: + name: Check + runs-on: ubuntu-20.04 + env: + SCCACHE_CACHE_SIZE: "1G" + SCCACHE_IDLE_TIMEOUT: 0 + steps: + - name: Checkout sources + uses: actions/checkout@master + with: + submodules: true + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + - name: Cache cargo registry + uses: actions/cache@v2 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo index + uses: actions/cache@v2 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} + - name: Cache cargo build + uses: actions/cache@v2 + with: + path: target + key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + # Install sccache based on https://github.com/denoland/rusty_v8/blob/master/.github/workflows/ci.yml#L69 + - name: Cache sccache + uses: actions/cache@v2 + with: + path: "/home/runner/.cache/sccache" + key: ${{ runner.os }}-sccache-check-${{ hashFiles('**/Cargo.lock') }} + - name: Install sccache for Linux + shell: pwsh + run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}} + - name: Sccache statistics + run: sccache --show-stats + - name: Run cargo check 1/3 + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --no-default-features --verbose + - name: Run cargo check 2/3 + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --manifest-path util/io/Cargo.toml --no-default-features --verbose + - name: Run cargo check 3/3 + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --manifest-path util/io/Cargo.toml --features "mio" --verbose + - name: Run cargo check evmbin + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked -p evmbin --verbose + - name: Run cargo check benches + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --all --benches --verbose + - name: Run validate chainspecs + run: ./scripts/actions/validate-chainspecs.sh + - name: Stop sccache + if: always() + run: sccache --stop-server + continue-on-error: true + - name: Prepare build directory for cache + shell: bash + run: bash scripts/actions/clean-target.sh diff --git a/.github/workflows/fmt.yml b/.github/workflows/fmt.yml new file mode 100644 index 000000000..a22d8fce7 --- /dev/null +++ b/.github/workflows/fmt.yml @@ -0,0 +1,20 @@ +on: [push, pull_request] + +name: rustfmt + +jobs: + fmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - run: rustup component add rustfmt + - uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check --config merge_imports=true diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 495817a77..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,370 +0,0 @@ -stages: - - test - - build - - publish - - optional - -image: ${REGISTRY}/parity-ci-linux:latest - -variables: - GIT_STRATEGY: fetch - GIT_SUBMODULE_STRATEGY: recursive - CI_SERVER_NAME: "GitLab CI" - CARGO_HOME: "/ci-cache/${CI_PROJECT_NAME}/cargo/${CI_JOB_NAME}" - CARGO_TARGET: x86_64-unknown-linux-gnu - REGISTRY: registry.parity.io/parity/infrastructure/scripts - -.releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries") - only: &releaseable_branches - - stable - - beta - - tags - - schedules - -.collect_artifacts: &collect_artifacts - artifacts: - name: "${CI_JOB_NAME}_${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" - when: on_success - expire_in: 1 mos - paths: - - artifacts/ - - tools/ - -.docker-cache-status: &docker-cache-status - variables: - CARGO_HOME: "/ci-cache/parity-ethereum/cargo/${CI_JOB_NAME}" - dependencies: [] - before_script: - - rustup show - - cargo --version - retry: - max: 2 - when: - - runner_system_failure - - unknown_failure - - api_failure - tags: - - linux-docker - -.build-on-linux: &build-on-linux - stage: build - <<: *docker-cache-status - <<: *collect_artifacts - script: - - scripts/gitlab/build-linux.sh - after_script: - - mkdir -p tools - - cp -r scripts/docker/hub/* ./tools - - cp scripts/gitlab/publish-snap.sh ./tools - - cp scripts/gitlab/publish-onchain.sh ./tools - - cp scripts/gitlab/safe-curl.sh ./tools - - echo v"$(sed -r -n '1,/^version/s/^version\s*=\s*"([^"]+)".*$/\1/p' Cargo.toml)" | - tee ./tools/VERSION - - echo "$(sed -r -n '1,/^track/s/^track\s*=\s*"([^"]+)".*$/\1/p' ./util/version/Cargo.toml)" | - tee ./tools/TRACK - - -cargo-check 0 3: - stage: test - <<: *docker-cache-status - script: - - time cargo check --target $CARGO_TARGET --locked --no-default-features --verbose --color=always - - sccache --show-stats - -cargo-check 1 3: - stage: test - <<: *docker-cache-status - script: - - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --no-default-features --verbose --color=always - - sccache --show-stats - -cargo-check 2 3: - stage: test - <<: *docker-cache-status - script: - - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --features "mio" --verbose --color=always - - sccache --show-stats - -cargo-check-evmbin: - stage: test - <<: *docker-cache-status - script: - - time cargo check -p evmbin --target $CARGO_TARGET --locked --verbose --color=always - - sccache --show-stats - -cargo-check-benches: - stage: test - <<: *docker-cache-status - script: - - time cargo check --all --benches --target $CARGO_TARGET --locked --verbose --color=always - - sccache --show-stats - -cargo-audit: - stage: test - <<: *docker-cache-status - script: - - cargo audit - allow_failure: true # failed cargo audit shouldn't prevent a PR from being merged - -validate-chainspecs: - stage: test - <<: *docker-cache-status - script: - - ./scripts/gitlab/validate-chainspecs.sh - -test-cpp: - stage: build - <<: *docker-cache-status - script: - - ./scripts/gitlab/test-cpp.sh - -test-linux: - stage: build - <<: *docker-cache-status - script: - - ./scripts/gitlab/test-linux.sh stable - -test-linux-beta: - stage: build - only: *releaseable_branches - <<: *docker-cache-status - script: - - ./scripts/gitlab/test-linux.sh beta - -test-linux-nightly: - stage: build - only: *releaseable_branches - <<: *docker-cache-status - script: - - ./scripts/gitlab/test-linux.sh nightly - allow_failure: true - -build-android: - <<: *build-on-linux - image: ${REGISTRY}/parity-ci-android:stretch - variables: - CARGO_TARGET: armv7-linux-androideabi - -build-linux: - <<: *build-on-linux - only: *releaseable_branches - -build-linux-i386: - <<: *build-on-linux - only: *releaseable_branches - image: ${REGISTRY}/parity-ci-i386:latest - variables: - CARGO_TARGET: i686-unknown-linux-gnu - -build-linux-arm64: - <<: *build-on-linux - only: *releaseable_branches - image: ${REGISTRY}/parity-ci-arm64:latest - variables: - CARGO_TARGET: aarch64-unknown-linux-gnu - -build-linux-armhf: - <<: *build-on-linux - only: *releaseable_branches - image: ${REGISTRY}/parity-ci-armhf:latest - variables: - CARGO_TARGET: armv7-unknown-linux-gnueabihf - -build-darwin: - stage: build - <<: *collect_artifacts - only: *releaseable_branches - variables: - CARGO_TARGET: x86_64-apple-darwin - CARGO_HOME: "${CI_PROJECT_DIR}/.cargo" - CC: gcc - CXX: g++ - script: - - scripts/gitlab/build-linux.sh - tags: - - rust-osx - -build-windows: - stage: build - <<: *collect_artifacts - only: *releaseable_branches - variables: - CARGO_TARGET: x86_64-pc-windows-msvc - CARGO_HOME: "C:/ci-cache/parity-ethereum/cargo/$CI_JOB_NAME" - GIT_SUBMODULE_STRATEGY: none - script: - - sh scripts/gitlab/build-windows.sh - tags: - - rust-windows - -publish-docker: - stage: publish - only: *releaseable_branches - except: - - nightly - when: manual - dependencies: - - build-linux - environment: - name: parity-build - cache: {} - image: docker:stable - services: - - docker:dind - variables: - GIT_STRATEGY: none - DOCKER_HOST: tcp://localhost:2375 - DOCKER_DRIVER: overlay2 - GIT_STRATEGY: none - # DOCKERFILE: tools/Dockerfile - # CONTAINER_IMAGE: parity/parity - script: - - ./tools/publish-docker.sh - tags: - - kubernetes-parity-build - -publish-snap-nightly: &publish-snap - stage: publish - only: - - nightly - image: snapcore/snapcraft - variables: - GIT_STRATEGY: none - BUILD_ARCH: amd64 - cache: {} - dependencies: - - build-linux - tags: - - linux-docker - script: - - ./tools/publish-snap.sh - -publish-snap-manually: - <<: *publish-snap - only: *releaseable_branches - when: manual - -publish-snap-i386-nightly: &publish-snap-i386 - <<: *publish-snap - variables: - BUILD_ARCH: i386 - CARGO_TARGET: i686-unknown-linux-gnu - dependencies: - - build-linux-i386 - -publish-snap-i386-manually: - <<: *publish-snap-i386 - only: *releaseable_branches - when: manual - -publish-snap-arm64-nightly: &publish-snap-arm64 - <<: *publish-snap - variables: - BUILD_ARCH: arm64 - CARGO_TARGET: aarch64-unknown-linux-gnu - dependencies: - - build-linux-arm64 - -publish-snap-arm64-manually: - <<: *publish-snap-arm64 - only: *releaseable_branches - when: manual - -publish-snap-armhf-nightly: &publish-snap-armhf - <<: *publish-snap - variables: - BUILD_ARCH: armhf - CARGO_TARGET: armv7-unknown-linux-gnueabihf - dependencies: - - build-linux-armhf - -publish-snap-armhf-manually: - <<: *publish-snap-armhf - only: *releaseable_branches - when: manual - -publish-onchain-nightly: &publish-onchain - stage: publish - only: - - nightly - cache: {} - variables: - GIT_STRATEGY: none - dependencies: - - build-linux - - build-darwin - - build-windows - script: - - ./tools/publish-onchain.sh - tags: - - linux-docker - -publish-onchain-manually: - <<: *publish-onchain - only: *releaseable_branches - when: manual - -publish-release-awss3-nightly: &publish-release-awss3 - image: ${REGISTRY}/awscli:latest - stage: publish - only: - - nightly - variables: - GIT_STRATEGY: none - cache: {} - dependencies: - - build-linux - - build-darwin - - build-windows - script: - - echo "__________Push binaries to AWS S3____________" - - case "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" in - (beta|stable|nightly) - export BUCKET=releases.parity.io/ethereum; - ;; - (*) - export BUCKET=builds-parity; - ;; - esac - - aws s3 sync ./artifacts s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/ - - echo "__________Read from S3____________" - - aws s3 ls s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} --recursive --human-readable --summarize - tags: - - linux-docker - -publish-release-awss3-manually: - <<: *publish-release-awss3 - only: *releaseable_branches - when: manual - -publish-docs: - stage: publish - image: ${REGISTRY}/parity-ci-docs:latest - only: - - tags - except: - - nightly - when: manual - cache: {} - dependencies: [] - script: - - scripts/gitlab/publish-docs.sh - tags: - - linux-docker - allow_failure: true - -publish-av-whitelist: - stage: publish - variables: - GIT_STRATEGY: none - only: *releaseable_branches - except: - - nightly - when: manual - cache: {} - dependencies: - - build-windows - script: - - scripts/gitlab/publish-av-whitelists.sh - tags: - - linux-docker diff --git a/scripts/actions/build-linux.sh b/scripts/actions/build-linux.sh new file mode 100755 index 000000000..994d2afa7 --- /dev/null +++ b/scripts/actions/build-linux.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e # fail on any error +set -u # treat unset variables as error +#strip ON +export RUSTFLAGS=" -Clink-arg=-s -Ctarget-feature=+aes,+sse2,+ssse3" + +echo "_____ Build OpenEthereum and tools _____" + +time cargo build --verbose --color=always --release --features final +time cargo build --verbose --color=always --release -p evmbin +time cargo build --verbose --color=always --release -p ethstore-cli +time cargo build --verbose --color=always --release -p ethkey-cli + +echo "_____ Post-processing binaries _____" +rm -rf artifacts/* +mkdir -p artifacts/ + +cp -v target/release/parity artifacts/parity +cp -v target/release/parity-evm artifacts/parity-evm +cp -v target/release/ethstore artifacts/ethstore +cp -v target/release/ethkey artifacts/ethkey diff --git a/scripts/actions/build-windows.sh b/scripts/actions/build-windows.sh new file mode 100755 index 000000000..1082747a8 --- /dev/null +++ b/scripts/actions/build-windows.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -e # fail on any error +set -u # treat unset variables as error +# NOTE: Enables the aes-ni instructions for RustCrypto dependency. +# If you change this please remember to also update .cargo/config +export RUSTFLAGS=" -Ctarget-feature=+aes,+sse2,+ssse3 -Ctarget-feature=+crt-static -Clink-arg=-s" + +echo "_____ Build Parity and tools _____" +time cargo build --verbose --release --features final +time cargo build --verbose --release -p evmbin +time cargo build --verbose --release -p ethstore-cli +time cargo build --verbose --release -p ethkey-cli + +echo "_____ Post-processing binaries _____" +rm -rf artifacts +mkdir -p artifacts + +cp --verbose target/release/parity.exe artifacts/parity.exe +cp --verbose target/release/parity-evm.exe artifacts/parity-evm.exe +cp --verbose target/release/ethstore.exe artifacts/ethstore.exe +cp --verbose target/release/ethkey.exe artifacts/ethkey.exe diff --git a/scripts/actions/clean-target.sh b/scripts/actions/clean-target.sh new file mode 100755 index 000000000..6d161d5c2 --- /dev/null +++ b/scripts/actions/clean-target.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e # fail on any error +set -u # treat unset variables as error + +find ./target/release -maxdepth 1 -type f -delete; +rm -fr ./target/release/{deps,.fingerprint}/*{parity,ethcore,ethkey,ethstore,parity-evm}*; +rm -f ./target/.rustc_info.json; diff --git a/scripts/actions/install-sccache.ps1 b/scripts/actions/install-sccache.ps1 new file mode 100755 index 000000000..b170f473d --- /dev/null +++ b/scripts/actions/install-sccache.ps1 @@ -0,0 +1,19 @@ +#!/usr/bin/env pwsh +$os=$args[0] +$version="0.2.12" +echo "Current OS:" $os +switch ($os){ + "macOS" {$platform = "x86_64-apple-darwin"} + "Linux" {$platform = "x86_64-unknown-linux-musl"} + "Windows" {$platform ="x86_64-pc-windows-msvc"} +} +echo "Target arch: " $platform +$basename = "sccache-$version-$platform" +$url = "https://github.com/mozilla/sccache/releases/download/"+"$version/$basename.tar.gz" +echo "Download sccache from "+$url +curl -LO $url +tar -xzvf "$basename.tar.gz" +ls $basename/ +. $basename/sccache --start-server +echo "::add-path::$(pwd)/$basename" +echo "::set-env name=RUSTC_WRAPPER::sccache" diff --git a/scripts/gitlab/validate-chainspecs.sh b/scripts/actions/validate-chainspecs.sh similarity index 100% rename from scripts/gitlab/validate-chainspecs.sh rename to scripts/actions/validate-chainspecs.sh diff --git a/scripts/gitlab/build-linux.sh b/scripts/gitlab/build-linux.sh deleted file mode 100755 index 21c455a08..000000000 --- a/scripts/gitlab/build-linux.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -set -e # fail on any error -set -u # treat unset variables as error - -export CC="sccache "$CC -export CXX="sccache "$CXX -echo "__________Show ENVIROMENT__________" -echo "CI_SERVER_NAME: " $CI_SERVER_NAME -echo "CARGO_HOME: " $CARGO_HOME -echo "CARGO_TARGET: " $CARGO_TARGET -echo "CC: " $CC -echo "CXX: " $CXX -#strip ON -export RUSTFLAGS=" -C link-arg=-s" - -echo "_____ Building target: "$CARGO_TARGET" _____" -if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ] -then - time cargo build --target $CARGO_TARGET --verbose --color=always --release -p parity-clib --features final -else - if [ "${CARGO_TARGET}" = "x86_64-unknown-linux-gnu" ] || [ "${CARGO_TARGET}" = "x86_64-apple-darwin" ] - then - # NOTE: Enables the aes-ni instructions for RustCrypto dependency. - # If you change this please remember to also update .cargo/config - export RUSTFLAGS="$RUSTFLAGS -Ctarget-feature=+aes,+sse2,+ssse3" - fi - time cargo build --target $CARGO_TARGET --verbose --color=always --release --features final - time cargo build --target $CARGO_TARGET --verbose --color=always --release -p evmbin - time cargo build --target $CARGO_TARGET --verbose --color=always --release -p ethstore-cli - time cargo build --target $CARGO_TARGET --verbose --color=always --release -p ethkey-cli - time cargo build --target $CARGO_TARGET --verbose --color=always --release -p whisper-cli -fi - -echo "_____ Post-processing binaries _____" -rm -rf artifacts/* -mkdir -p artifacts/$CARGO_TARGET -cd artifacts/$CARGO_TARGET - -if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ] -then - cp -v ../../target/$CARGO_TARGET/release/libparity.so ./libparity.so -else - cp -v ../../target/$CARGO_TARGET/release/parity ./parity - cp -v ../../target/$CARGO_TARGET/release/parity-evm ./parity-evm - cp -v ../../target/$CARGO_TARGET/release/ethstore ./ethstore - cp -v ../../target/$CARGO_TARGET/release/ethkey ./ethkey - cp -v ../../target/$CARGO_TARGET/release/whisper ./whisper -fi - -echo "_____ Calculating checksums _____" -for binary in $(ls) -do - rhash --sha256 $binary -o $binary.sha256 #do we still need this hash (SHA2)? - if [[ $CARGO_TARGET == *"x86_64"* ]]; - then - ./parity tools hash $binary > $binary.sha3 - else - echo ">[WARN] ${binary} cannot be hashed with cross-compiled binary (keccak256)" - fi -done -#show sccache statistics -sccache --show-stats diff --git a/scripts/gitlab/build-windows.sh b/scripts/gitlab/build-windows.sh deleted file mode 100755 index 76332124d..000000000 --- a/scripts/gitlab/build-windows.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -set -e # fail on any error -set -u # treat unset variables as error - -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" -sccache -s - -echo "__________Show ENVIROMENT__________" -echo "CI_SERVER_NAME: " $CI_SERVER_NAME -echo "CARGO_HOME: " $CARGO_HOME -echo "CARGO_TARGET: " $CARGO_TARGET -echo "RUSTC_WRAPPER: " $RUSTC_WRAPPER -echo "SCCACHE_DIR: " $SCCACHE_DIR - -echo "_____ Building target: "$CARGO_TARGET" _____" -time cargo build --target $CARGO_TARGET --verbose --release --features final -time cargo build --target $CARGO_TARGET --verbose --release -p evmbin -time cargo build --target $CARGO_TARGET --verbose --release -p ethstore-cli -time cargo build --target $CARGO_TARGET --verbose --release -p ethkey-cli -time cargo build --target $CARGO_TARGET --verbose --release -p whisper-cli - -echo "__________Sign binaries__________" -scripts/gitlab/sign-win.cmd $keyfile $certpass target/$CARGO_TARGET/release/parity.exe -scripts/gitlab/sign-win.cmd $keyfile $certpass target/$CARGO_TARGET/release/parity-evm.exe -scripts/gitlab/sign-win.cmd $keyfile $certpass target/$CARGO_TARGET/release/ethstore.exe -scripts/gitlab/sign-win.cmd $keyfile $certpass target/$CARGO_TARGET/release/ethkey.exe -scripts/gitlab/sign-win.cmd $keyfile $certpass target/$CARGO_TARGET/release/whisper.exe - -echo "_____ Post-processing binaries _____" -rm -rf artifacts -mkdir -p artifacts -cd artifacts -mkdir -p $CARGO_TARGET -cd $CARGO_TARGET -cp --verbose ../../target/$CARGO_TARGET/release/parity.exe ./parity.exe -cp --verbose ../../target/$CARGO_TARGET/release/parity-evm.exe ./parity-evm.exe -cp --verbose ../../target/$CARGO_TARGET/release/ethstore.exe ./ethstore.exe -cp --verbose ../../target/$CARGO_TARGET/release/ethkey.exe ./ethkey.exe -cp --verbose ../../target/$CARGO_TARGET/release/whisper.exe ./whisper.exe - -echo "_____ Calculating checksums _____" -for binary in $(ls) -do - rhash --sha256 $binary -o $binary.sha256 - ./parity.exe tools hash $binary > $binary.sha3 -done -cp parity.exe.sha256 parity.sha256 -cp parity.exe.sha3 parity.sha3 - -sccache -s diff --git a/scripts/gitlab/publish-av-whitelists.sh b/scripts/gitlab/publish-av-whitelists.sh deleted file mode 100755 index 3c5dde807..000000000 --- a/scripts/gitlab/publish-av-whitelists.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -set -e - -target_filename="parity-${CI_COMMIT_TAG:-${CI_COMMIT_REF_NAME}}.exe" -apt -y update -apt -y install ftp - -echo "__________Publish Windows binaries to Avast Whitelisting program__________" - -ftp -pinv whitelisting.avast.com <&1 \ - | sed -r "s|(${GITHUB_USER}):[a-f0-9]+@|\1:REDACTED@|g" - git push -q -f --tags 2>&1 \ - | sed -r "s|(${GITHUB_USER}):[a-f0-9]+@|\1:REDACTED@|g" -} - -RPC_TRAITS_DIR="rpc/src/v1/traits" - -setup_git -clone_repos -mkdir -p "jsonrpc/.parity/$RPC_TRAITS_DIR" -cp $RPC_TRAITS_DIR/*.rs "jsonrpc/.parity/$RPC_TRAITS_DIR" -cd jsonrpc -build_docs -cd .. -cd parity-config-generator -build_config -cd .. -update_wiki_docs -cd wiki -set_remote_wiki -commit_files -upload_files diff --git a/scripts/gitlab/publish-onchain.sh b/scripts/gitlab/publish-onchain.sh deleted file mode 100755 index 9c2ac1dbb..000000000 --- a/scripts/gitlab/publish-onchain.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e # fail on any error -set -u # treat unset variables as error - -echo "__________Register Release__________" -DATA="secret=$RELEASES_SECRET" - -echo "Pushing release to Mainnet" -./tools/safe-curl.sh $DATA "https://update.parity.io/push-release/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$CI_COMMIT_SHA" - -cd artifacts -ls -l | sort -k9 -filetest=( * ) -echo ${filetest[*]} -for DIR in "${filetest[@]}"; -do - cd $DIR - if [[ $DIR =~ "windows" ]]; - then - WIN=".exe"; - else - WIN=""; - fi - sha3=$(cat parity.sha3 | awk '{print $1}') - case $DIR in - x86_64* ) - DATA="commit=$CI_COMMIT_SHA&sha3=$sha3&filename=parity$WIN&secret=$RELEASES_SECRET" - ../../tools/safe-curl.sh $DATA "https://update.parity.io/push-build/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$DIR" - ;; - esac - cd .. -done diff --git a/scripts/gitlab/publish-snap.sh b/scripts/gitlab/publish-snap.sh deleted file mode 100755 index d9f10ce3e..000000000 --- a/scripts/gitlab/publish-snap.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -e # fail on any error -set -u # treat unset variables as error - -# prepare variables -TRACK=$(cat ./tools/TRACK) -echo "Track is: ${TRACK}" -VERSION=$(cat ./tools/VERSION) -SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap" -# Choose snap release channel based on parity ethereum version track -case ${TRACK} in - nightly) export GRADE="devel" CHANNEL="edge";; - beta) export GRADE="stable" CHANNEL="beta";; - stable) export GRADE="stable" CHANNEL="stable";; - *) echo "No release" && exit 0;; -esac - -echo "__________Create snap package__________" -echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME "Track: " ${TRACK} -echo $VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET - -sed -e 's/$VERSION/'"$VERSION"'/g' \ - -e 's/$GRADE/'"$GRADE"'/g' \ - -e 's/$BUILD_ARCH/'"$BUILD_ARCH"'/g' \ - -e 's/$CARGO_TARGET/'"$CARGO_TARGET"'/g' \ - scripts/snap/snapcraft.template.yaml > snapcraft.yaml - -apt update -apt install -y --no-install-recommends rhash -cat snapcraft.yaml -snapcraft --target-arch=$BUILD_ARCH -ls *.snap - -echo "__________Calculating checksums__________" -rhash --sha256 $SNAP_PACKAGE -o $SNAP_PACKAGE".sha256" -cat $SNAP_PACKAGE".sha256" - -echo "__________Releasing snap package__________" -echo "Release channel :" $CHANNEL " Branch/tag: " $CI_COMMIT_REF_NAME - -echo $SNAPCRAFT_LOGIN_PARITY_BASE64 | base64 --decode > snapcraft.login -snapcraft login --with snapcraft.login -snapcraft push --release $CHANNEL $SNAP_PACKAGE -snapcraft status parity -snapcraft logout diff --git a/scripts/gitlab/rust-changes.sh b/scripts/gitlab/rust-changes.sh deleted file mode 100755 index 236a20d59..000000000 --- a/scripts/gitlab/rust-changes.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -echo "________Running rust_changes.sh________" -set -e # fail on any error -set -u # treat unset variables as error - -echo "__________Checking if Rust files were changed__________" -git log --graph --oneline --decorate=short -n 10 - -case ${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} in - (beta|stable) - export GIT_COMPARE=origin/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}~ - ;; - (master|nightly) - export GIT_COMPARE=master~ - ;; - (*) - export GIT_COMPARE=master - ;; -esac - -export RUST_FILES_MODIFIED="$(git --no-pager diff --name-only $GIT_COMPARE...$CI_COMMIT_SHA | grep -v -e ^\\. -e ^LICENSE -e ^README.md -e ^CHANGELOG.md -e ^test.sh -e ^scripts/ -e ^docs/ -e ^docker/ -e ^snap/ | wc -l | tr -d ' ')" -echo "RUST_FILES_MODIFIED: $RUST_FILES_MODIFIED" - -if [ "${RUST_FILES_MODIFIED}" = "0" ] -then - echo "__________Skipping Rust tests since no Rust files modified__________"; - exit 0 -fi - -rustup show diff --git a/scripts/gitlab/safe-curl.sh b/scripts/gitlab/safe-curl.sh deleted file mode 100755 index f5bb2ee4e..000000000 --- a/scripts/gitlab/safe-curl.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -set -eu - -DATA=$1 -ADDRESS=$2 - -CODE=$(curl -o out.txt -w '%{http_code}' --data $DATA $ADDRESS) -cat out.txt && rm out.txt -echo "\n" - -if [[ $CODE -eq 200 ]]; then - echo 'Pushed to updater service.'; -elif [[ $CODE -eq 202 ]]; then - echo 'Updater service ignored request.'; -else - echo 'Unable to push info to updater service.'; - exit 2 -fi diff --git a/scripts/gitlab/sign-win.cmd b/scripts/gitlab/sign-win.cmd deleted file mode 100755 index 2b014a023..000000000 --- a/scripts/gitlab/sign-win.cmd +++ /dev/null @@ -1 +0,0 @@ -@signtool sign /f %1 /p %2 /tr http://timestamp.comodoca.com /du https://parity.io %3 diff --git a/scripts/gitlab/test-cpp.sh b/scripts/gitlab/test-cpp.sh deleted file mode 100755 index b61db1bb2..000000000 --- a/scripts/gitlab/test-cpp.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -echo "________Running test-cpp.sh________" -set -e # fail on any error -set -u # treat unset variables as error -#use nproc `linux only -THREADS=$(nproc) -export CC="sccache gcc" -export CXX="sccache g++" - -echo "________Running the C++ example________" -DIR=parity-clib/examples/cpp/build -mkdir -p $DIR -cd $DIR -cmake .. -make VERBOSE=1 -j $THREADS -# Note: we don't try to run the example because it tries to sync Kovan, and we don't want -# that to happen on CI -cd - -rm -rf $DIR -#show sccache statistics -sccache --stop-server diff --git a/scripts/gitlab/test-linux.sh b/scripts/gitlab/test-linux.sh deleted file mode 100755 index dc2c3f011..000000000 --- a/scripts/gitlab/test-linux.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# ARGUMENT $1 Rust flavor to run test with (stable/beta/nightly) - -echo "________Running test-linux.sh________" -set -e # fail on any error -set -u # treat unset variables as error - -export CC="sccache gcc" -export CXX="sccache g++" -FEATURES="json-tests" - -OPTIONS="--release" -#use nproc `linux only -THREADS=$(nproc) - -rustup default $1 -rustup show - -echo "________Running Parity Full Test Suite________" -# Why are we using RUSTFLAGS? See https://github.com/paritytech/parity-ethereum/pull/10719 -CARGO_INCREMENTAL=0 RUSTFLAGS="-C opt-level=3 -C overflow-checks=on -C debuginfo=2" time cargo test $OPTIONS --features "$FEATURES" --locked --all --target $CARGO_TARGET --verbose --color=never -- --test-threads $THREADS - -#show sccache statistics -sccache --stop-server \ No newline at end of file