Add message documentation for GitCommitInformation #863
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
type: string | |
description: The version you intend to release without leading 'v' (eg x.y.z and not vx.y.z) | |
pull_request: | |
types: [closed] | |
push: | |
branches: | |
- "release/**" | |
- "next/**" | |
tags: | |
- v* | |
release: | |
types: [created] | |
env: | |
VERSION: ${{ github.event.inputs.version }} | |
APP_ID: 251311 | |
jobs: | |
prepare: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version != '' }} | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{env.APP_ID}} | |
private_key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }} | |
permissions: >- | |
{"contents": "write", "pull_requests": "write"} | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "1.21.x" | |
- name: Install Buf | |
run: make installbuf | |
- name: Update Buf Version | |
run: make updateversion | |
- name: Create PR | |
id: cpr | |
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 | |
with: | |
add-paths: . | |
commit-message: "Update version to v${{env.VERSION}}" | |
branch: release/v${{env.VERSION}} | |
delete-branch: true | |
title: "Release v${{env.VERSION}}" | |
body: | | |
Release prepared for ${{env.VERSION}} | |
Reminder: Update the changelog | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: Slack Notification | |
run: | | |
jq --null-input '{ text: "BufCLI Release v${{env.VERSION}} has started: ${{ steps.cpr.outputs.pull-request-url }}" }' \ | |
| curl -sSL -X POST -H 'Content-Type: application/json' -d @- '${{ secrets.SLACK_RELEASE_NOTIFICATION_WEBHOOK }}' | |
verify: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'release') }} | |
steps: | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Check changelog is modified | |
run: | | |
files=`(git fetch origin main:main) && (git diff --name-only main)` | |
for file in $files; do | |
if [ "$file" = "CHANGELOG.md" ]; then | |
exit 0 | |
fi | |
done | |
echo ERROR: CHANGELOG has not been updated | |
exit 1 | |
tag: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release') }} | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{env.APP_ID}} | |
private_key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }} | |
repository: ${{ github.repository }} | |
permissions: >- | |
{"contents": "write"} | |
- name: Set VERSION variable from tag | |
run: | | |
VERSION=${{github.head_ref}} | |
echo "VERSION=${VERSION##*/}" >> $GITHUB_ENV | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
fetch-depth: 0 | |
- name: Tag Release | |
run: | | |
git config --global user.password ${{ steps.generate_token.outputs.token }} | |
git tag -d ${{env.VERSION}} 2> /dev/null || echo 'local ref does not exist' | |
git push origin :${{env.VERSION}} 2> /dev/null || echo 'remote ref does not exist' | |
git tag ${{env.VERSION}} | |
git push origin ${{env.VERSION}} | |
perform: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'v') && github.ref_type == 'tag'}} | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{env.APP_ID}} | |
private_key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }} | |
repository: ${{ github.repository }} | |
permissions: >- | |
{"contents": "write", "pull_requests": "write"} | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set VERSION variable from tag | |
run: | | |
echo "VERSION=${{github.ref_name}}" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "1.21.x" | |
- name: Create assets | |
env: | |
RELEASE_MINISIGN_PRIVATE_KEY: ${{secrets.RELEASE_MINISIGN_PRIVATE_KEY}} | |
RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD: ${{secrets.RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD}} | |
run: make bufrelease | |
- name: unset keys | |
run: | | |
unset RELEASE_MINISIGN_PRIVATE_KEY | |
unset RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD | |
- name: Fetch Changelog | |
run: .github/actions/changelog-action/entrypoint.sh > ${{env.VERSION}}-CHANGELOG.md | |
- name: Release | |
id: ghr | |
uses: softprops/action-gh-release@v1 | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
body_path: ${{env.VERSION}}-CHANGELOG.md | |
files: | | |
${{github.workspace}}/.build/release/buf/assets/* | |
- name: Slack Notification | |
run: | | |
jq --null-input '{ text: "BufCLI Release ${{env.VERSION}} is complete: ${{ steps.ghr.outputs.url }}" }' \ | |
| curl -sSL -X POST -H 'Content-Type: application/json' -d @- '${{ secrets.SLACK_RELEASE_NOTIFICATION_WEBHOOK }}' | |
post-release: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'release' }} | |
outputs: | |
version: ${{ steps.output_version.outputs.version }} | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{env.APP_ID}} | |
private_key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }} | |
repository: ${{ github.repository }} | |
permissions: >- | |
{"contents": "write", "pull_requests": "write"} | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- name: Set NEXT VERSION variable from tag | |
run: | | |
NEXT_VERSION=$(echo ${{github.ref_name}} | awk -F. -v OFS=. '{$NF += 1 ; print}') | |
echo "NEXT_VERSION=${NEXT_VERSION:1}-dev" >> $GITHUB_ENV | |
- name: update version | |
run: make updateversion VERSION=${{env.NEXT_VERSION}} | |
- name: update home brew badge | |
run: make updatehomebrewbadge VERSION=${{github.ref_name}} | |
- name: create PR | |
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 | |
with: | |
add-paths: . | |
commit-message: "Back to development" | |
branch: next/${{env.NEXT_VERSION}} | |
delete-branch: true | |
base: main | |
title: "Return to development" | |
body: Release complete for ${{github.ref_name}} | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: Output Version | |
id: output_version | |
uses: actions/github-script@v6 | |
with: | |
script: | |
core.setOutput('version', "${{github.ref_name}}".replace("v", "")); | |
trigger-maven-update: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.BUF_MAVEN_PUBLISH_APP_ID}} | |
private_key: ${{ secrets.BUF_MAVEN_PUBLISH_APP_PRIVATE_KEY }} | |
repository: "bufbuild/buf-maven-publish" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger maven update | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "buf-maven-publish", | |
workflow_id: "update-buf-version.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) | |
trigger-npm-publish: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.BUF_NPM_PUBLISH_RELEASE_APP_ID}} | |
private_key: ${{ secrets.BUF_NPM_PUBLISH_RELEASE_APP_PRIVATE_KEY }} | |
repository: "bufbuild/buf-npm-publish" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger npm publish | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "buf-npm-publish", | |
workflow_id: "npm-publish.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) | |
trigger-homebrew-buf-release: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.HOMEBREW_RELEASE_APP_ID}} | |
private_key: ${{ secrets.HOMEBREW_RELEASE_APP_PRIVATE_KEY }} | |
repository: "bufbuild/homebrew-buf" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger homebrew-buf release | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "homebrew-buf", | |
workflow_id: "release.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) | |
trigger-vim-buf-release: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.VIM_BUF_RELEASE_APP_ID}} | |
private_key: ${{ secrets.VIM_BUF_RELEASE_APP_PRIVATE_KEY }} | |
repository: "bufbuild/vim-buf" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger vim-buf release | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "vim-buf", | |
workflow_id: "release.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) | |
trigger-buf-build-release: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.BUF_BUILD_RELEASE_APP_ID}} | |
private_key: ${{ secrets.BUF_BUILD_RELEASE_APP_PRIVATE_KEY }} | |
repository: "bufbuild/buf.build" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger buf.build release | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "buf.build", | |
workflow_id: "release.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) | |
trigger-buf-setup-action-release: | |
runs-on: ubuntu-latest | |
needs: post-release | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@0914d50df753bbc42180d982a6550f195390069f | |
with: | |
app_id: ${{secrets.BUF_SETUP_ACTION_RELEASE_APP_ID}} | |
private_key: ${{ secrets.BUF_SETUP_ACTION_RELEASE_APP_PRIVATE_KEY }} | |
repository: "bufbuild/buf-setup-action" | |
permissions: >- | |
{"actions": "write"} | |
- name: trigger buf-setup-action release | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{steps.generate_token.outputs.token}} | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: "bufbuild", | |
repo: "buf-setup-action", | |
workflow_id: "release.yaml", | |
ref: "main", | |
inputs: { | |
version: "${{needs.post-release.outputs.version}}" | |
} | |
}) |