cargo-binstall/.github/workflows/release.yml

88 lines
2.7 KiB
YAML

name: Release
on:
push:
branches:
- main
tags-ignore:
- "*"
jobs:
info:
runs-on: ubuntu-latest
# the commit message will look like: `release: {crate-name} v{version} (#{pr-number})`
if: "startsWith(github.event.head_commit.message, 'release: ')"
outputs:
crate: ${{ steps.version.outputs.crate }}
version: ${{ steps.version.outputs.version }}
notes: ${{ fromJSON(steps.notes.outputs.notes_json) }}
env:
COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
steps:
- uses: actions/checkout@v3
- name: Extract tag from commit message
id: version
run: .github/scripts/extract-tag-from-release-commit.sh
- name: Extract release notes
id: notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPO: ${{ github.repository }}
run: .github/scripts/extract-release-notes.sh
tag:
needs: info
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Push lib release tag
if: "! startsWith(github.event.head_commit.message, 'release: cargo-binstall v')"
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 }}-
- name: Push cli release tag
if: "startsWith(github.event.head_commit.message, 'release: cargo-binstall v')"
uses: mathieudutour/github-tag-action@v6.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ needs.info.outputs.version }}
tag_prefix: ''
build:
if: "startsWith(github.event.head_commit.message, 'release: cargo-binstall v')"
needs: info # not really, but just so it fails fast
uses: ./.github/workflows/build.yml
with:
for_release: true
release:
if: "startsWith(github.event.head_commit.message, 'release: cargo-binstall v')"
needs:
- info
- tag
- build
name: Package and release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get outputs
uses: actions/download-artifact@v3
with:
path: outputs/
- name: Pack archives
run: .github/scripts/pack-release-archives.sh
- name: Publish release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
with:
tag_name: ${{ needs.info.outputs.version }}
name: ${{ needs.info.outputs.version }}
body: ${{ needs.info.outputs.notes }}
append_body: true
files: |
outputs/cargo-binstall-*.zip
outputs/cargo-binstall-*.tgz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}