From 31431d2dc2ef927629badadbee7fed6c333f6791 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 08:56:11 +0100 Subject: [PATCH 01/18] feat: add new workflow to cross-compile wws --- .github/workflows/release.yml | 93 +++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..806d05af --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,93 @@ +name: Rust release + +on: + releases: + types: [ published ] + # TODO: For testing. Run this workflow only on a new release. + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Caching + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: Test + run: cargo test + build: + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + arch: [x86_64, aarch64] + include: + - os: ubuntu-latest + arch: x86_64 + platform: unknown-linux-musl + cross: false + name: linux-musl + - os: ubuntu-latest + arch: aarch64 + platform: unknown-linux-musl + cross: true + name: linux-musl + - os: windows-latest + arch: x86_64 + platform: pc-windows-msvc + cross: false + name: pc-windows + - os: ubuntu-latest + arch: aarch64 + platform: pc-windows-msvc + cross: true + name: pc-windows + - os: macos-latest + arch: x86_64 + platform: apple-darwin + cross: false + name: macos-darwin + - os: ubuntu-latest + arch: aarch64 + platform: apple-darwin + cross: true + name: macos-darwin + runs-on: ${{ matrix.os }} + env: + # We use cross for arm builds + CARGO: cargo + steps: + - uses: actions/checkout@v3 + - name: Install cross + if: matrix.cross == true + run: | + cargo install cross + echo "CARGO=cross" >> $GITHUB_ENV + - name: Build + run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{matrix.platform}} + - name: Tarball + run: | + mkdir out + cp {README.md,LICENSE} out + + if [ "${{ matrix.os }}" = "windows-latest" ]; then + cp "target/${{ matrix.arch }}-${{matrix.platform}}/release/wws.exe" ./out + else + cp "target/${{ matrix.arch }}-${{matrix.platform}}/release/wws" ./out + fi + + tar czf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" ./out + echo "TARBALL=wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: wws-${{ matrix.name }}-${{ matrix.arch }} + path: ${{ env.TARBALL }} + # TODO: This is for testing + retention-days: 7 From 3f081ad87842514683e1c299925f5727b3e85d67 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 09:00:01 +0100 Subject: [PATCH 02/18] feat: install missing components with rustup --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 806d05af..ead1e5ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,7 +70,9 @@ jobs: cargo install cross echo "CARGO=cross" >> $GITHUB_ENV - name: Build - run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{matrix.platform}} + run: | + rustup component add rust-std-${{ matrix.arch }}-${{matrix.platform}} + ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{matrix.platform}} - name: Tarball run: | mkdir out From 0f7cdb9a47c15df414fd8b4e7ec11de396651c86 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 09:04:03 +0100 Subject: [PATCH 03/18] fix: configure the release action trigger to run on tags --- .github/workflows/release.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ead1e5ba..42dc955f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,10 @@ name: Rust release on: - releases: - types: [ published ] + push: + branches: [ main ] + tags: + - "[0-9]+.[0-9]+.[0-9]+" # TODO: For testing. Run this workflow only on a new release. pull_request: branches: [ main ] From 87f8b561613e195a6a2fb8e992fe558f5c05294b Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 09:10:16 +0100 Subject: [PATCH 04/18] fix: install target platforms properly with rustup --- .github/workflows/release.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42dc955f..53890adf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: branches: [ main ] tags: - "[0-9]+.[0-9]+.[0-9]+" - # TODO: For testing. Run this workflow only on a new release. + # TODO: For tesgting. Run this workflow only on a new release. pull_request: branches: [ main ] @@ -28,7 +28,6 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] - arch: [x86_64, aarch64] include: - os: ubuntu-latest arch: x86_64 @@ -71,19 +70,20 @@ jobs: run: | cargo install cross echo "CARGO=cross" >> $GITHUB_ENV + - name: Install target + if: matrix.cross == false + run: rustup target add ${{ matrix.arch }}-${{ matrix.platform }} - name: Build - run: | - rustup component add rust-std-${{ matrix.arch }}-${{matrix.platform}} - ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{matrix.platform}} + run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{ matrix.platform }} - name: Tarball run: | mkdir out cp {README.md,LICENSE} out if [ "${{ matrix.os }}" = "windows-latest" ]; then - cp "target/${{ matrix.arch }}-${{matrix.platform}}/release/wws.exe" ./out + cp "target/${{ matrix.arch }}-${{ matrix.platform }}/release/wws.exe" ./out else - cp "target/${{ matrix.arch }}-${{matrix.platform}}/release/wws" ./out + cp "target/${{ matrix.arch }}-${{ matrix.platform }}/release/wws" ./out fi tar czf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" ./out From 357e0822b0fc90d9aaa01f1732ceab580cb12221 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 09:39:24 +0100 Subject: [PATCH 05/18] fix: set the proper matrix to build all desired flavors --- .github/workflows/release.yml | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 53890adf..7751e818 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,37 +27,44 @@ jobs: build: strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + build: [linux, windows, macos] + arch: [x86_64, aarch64] include: - - os: ubuntu-latest + - build: linux arch: x86_64 + os: ubuntu-latest platform: unknown-linux-musl cross: false name: linux-musl - - os: ubuntu-latest + - build: linux arch: aarch64 + os: ubuntu-latest platform: unknown-linux-musl cross: true name: linux-musl - - os: windows-latest + - build: windows arch: x86_64 + os: windows-latest platform: pc-windows-msvc cross: false name: pc-windows - - os: ubuntu-latest + - build: windows arch: aarch64 + os: ubuntu-latest platform: pc-windows-msvc cross: true name: pc-windows - - os: macos-latest + - build: macos arch: x86_64 + os: macos-latest platform: apple-darwin cross: false name: macos-darwin - - os: ubuntu-latest + - build: macos arch: aarch64 + os: macos-latest platform: apple-darwin - cross: true + cross: false name: macos-darwin runs-on: ${{ matrix.os }} env: From f733afa8128bb4cd38387d8a47e985bff5ae6e4a Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 09:50:58 +0100 Subject: [PATCH 06/18] fix: skip windows on aarch64 due to the lack of cross official images --- .github/workflows/release.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7751e818..91d0487e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,6 +29,10 @@ jobs: matrix: build: [linux, windows, macos] arch: [x86_64, aarch64] + exclude: + # Exclude win arm64 for now + - build: windows + arch: aarch64 include: - build: linux arch: x86_64 @@ -48,12 +52,6 @@ jobs: platform: pc-windows-msvc cross: false name: pc-windows - - build: windows - arch: aarch64 - os: ubuntu-latest - platform: pc-windows-msvc - cross: true - name: pc-windows - build: macos arch: x86_64 os: macos-latest From 161f2b3dc5a073dee27c046380204b17063d6c8b Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 10:08:00 +0100 Subject: [PATCH 07/18] fix: install musl-tools for linux builds --- .github/workflows/release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91d0487e..e9483dfd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -78,6 +78,11 @@ jobs: - name: Install target if: matrix.cross == false run: rustup target add ${{ matrix.arch }}-${{ matrix.platform }} + - name: Install deps + if: matrix.build == "linux" + run: | + apt-get update + apt-get install musl-tools - name: Build run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{ matrix.platform }} - name: Tarball From b1f47803bbd3d3b47c78ad8694527edd56777a30 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 10:09:37 +0100 Subject: [PATCH 08/18] fix: remove quotes when using values in if conditional --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e9483dfd..d04c2bf4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -79,7 +79,7 @@ jobs: if: matrix.cross == false run: rustup target add ${{ matrix.arch }}-${{ matrix.platform }} - name: Install deps - if: matrix.build == "linux" + if: matrix.build == linux run: | apt-get update apt-get install musl-tools From 1db2827c894dcf628334605727d166264a2f09d2 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 10:11:36 +0100 Subject: [PATCH 09/18] fix: set the right format for conditionals with strings in the release workflow --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d04c2bf4..a283b74f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -79,7 +79,7 @@ jobs: if: matrix.cross == false run: rustup target add ${{ matrix.arch }}-${{ matrix.platform }} - name: Install deps - if: matrix.build == linux + if: ${{ matrix.build == 'linux' }} run: | apt-get update apt-get install musl-tools From cf894f11dab612b2ec00f729c3109523651cc1b3 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 10:12:27 +0100 Subject: [PATCH 10/18] fix: use sudo with apt-get --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a283b74f..b19a4201 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -81,8 +81,8 @@ jobs: - name: Install deps if: ${{ matrix.build == 'linux' }} run: | - apt-get update - apt-get install musl-tools + sudo apt-get update + sudo apt-get install musl-tools - name: Build run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{ matrix.platform }} - name: Tarball From f28bc28809afe46fb4f77fe102f690da8a93a918 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 10:28:19 +0100 Subject: [PATCH 11/18] fix: ensure we are using bash on windows too --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b19a4201..f524f3db 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -86,6 +86,7 @@ jobs: - name: Build run: ${{env.CARGO}} build --verbose --release --target=${{ matrix.arch }}-${{ matrix.platform }} - name: Tarball + shell: bash run: | mkdir out cp {README.md,LICENSE} out From d138c71b005ad68154bd32a4d1d56145acc5e8c1 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 11:11:01 +0100 Subject: [PATCH 12/18] fix: create flat tar.gz files. Set the right file name --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f524f3db..467df5fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,12 +97,12 @@ jobs: cp "target/${{ matrix.arch }}-${{ matrix.platform }}/release/wws" ./out fi - tar czf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" ./out + tar -C ./out czvf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" . echo "TARBALL=wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - name: Upload artifact uses: actions/upload-artifact@v3 with: - name: wws-${{ matrix.name }}-${{ matrix.arch }} + name: wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz path: ${{ env.TARBALL }} # TODO: This is for testing retention-days: 7 From e530722c2b0ea7619b693885789b0cf9f1706e83 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Thu, 10 Nov 2022 11:12:42 +0100 Subject: [PATCH 13/18] feat: enables the windows arm64 build --- .github/workflows/release.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 467df5fc..dcf676b5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,10 +29,6 @@ jobs: matrix: build: [linux, windows, macos] arch: [x86_64, aarch64] - exclude: - # Exclude win arm64 for now - - build: windows - arch: aarch64 include: - build: linux arch: x86_64 @@ -52,6 +48,12 @@ jobs: platform: pc-windows-msvc cross: false name: pc-windows + - build: windows + arch: aarch64 + os: windows-latest + platform: pc-windows-msvc + cross: false + name: pc-windows - build: macos arch: x86_64 os: macos-latest From 669c15e15e400febc6913431ac7186c2943bac7d Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Fri, 11 Nov 2022 08:19:21 +0100 Subject: [PATCH 14/18] fix: set the -C flag properly when compressing the output files --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dcf676b5..b83d1d06 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,7 +99,7 @@ jobs: cp "target/${{ matrix.arch }}-${{ matrix.platform }}/release/wws" ./out fi - tar -C ./out czvf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" . + tar czvf "wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" -C ./out . echo "TARBALL=wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz" >> $GITHUB_ENV - name: Upload artifact uses: actions/upload-artifact@v3 From f6eb61896a6a622361a1ef2b7038240b6ad586e7 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Fri, 11 Nov 2022 10:42:22 +0100 Subject: [PATCH 15/18] chore: try to avoid using cross if not required --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b83d1d06..88683ad3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: arch: aarch64 os: ubuntu-latest platform: unknown-linux-musl - cross: true + cross: false name: linux-musl - build: windows arch: x86_64 From ea280eaaacbf5dbba478c3480a4b0a15c23bcbd2 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Fri, 11 Nov 2022 10:54:46 +0100 Subject: [PATCH 16/18] fix: continue using cross for linux aarch64 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88683ad3..b83d1d06 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: arch: aarch64 os: ubuntu-latest platform: unknown-linux-musl - cross: false + cross: true name: linux-musl - build: windows arch: x86_64 From f5eb42ef6b620be7e44eb4220d46c70f9115ecf3 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Fri, 11 Nov 2022 10:56:13 +0100 Subject: [PATCH 17/18] feat: run only when tags are pushed and rename the file --- .github/workflows/{release.yml => artifacts.yml} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{release.yml => artifacts.yml} (95%) diff --git a/.github/workflows/release.yml b/.github/workflows/artifacts.yml similarity index 95% rename from .github/workflows/release.yml rename to .github/workflows/artifacts.yml index b83d1d06..bad4b4d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/artifacts.yml @@ -1,13 +1,13 @@ -name: Rust release +name: Build artifacts on: push: branches: [ main ] tags: - "[0-9]+.[0-9]+.[0-9]+" - # TODO: For tesgting. Run this workflow only on a new release. - pull_request: - branches: [ main ] + # TODO: uncomment for testing. This will run by default only when a new tag is created + # pull_request: + # branches: [ main ] jobs: test: From 586b01a2077acb9d034c931687a3ff92efaa83d6 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Mon, 14 Nov 2022 09:11:30 +0100 Subject: [PATCH 18/18] fix: remove the artifact retention time that was used for testing --- .github/workflows/artifacts.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/artifacts.yml b/.github/workflows/artifacts.yml index bad4b4d4..7c25e2a6 100644 --- a/.github/workflows/artifacts.yml +++ b/.github/workflows/artifacts.yml @@ -106,5 +106,3 @@ jobs: with: name: wws-${{ matrix.name }}-${{ matrix.arch }}.tar.gz path: ${{ env.TARBALL }} - # TODO: This is for testing - retention-days: 7