name: On release on: pull_request: types: closed branches: [main] # target branch of release PRs jobs: info: if: github.event.pull_request.merged outputs: is-release: ${{ steps.meta.outputs.is-release }} crate: ${{ steps.meta.outputs.crates-names }} version: ${{ steps.meta.outputs.version-actual }} notes: ${{ steps.meta.outputs.notes }} runs-on: ubuntu-latest steps: - id: meta uses: cargo-bins/release-meta@v1 with: event-data: ${{ toJSON(github.event) }} extract-notes-under: '### Release notes' release-lib: if: needs.info.outputs.is-release == 'true' && needs.info.outputs.crate != 'cargo-binstall' needs: info permissions: contents: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Push lib release tag if: needs.info.outputs.crate != 'cargo-binstall' uses: mathieudutour/github-tag-action@v6.1 with: github_token: ${{ secrets.GITHUB_TOKEN }} custom_tag: ${{ needs.info.outputs.version }} tag_prefix: ${{ needs.info.outputs.crate }}-v - name: Publish to crates.io run: | cargo publish -p '${{ needs.info.outputs.crate }}' env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} release-cli: if: needs.info.outputs.crate == 'cargo-binstall' needs: info uses: ./.github/workflows/release-cli.yml secrets: inherit with: info: ${{ toJSON(needs.info.outputs) }}