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_name }} 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 platform: linux arch: x86_64 ext: '' - os: macos-latest platform: macos arch: x86_64 ext: '' - os: windows-latest platform: win arch: x86_64 ext: .exe 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: Create release assets run: | tar --directory target/release \ -cf Dredge-${{ github.ref_name }}-${{ matrix.config.platform }}.${{ matrix.config.arch }}.tar.gz \ dredge${{ matrix.config.ext }} - name: Upload release assets uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_name: Dredge-${{ github.ref_name }}-${{ matrix.config.platform }}.${{ matrix.config.arch }}.tar.gz asset_path: Dredge-${{ github.ref_name }}-${{ matrix.config.platform }}.${{ matrix.config.arch }}.tar.gz asset_content_type: application/gzip