name: Release permissions: contents: write on: push: tags: - v[0-9]+.* jobs: create-release: name: Create GH release draft runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Create the release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release create ${{ github.ref_name }} --draft --verify-tag --title ${{ github.ref_name }} upload-binary: needs: create-release name: ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-gnu use-cross: false - os: ubuntu-latest target: x86_64-unknown-linux-musl use-cross: false - os: ubuntu-latest target: aarch64-unknown-linux-gnu use-cross: true - os: macos-latest target: x86_64-apple-darwin use-cross: false - os: macos-latest target: aarch64-apple-darwin use-cross: false env: CARGO: cargo steps: - uses: actions/checkout@v5 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install cross if: matrix.use-cross uses: taiki-e/install-action@v2 with: tool: cross - name: Overwrite build command env variable if: matrix.use-cross shell: bash run: echo "CARGO=cross" >> $GITHUB_ENV - name: Install build deps shell: bash run: | if [[ ${{ matrix.target }} == x86_64-unknown-linux-musl ]]; then sudo apt-get update sudo apt-get install -y musl-tools fi - name: Build release binary run: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }} - name: Upload the binary to the release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | mv target/${{ matrix.target }}/release/asciinema target/release/asciinema-${{ matrix.target }} gh release upload ${{ github.ref_name }} target/release/asciinema-${{ matrix.target }}