From 482df216ca3aa70593930f5e7249a1d98018c06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=A3rebe=20-=20Romain=20GERARD?= Date: Sat, 21 Oct 2023 19:56:58 +0200 Subject: [PATCH] Revert "update github action" This reverts commit 28e1fa032deaa82c95d0502e66e74483e8b08e1a [formerly 193fc0fc36b0f49976e502a0c5d4b3396d8be7c5] [formerly 0f4645cd044c3e119cbf8893564ffec8033cc034 [formerly cf641e89e044f8c568ee80fa4c47df8c0c4f9911]] [formerly ceaa787ed318f5403eee8367a6a820e614528d02] [formerly d77b1e8d81518bd776a3c9ac8279062f75dacec6] [formerly 4b20d9c9edc001b6780fdea235a33efb69fc3954] [formerly 8f59a3d7432bbad7162f502203e1ed3f26b253dd [formerly c1a3c9bffc72171a01265cc2024c82b0eb2c8d24]] [formerly 2e02f0610e40a20f6a822920686e2093341cc1b2 [formerly 3a475d12112dbe62bec6e71d599f14a7663f72fc] [formerly 546e817db5e5a41d3c92e336e6b512a76f63dc36 [formerly 2cc4688dcb98847b08672aec11c171148eeeddb5]]]. Former-commit-id: 28c17691a78b250587f67c759c10e6301972fb97 [formerly f65458b5470632e344f9cd4c8473082675846858] [formerly 580132d507464500b28af58658dfa5b02fd1209d [formerly 0b1b28cd66515e55807f6b56635c588ff20d5ce6]] Former-commit-id: dd797ededf96f449a3f9751107ac88a59b1b547f [formerly a9945063fdc6023e0a58abbc028487f33bb1e705] Former-commit-id: 8f13d4a9d2b47e78b8c25595273a934e20359397 Former-commit-id: ed4c289ecee37dab8fb2995fb6991d67dadfb6c1 Former-commit-id: 8dc5fc679282527a175f9927c6f6d7d3035abccf Former-commit-id: d9307e2d3866bc6bdd0b0aa151f03ce6fb13949a [formerly c6236c17089cb5c92a1b745226e78d8bf2ed4f88] Former-commit-id: 46da1a1967f148e1de833e082c1d24ab960f11ef --- .github/workflows/build.yaml | 102 ------------------- .github/workflows/release.yaml | 180 +++++++++++++++++++++++++-------- 2 files changed, 138 insertions(+), 144 deletions(-) delete mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 3775607..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,102 +0,0 @@ -on: - # Indicates I want to run this workflow on all branches, PR, and tags - push: - branches: ["main"] - tags: ["*"] - pull_request: - branches: [ "main" ] - -env: - RUST_VERSION: 1.73.0 - BUILD_ARGS: "--release" - BIN_NAME: "wstunnel" - -jobs: - build: - name: Build - ${{ matrix.platform.name }} - # By default, runs on Ubuntu, otherwise, override with the desired os - runs-on: ${{ matrix.platform.os || 'ubuntu-22.04' }} - strategy: - matrix: - # Set platforms you want to build your binaries on - platform: - # Linux - - name: Linux x86_64 - target: x86_64-unknown-linux-musl - - - name: Linux aarch64 - target: aarch64-unknown-linux-musl - - - name: Linux armv7hf - target: armv7-unknown-linux-musleabihf - - #- name: Linux mips - # target: mips-unknown-linux-musl - - #- name: Linux mips64 - # target: mips64-unknown-linux-muslabi64 - - # Mac OS - - name: MacOS x86_64 - target: x86_64-apple-darwin - - # - name: iOS x86_64 - # target: x86_64-apple-ios - - #- name: MacOS aarch64 - # target: aarch64-apple-darwin - - #- name: iOS aarch64 - # target: aarch64-apple-ios - - - # Windows - - name: Windows x86_64 - os: windows-latest - target: x86_64-pc-windows-msvc - - steps: - - name: Create annotation for build error - if: contains(matrix.platform.target, 'linux') - run: sudo apt install musl-tools - - - name: Checkout Git repo - uses: actions/checkout@v3 - - # Linux & Windows - - name: Install rust toolchain - if: ${{ !contains(matrix.platform.target, 'apple') }} - uses: actions-rs/toolchain@v1 - with: - # We setup Rust toolchain and the desired target - profile: minimal - toolchain: "${{ env.RUST_VERSION }}" - override: true - target: ${{ matrix.platform.target }} - components: rustfmt, clippy - - - name: Build ${{ matrix.platform.name }} binary - if: ${{ !contains(matrix.platform.target, 'apple') }} - uses: actions-rs/cargo@v1 - # We use cross-rs if not running on x86_64 architecture on Linux - with: - command: build - use-cross: ${{ !contains(matrix.platform.target, 'x86_64') }} - args: ${{ env.BUILD_ARGS }} --target ${{ matrix.platform.target }} - - # Mac OS - - name: Build ${{ matrix.platform.name }} binary - if: contains(matrix.platform.target, 'apple') - # We use a dedicated Rust image containing required Apple libraries to cross-compile on multiple archs - run: | - docker run --rm --volume "${PWD}":/root/src --workdir /root/src joseluisq/rust-linux-darwin-builder:$RUST_VERSION \ - sh -c "CC=o64-clang CXX=o64-clang++ cargo build $BUILD_ARGS --target ${{ matrix.platform.target }}" - - - name: Store artifact - uses: actions/upload-artifact@v3 - with: - # Finally, we store the binary as GitHub artifact for later usage - name: ${{ env.BIN_NAME }}-${{ matrix.platform.target }} - path: target/${{ matrix.platform.target }}/release/${{ env.BIN_NAME }}${{ contains(matrix.platform.target, 'windows') && '.exe' || '' }} - retention-days: 1 - diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 32185f2..6d8b551 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,50 +1,146 @@ on: - workflow_run: - workflows: [build] - types: - - completed + # Indicates I want to run this workflow on all branches, PR, and tags + push: + branches: ["main"] + tags: ["*"] + pull_request: + branches: [ "main" ] + +env: + RUST_VERSION: 1.73.0 + BUILD_ARGS: "--release" + BIN_NAME: "wstunnel" jobs: - release: - name: Release - # We run the release job only if a tag starts with 'v' letter - if: startsWith( github.ref, 'refs/tags/v' ) - runs-on: ubuntu-22.04 - steps: - - name: Checkout Git repo - uses: actions/checkout@v3 + build: + name: Build - ${{ matrix.platform.name }} + # By default, runs on Ubuntu, otherwise, override with the desired os + runs-on: ${{ matrix.platform.os || 'ubuntu-22.04' }} + strategy: + matrix: + # Set platforms you want to build your binaries on + platform: + # Linux + - name: Linux x86_64 + target: x86_64-unknown-linux-musl - # Download all artifacts in zip format - # https://github.com/actions/download-artifact/issues/143 - - name: Download artifacts - uses: actions/github-script@v6 - with: - script: | - let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + - name: Linux aarch64 + target: aarch64-unknown-linux-musl + + - name: Linux armv7hf + target: armv7-unknown-linux-musleabihf + + #- name: Linux mips + # target: mips-unknown-linux-musl + + #- name: Linux mips64 + # target: mips64-unknown-linux-muslabi64 + + # Mac OS + - name: MacOS x86_64 + target: x86_64-apple-darwin + + # - name: iOS x86_64 + # target: x86_64-apple-ios + + #- name: MacOS aarch64 + # target: aarch64-apple-darwin + + #- name: iOS aarch64 + # target: aarch64-apple-ios + + + # Windows + - name: Windows x86_64 + os: windows-latest + target: x86_64-pc-windows-msvc + + steps: + - name: Create annotation for build error + if: contains(matrix.platform.target, 'linux') + run: sudo apt install musl-tools + + - name: Checkout Git repo + uses: actions/checkout@v3 + + # Linux & Windows + - name: Install rust toolchain + if: ${{ !contains(matrix.platform.target, 'apple') }} + uses: actions-rs/toolchain@v1 + with: + # We setup Rust toolchain and the desired target + profile: minimal + toolchain: "${{ env.RUST_VERSION }}" + override: true + target: ${{ matrix.platform.target }} + components: rustfmt, clippy + + - name: Build ${{ matrix.platform.name }} binary + if: ${{ !contains(matrix.platform.target, 'apple') }} + uses: actions-rs/cargo@v1 + # We use cross-rs if not running on x86_64 architecture on Linux + with: + command: build + use-cross: ${{ !contains(matrix.platform.target, 'x86_64') }} + args: ${{ env.BUILD_ARGS }} --target ${{ matrix.platform.target }} + + # Mac OS + - name: Build ${{ matrix.platform.name }} binary + if: contains(matrix.platform.target, 'apple') + # We use a dedicated Rust image containing required Apple libraries to cross-compile on multiple archs + run: | + docker run --rm --volume "${PWD}":/root/src --workdir /root/src joseluisq/rust-linux-darwin-builder:$RUST_VERSION \ + sh -c "CC=o64-clang CXX=o64-clang++ cargo build $BUILD_ARGS --target ${{ matrix.platform.target }}" + + - name: Store artifact + uses: actions/upload-artifact@v3 + with: + # Finally, we store the binary as GitHub artifact for later usage + name: ${{ env.BIN_NAME }}-${{ matrix.platform.target }} + path: target/${{ matrix.platform.target }}/release/${{ env.BIN_NAME }}${{ contains(matrix.platform.target, 'windows') && '.exe' || '' }} + retention-days: 1 + + release: + name: Release + needs: [build] + # We run the release job only if a tag starts with 'v' letter + if: startsWith( github.ref, 'refs/tags/v' ) + runs-on: ubuntu-22.04 + steps: + - name: Checkout Git repo + uses: actions/checkout@v3 + + # Download all artifacts in zip format + # https://github.com/actions/download-artifact/issues/143 + - name: Download artifacts + uses: actions/github-script@v6 + with: + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + for (const artifact of allArtifacts.data.artifacts) + { + let download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, - run_id: context.payload.workflow_run.id, + artifact_id: artifact.id, + archive_format: 'zip', }); - for (const artifact of allArtifacts.data.artifacts) - { - let download = await github.rest.actions.downloadArtifact({ - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: artifact.id, - archive_format: 'zip', - }); - - let fs = require('fs'); - fs.mkdirSync('artifacts'); - fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/artifacts/${artifact.name}.zip`, Buffer.from(download.data)); - } + + let fs = require('fs'); + fs.mkdirSync('artifacts'); + fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/artifacts/${artifact.name}.zip`, Buffer.from(download.data)); + } - - name: list artifacts - run: find artifacts/ - - - uses: "marvinpinto/action-automatic-releases@latest" - with: - repo_token: "${{ secrets.RELEASE_TOKEN }}" - prerelease: true - files: | - artifacts/* + - name: list artifacts + run: find artifacts/ + + - uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.RELEASE_TOKEN }}" + prerelease: true + files: | + artifacts/*