diff --git a/.github/workflows/build-test-windows.yml b/.github/workflows/build-test-windows.yml new file mode 100644 index 000000000..a3983eec3 --- /dev/null +++ b/.github/workflows/build-test-windows.yml @@ -0,0 +1,33 @@ +name: Build and Test Suite on Windows + +on: + push: + branches: + - main + - dev +jobs: + build-tests: + name: Test and Build + strategy: + matrix: + platform: + - windows2019 # custom runner + toolchain: + - stable + runs-on: ${{ matrix.platform }} + steps: + - name: Checkout sources + uses: actions/checkout@main + with: + submodules: true + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + profile: minimal + override: true + - name: Build tests + uses: actions-rs/cargo@v1 + with: + command: test + args: --locked --all --release --features "json-tests" --verbose --no-run diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0279ef7d8..9dda2d4aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,6 @@ on: env: AWS_REGION: "us-east-1" AWS_S3_ARTIFACTS_BUCKET: "openethereum-releases" - ACTIONS_ALLOW_UNSECURE_COMMANDS: true jobs: build: @@ -19,6 +18,7 @@ jobs: platform: - ubuntu-16.04 - macos-latest + - windows2019 toolchain: - stable runs-on: ${{ matrix.platform }} @@ -32,9 +32,33 @@ jobs: profile: minimal override: true + # ============================== + # Windows Build + # ============================== + + - name: Install LLVM for Windows + if: matrix.platform == 'windows2019' + run: choco install llvm + + - name: Build OpenEthereum for Windows + if: matrix.platform == 'windows2019' + run: sh scripts/actions/build-windows.sh ${{matrix.platform}} + + - name: Upload Windows build + uses: actions/upload-artifact@v2 + if: matrix.platform == 'windows2019' + with: + name: windows-artifacts + path: artifacts + # ============================== # Linux/Macos Build # ============================== + + - name: Build OpenEthereum for ${{matrix.platform}} + if: matrix.platform != 'windows2019' + run: sh scripts/actions/build-linux.sh ${{matrix.platform}} + - name: Upload Linux build uses: actions/upload-artifact@v2 if: matrix.platform == 'ubuntu-16.04' @@ -61,11 +85,11 @@ jobs: # Create ZIP files # ============================== - # - name: Download Windows artifacts - # uses: actions/download-artifact@v2 - # with: - # name: windows-artifacts - # path: windows-artifacts + - 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 @@ -108,18 +132,18 @@ jobs: 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 . + - 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}') + 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 @@ -138,11 +162,11 @@ jobs: 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 + - 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 @@ -167,8 +191,8 @@ jobs: 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 }} + windows-artifact: ${{ steps.create_zip_windows.outputs.WINDOWS_ARTIFACT }} + windows-shasum: ${{ steps.create_zip_windows.outputs.WINDOWS_SHASUM }} draft-release: name: Draft Release @@ -192,10 +216,10 @@ jobs: 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: Download artifacts + uses: actions/download-artifact@v2 + with: + name: openethereum-windows-${{ env.RELEASE_VERSION }}.zip - name: Display structure of downloaded files run: ls @@ -249,13 +273,13 @@ jobs: 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 + - 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