name: Release on: push: tags: - '*' defaults: run: shell: bash jobs: release: strategy: matrix: target: - aarch64-apple-darwin - aarch64-unknown-linux-musl - arm-unknown-linux-musleabihf - armv7-unknown-linux-musleabihf - x86_64-apple-darwin - x86_64-pc-windows-msvc - aarch64-pc-windows-msvc - x86_64-unknown-linux-musl include: - target: aarch64-apple-darwin os: macos-latest target_rustflags: '' - target: aarch64-unknown-linux-musl os: ubuntu-latest target_rustflags: '--codegen linker=aarch64-linux-gnu-gcc' - target: arm-unknown-linux-musleabihf os: ubuntu-latest target_rustflags: '--codegen linker=arm-linux-gnueabihf-gcc' - target: armv7-unknown-linux-musleabihf os: ubuntu-latest target_rustflags: '--codegen linker=arm-linux-gnueabihf-gcc' - target: x86_64-apple-darwin os: macos-latest target_rustflags: '' - target: x86_64-pc-windows-msvc os: windows-latest - target: aarch64-pc-windows-msvc os: windows-latest target_rustflags: '' - target: x86_64-unknown-linux-musl os: ubuntu-latest target_rustflags: '' runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install AArch64 Toolchain if: ${{ matrix.target == 'aarch64-unknown-linux-musl' }} run: | sudo apt-get update sudo apt-get install gcc-aarch64-linux-gnu libc6-dev-i386 - name: Install ARM Toolchain if: ${{ matrix.target == 'arm-unknown-linux-musleabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }} run: | sudo apt-get update sudo apt-get install gcc-arm-linux-gnueabihf - name: Install AArch64 Toolchain (Windows) if: ${{ matrix.target == 'aarch64-pc-windows-msvc' }} run: | rustup target add aarch64-pc-windows-msvc - name: Ref Type id: ref-type run: cargo run --package ref-type -- --reference ${{ github.ref }} >> $GITHUB_OUTPUT - name: Package id: package env: TARGET: ${{ matrix.target }} REF: ${{ github.ref }} OS: ${{ matrix.os }} TARGET_RUSTFLAGS: ${{ matrix.target_rustflags }} run: ./bin/package shell: bash - name: Publish Archive uses: softprops/action-gh-release@v2.0.5 if: ${{ startsWith(github.ref, 'refs/tags/') }} with: draft: false files: ${{ steps.package.outputs.archive }} prerelease: ${{ steps.ref-type.outputs.value != 'release' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish Changelog uses: softprops/action-gh-release@v2.0.5 if: >- ${{ startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-unknown-linux-musl' }} with: draft: false files: CHANGELOG.md prerelease: ${{ steps.ref-type.outputs.value != 'release' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}