diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3cd3991..e38d0ae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,34 +1,77 @@ -name: Release - -permissions: - contents: write +name: Deploy on: push: tags: - - v[0-9]+.* + - "[0-9]+.[0-9]+.[0-9]+" + +permissions: + contents: write jobs: - create-release: - runs-on: ubuntu-latest + 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 + os: ubuntu-latest + target: x86_64-unknown-linux-musl + + - build: macos + os: macos-latest + target: x86_64-apple-darwin + steps: - - uses: actions/checkout@v4 - - uses: taiki-e/create-gh-release-action@v1 + - 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@1.82.0 + # Arguments to pass in with: - # (optional) Path to changelog. - # changelog: CHANGELOG.md - # (required) GitHub token for creating GitHub Releases. - token: ${{ secrets.GITHUB_TOKEN }} - - upload-assets: - needs: create-release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: taiki-e/upload-rust-binary-action@v1 + # 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="rae-cli" + + 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 + + - name: Release + uses: softprops/action-gh-release@v1 with: - # (required) Comma-separated list of binary names (non-extension portion of filename) to build and upload. - # Note that glob pattern is not supported yet. - bin: rae_cli - # (required) GitHub token for uploading assets to GitHub Releases. - token: ${{ secrets.GITHUB_TOKEN }} + files: | + ${{ env.ASSET }}