diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index edd0cdabd..52a27a92c 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -12,12 +12,12 @@ jobs: env: SCCACHE_CACHE_SIZE: "1G" SCCACHE_IDLE_TIMEOUT: 0 + ACTIONS_ALLOW_UNSECURE_COMMANDS: true strategy: matrix: platform: - ubuntu-16.04 - macos-latest - - windows-latest toolchain: - stable runs-on: ${{ matrix.platform }} @@ -59,18 +59,9 @@ jobs: 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@v1.1.2 - 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 @@ -78,13 +69,6 @@ jobs: 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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 8e6214f35..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,339 +0,0 @@ -name: Build Release Suite - -on: - push: - tags: - - v* - -# Global vars -env: - AWS_REGION: "us-east-1" - AWS_S3_ARTIFACTS_BUCKET: "openethereum-releases" - -jobs: - build: - name: Build Release - env: - SCCACHE_CACHE_SIZE: "1G" - SCCACHE_IDLE_TIMEOUT: 0 - strategy: - matrix: - platform: - - ubuntu-16.04 - - macos-latest - - windows-latest - toolchain: - - stable - runs-on: ${{ matrix.platform }} - steps: - - name: Checkout sources - uses: actions/checkout@main - - name: Install toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: ${{ matrix.toolchain }} - profile: minimal - override: true - - name: Cache cargo registry - uses: actions/cache@v1.1.2 - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-build-${{ hashFiles('**/Cargo.lock') }} - - name: Cache cargo index - uses: actions/cache@v1.1.2 - with: - path: ~/.cargo/git - key: ${{ runner.os }}-cargo-git-build-${{ hashFiles('**/Cargo.lock') }} - - name: Cache cargo build - uses: actions/cache@v1.1.2 - with: - path: target - key: ${{ runner.os }}-cargo-build-target-build-${{ hashFiles('**/Cargo.lock') }} - - name: Cache sccache linux - if: matrix.platform == 'ubuntu-16.04' - uses: actions/cache@v1.1.2 - 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@v1.1.2 - 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@v1.1.2 - 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-16.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-16.04 - steps: - - name: Set env - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - - # ============================== - # 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/ --region ${{ env.AWS_REGION }} - - 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-16.04 - steps: - - name: Set env - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - - # ============================== - # 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 index 5f5359b4c..af0e005c5 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -13,6 +13,7 @@ jobs: env: SCCACHE_CACHE_SIZE: "1G" SCCACHE_IDLE_TIMEOUT: 0 + ACTIONS_ALLOW_UNSECURE_COMMANDS: true steps: - name: Checkout sources uses: actions/checkout@main diff --git a/.github/workflows/deploy-docker-nightly.yml b/.github/workflows/deploy-docker-nightly.yml deleted file mode 100644 index b80691b15..000000000 --- a/.github/workflows/deploy-docker-nightly.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Docker Image Nightly Release - -# Run "nightly" build on each commit to "dev" branch. -on: - push: - branches: - - dev - -jobs: - deploy-docker: - name: Build Release - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@master - - name: Install toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true - - name: Deploy to docker hub - uses: elgohr/Publish-Docker-Github-Action@master - with: - name: openethereum/openethereum - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - dockerfile: scripts/docker/alpine/Dockerfile - tags: "nightly" diff --git a/.github/workflows/deploy-docker-tag.yml b/.github/workflows/deploy-docker-tag.yml deleted file mode 100644 index 84beb5dec..000000000 --- a/.github/workflows/deploy-docker-tag.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Docker Image Tag and Latest Release - -on: - push: - tags: - - v* - -jobs: - deploy-docker: - name: Build Release - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@master - - name: Set env - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - - name: Install toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true - - name: Deploy to docker hub - uses: elgohr/Publish-Docker-Github-Action@master - with: - name: openethereum/openethereum - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - dockerfile: scripts/docker/alpine/Dockerfile - tags: "latest,${{ env.RELEASE_VERSION }}" diff --git a/ethcore/sync/src/api.rs b/ethcore/sync/src/api.rs index a9e8a2470..139d4faea 100644 --- a/ethcore/sync/src/api.rs +++ b/ethcore/sync/src/api.rs @@ -554,16 +554,14 @@ impl ChainNotify for EthSync { fn start(&self) { match self.network.start() { - Err((err, listen_address)) => { - match err.into() { - ErrorKind::Io(ref e) if e.kind() == io::ErrorKind::AddrInUse => { - warn!("Network port {:?} is already in use, make sure that another instance of an Ethereum client is not running or change the port using the --port option.", listen_address.expect("Listen address is not set.")) - }, - err => warn!("Error starting network: {}", err), - } - }, - _ => {}, - } + Err((err, listen_address)) => match err.into() { + ErrorKind::Io(ref e) if e.kind() == io::ErrorKind::AddrInUse => { + warn!("Network port {:?} is already in use, make sure that another instance of an Ethereum client is not running or change the port using the --port option.", listen_address.expect("Listen address is not set.")) + } + err => warn!("Error starting network: {}", err), + }, + _ => {} + } self.network .register_protocol(