From bc3ed81f0679e6fcc02472c0807dd7e25099f38e Mon Sep 17 00:00:00 2001 From: IITII Date: Tue, 9 Jan 2024 06:58:49 +0000 Subject: [PATCH] build: add github action multi-arch build --- .github/workflows/build.yml | 127 ++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..60aead3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,127 @@ +# .github/workflows/deploy.yml + +# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources +# https://rust-lang.github.io/rustup/installation/other.html +# https://rust-lang.github.io/rustup-components-history/ +# https://myedgetech.com/deploy-rust-cross-platform-github-actions/ +name: Build Release + +on: + push: + # branches: + # - 'main' + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + workflow_dispatch: + repository_dispatch: + types: [webhook] + +permissions: + contents: write + +jobs: + build-and-upload: + name: Build and upload + runs-on: ${{ matrix.os }} + + strategy: + matrix: + # You can add more, for any target you'd like! + include: + - build: linux x86 + os: ubuntu-latest + target: x86_64-unknown-linux-musl + - build: linux arm64 + os: ubuntu-latest + target: aarch64-unknown-linux-musl + + - build: macos x86 + os: macos-latest + target: x86_64-apple-darwin + - build: macos arm64 + os: macos-latest + target: aarch64-apple-darwin + + - build: win x86 + os: windows-latest + target: x86_64-pc-windows-msvc + # - build: win arm64 + # os: windows-latest + # target: aarch64-pc-windows-msvc + # error: failed to run custom build command for `mozjpeg-sys v*` + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Get the release version from the tag + shell: bash + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + + - name: Install Rust + # Or @nightly if you want + uses: dtolnay/rust-toolchain@stable + # Arguments to pass in + with: + # Make Rust compile to our target (defined in the matrix) + targets: ${{ matrix.target }} + + - name: Build + uses: actions-rs/cargo@v1 + with: + use-cross: true + command: build + args: --verbose --release --target ${{ matrix.target }} + + - name: Build archive + shell: bash + run: | + # Replace with the name of your binary + binary_name="caesiumclt" + + dirname="$binary_name-${{ env.VERSION }}-${{ matrix.target }}" + mkdir "$dirname" + if [ "${{ matrix.os }}" = "windows-latest" ]; then + mv "target/${{ matrix.target }}/release/$binary_name.exe" "$dirname" + else + mv "target/${{ matrix.target }}/release/$binary_name" "$dirname" + fi + + if [ "${{ matrix.os }}" = "windows-latest" ]; then + 7z a "$dirname.zip" "$dirname" + echo "ASSET=$dirname.zip" >> $GITHUB_ENV + else + tar -czf "$dirname.tar.gz" "$dirname" + echo "ASSET=$dirname.tar.gz" >> $GITHUB_ENV + fi + + # https://github.com/softprops/action-gh-release?tab=readme-ov-file#-customizing + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: | + ${{ env.ASSET }} + # body_path: '' + body: "|Arch|Filename|\n +|:--: |:--:|\n +|MacOS ARM| caesiumclt-v*-aarch64-apple-darwin.tar.gz|\n +|MacOS x86_64| caesiumclt-v*-x86_64-apple-darwin.tar.gz|\n +|Linux ARM| caesiumclt-v*-aarch64-unknown-linux-musl.tar.gz|\n +|Linux x86_64| caesiumclt-v*-x86_64-unknown-linux-musl.tar.gz|\n +|Windows x86_64| caesiumclt-v*-x86_64-pc-windows-msvc.zip|\n" + + # - name: Upload Artifact 🚀 + # uses: actions/upload-artifact@v3 + # with: + # name: ${{ env.ASSET }} + # path: ${{ env.ASSET }} + + # - name: Upload binaries to release ☕ + # uses: svenstaro/upload-release-action@v2 + # with: + # repo_token: ${{ secrets.GITHUB_TOKEN }} + # file: ${{ env.ASSET }} + # asset_name: ${{ env.ASSET }} + # tag: ${{ github.ref }} + # overwrite: true + # body: "test\ntest"