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: ncipollo/release-action@v1.21.0 build-docs: name: Build documentation needs: create_release runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust Toolchain uses: dtolnay/rust-toolchain@stable with: toolchain: stable components: rust-docs - name: Cache build dependencies uses: Swatinem/rust-cache@v2 - name: Run cargo doc run: cargo doc --bin=dredge --no-deps --all-features --document-private-items --release - name: Archive the Docs run: tar --directory target/doc -czf dredge-${{ github.ref_name}}-docs.tar.gz dredge - name: Upload documentation assets uses: shogo82148/actions-upload-release-asset@v1.10.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_name: dredge-${{ github.ref_name }}-docs.tar.gz asset_path: dredge-${{ github.ref_name }}-docs.tar.gz asset_content_type: application/gzip 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 -czf dredge-${{ github.ref_name }}-${{ matrix.config.platform }}.${{ matrix.config.arch }}.tar.gz dredge${{ matrix.config.ext }} - name: Upload release assets uses: shogo82148/actions-upload-release-asset@v1.10.1 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