name: Release on: push: tags: - "v[0-9]+.[0-9]+.[0-9]+*" jobs: create_release: name: Create release runs-on: ubuntu-latest permissions: contents: write outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} draft: false prerelease: false release_assets: name: Release assets needs: create_release runs-on: ${{ matrix.config.os }} permissions: contents: write strategy: matrix: config: - os: ubuntu-latest - os: macos-latest - os: windows-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust Toolchain uses: dtolnay/rust-toolchain@stable with: toolchain: stable - name: Cache build dependencies uses: Swatinem/rust-cache@v2 - name: Run cargo build run: cargo build --release - name: Upload release assets if: matrix.config.os != 'windows-latest' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_name: ${{ matrix.config.os }}/dredge asset_path: ./target/release/dredge asset_content_type: application/octet-stream - name: Upload release assets (Windows) if: matrix.config.os == 'windows-latest' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_name: ${{ matrix.config.os }}/dredge.exe asset_path: ./target/release/dredge.exe asset_content_type: application/octet-stream