GitHub 操作 获取提交消息

jro*_*004 21 github-actions

所以我正在构建一个动作,为一个将进入 Netlify 的项目进行构建。在操作中,我可以传递部署消息。在该部署消息中,我想传入触发构建的提交的提交消息。我正在查看文档,但找不到这是否可行。谢谢

小智 19

您可以在操作的github上下文中获取此信息,如下所述:https : //docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context

事件键将为您提供 webhook 内容,如下定义:https : //docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#push

因此,对于您的操作,您可以使用类似 ${{ github.event.head_commit.message }}

  • @AbhinabaChakraborty 并非每个事件都有 `github.event.head_commit` 对象。虽然 `push` 确实有:https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push `pull_request` 没有:https:// docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#pull_request (23认同)
  • Github Action 不再提供 `github.event.head_commit.message` 。看起来他们已从事件上下文中删除。 (6认同)
  • 嗯,看看三月底和本月早些时候的一些最近提交,我将工作流程中的提交消息设置为“${{ github.event.head_commit.message }}”,它仍然包含提交消息,包括正文。 (2认同)

fla*_*xel 18

您可以使用以下命令获取具体的提交消息:

github.event.head_commit.message
Run Code Online (Sandbox Code Playgroud)

或者,git log如果您使用 bash,则可以使用以下命令获取提交消息:

git log -1 --pretty=format:"%s"
Run Code Online (Sandbox Code Playgroud)

更新:关于文档,有效负载以及提交消息的调用已更改。可以使用 GitHub 操作中的以下行获取消息:

github.event.commits[0].message
Run Code Online (Sandbox Code Playgroud)


Aka*_*ash 16

commit-message通过以下键使用:

  • ${{ github.event.commits[0].message }}
  • ${{ github.event.head_commit.message }}

关于事件还有很多其他信息。对于前;以下工作流程将为您提供所有这些信息:

# .github/workflows/logger.yaml
name: Event Loggger
on: push

jobs:
  log-github-event-goodies:
    name: "LOG Everything on GitHub Event"
    runs-on: ubuntu-latest
    steps:
      - name: Logging
        run: |
          echo "${{toJSON(github.event)}}"

Run Code Online (Sandbox Code Playgroud)

  • 我必须使用不同的引号才能运行。我使用了 `echo '${{toJSON(github.event)}}'` (3认同)

Mar*_*acz 6

如果您尝试从不同的工作流程访问,例如:

on:
  workflow_run:
    workflows: Spec App
    branches: master
    types: completed // Only runs after spec is completed...
Run Code Online (Sandbox Code Playgroud)

你必须使用:

${{ github.event.workflow_run.head_commit.message }}
Run Code Online (Sandbox Code Playgroud)

  • 这非常重要,我花了一些时间才得到正确的事件名称 (2认同)

Ale*_* R. 5

两者之间有一个小的区别:

${{ github.event.commits[0].message }}
Run Code Online (Sandbox Code Playgroud)

当 github push 事件包含多个提交时,commit[0]包含最旧的提交。我在合并后看到过这个。

${{ github.event.head_commit.message }}
Run Code Online (Sandbox Code Playgroud)

另一方面,head_commit包含最年轻的提交。