如何在合并 PR 时在 GitHub 上创建标签?

How to create a tag on GitHub when a PR is merged?

我当前的工作流程需要在每个 PR 上都有一个版本 Bump,所以我想利用它并在每个 PR 合并时自动在 GitHub 上创建一个标签,因此它出现在 "release" 部分。

我看到我可以写一个 post-merge hook。我怀疑该挂钩是在我的机器上本地运行,还是在 GitHub 上远程运行,或者两者都运行(假设我在 GitHub 上合并 PR,而不是在本地运行。这是怎么回事?

I can write a post-merge hook. My doubt is if that hook runs locally in my machine, remotely on GitHub, or both

2015:它肯定不会在 GitHub 上 运行(这对于 GitHub 到 运行 任何用户提供的钩子都是不安全的)。

你可以拥有的是 Webhook on pull request: by listening to its JSON payload, you can add a tag and push it back to GitHub if the PR event 表示 merged PR。
(也就是说,如果action是“closed”,而merged键是“true”)


2020:肯定会运行上GitHub:那叫GitHub Actions.

在 OP 的情况下,GitHub Tag Action

A GitHub Action to automatically bump and tag master, on merge, with the latest SemVer formatted version. Works on any platform.

Usage

name: Bump version
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
        with:
          # Fetches entire history, so we can analyze commits since last tag
          fetch-depth: 0
      - name: Bump version and push tag
        uses: mathieudutour/github-tag-action@v4.5
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

一个类似且更新的操作:github-tag-action
参见“Creating A Github Action to Tag Commits" from Nick Sjostrom.

name: Bump version
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Bump version and push tag
      uses: anothrNick/github-tag-action@master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        REPO_OWNER: anothrNick