创建或更新评论
这是一个GitHub Action,用于创建或更新问题或拉取请求的评论。
使用方法
为问题或拉取请求添加评论
- name: 创建评论
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: 1
body: |
这是一个多行测试评论
- 使用GitHub **Markdown** :sparkles:
- 由[create-or-update-comment][1]创建
[1]: https://github.com/peter-evans/create-or-update-comment
reactions: '+1'
更新评论
- name: 更新评论
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: 557858210
body: |
**编辑:** 一些额外信息
reactions: eyes
添加评论反应
- name: 添加反应
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: 557858210
reactions: |
heart
hooray
laugh
Action 输入参数
名称 | 描述 | 默认值 |
---|---|---|
token | GITHUB_TOKEN (issues: write , pull-requests: write ) 或具有 repo 作用域的 PAT。 | GITHUB_TOKEN |
repository | 要创建或更新评论的仓库的完整名称。 | 当前仓库 |
issue-number | 要创建评论的问题或拉取请求的编号。 | |
comment-id | 要更新的评论的ID。 | |
body | 评论内容。不能与 body-path 同时使用。 | |
body-path | 包含评论内容的文件路径。不能与 body 同时使用。 | |
edit-mode | 更新评论时的模式,replace 或 append 。 | append |
append-separator | 追加到现有评论时使用的分隔符。(newline 、space 、none ) | newline |
reactions | 要添加到评论的反应列表,用逗号或换行符分隔。(+1 、-1 、laugh 、confused 、heart 、hooray 、rocket 、eyes ) | |
reactions-edit-mode | 更新评论反应时的模式,replace 或 append 。 | append |
注意:在公共仓库中,当由 fork 触发时,此 action 在 pull_request
工作流中不起作用。任何尝试都会遇到错误 Resource not accessible by integration
。这是由于 GitHub Actions 施加的 token 限制。私有仓库可以配置为启用工作流,允许来自 fork 的工作流无限制运行。详细解释请参见此处。或者,使用 pull_request_target
事件来评论拉取请求。
输出
创建的评论的 ID 将作为输出,供后续步骤使用。 注意,为了读取步骤输出,action 步骤必须有一个 id。
- name: 创建评论
uses: peter-evans/create-or-update-comment@v4
id: couc
with:
issue-number: 1
body: |
我的评论
- name: 检查输出
run: |
echo "评论 ID - ${{ steps.couc.outputs.comment-id }}"
如何找到评论的 id
如何找到评论的 id 将很大程度上取决于具体用例。
这里有一个例子,在 issue_comment
事件期间,可以在 github
上下文中找到 id。
on:
issue_comment:
types: [created]
jobs:
commentCreated:
runs-on: ubuntu-latest
steps:
- name: 添加反应
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ github.event.comment.id }}
reactions: eyes
某些用例可能会发现 find-comment action 很有用。 它会在问题或拉取请求中搜索包含指定字符串的第一条评论,和/或由指定作者发布的评论。 详细用法请参见该仓库。
在下面的例子中,find-comment 用于确定是否已经在拉取请求上创建了评论。
如果 find-comment action 输出的 comment-id
返回空字符串,将创建一个新评论。
如果返回一个值,说明评论已存在,内容将被替换。
- name: 查找评论
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: 构建输出
- name: 创建或更新评论
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
构建输出
${{ steps.build.outputs.build-log }}
edit-mode: replace
如果需要,可以将创建和更新步骤分开,以获得更大的控制权。
- name: 查找评论
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: 这条评论是由机器人写的!
- name: 创建评论
if: steps.fc.outputs.comment-id == ''
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
这条评论是由机器人写的!
reactions: rocket
- name: 更新评论
if: steps.fc.outputs.comment-id != ''
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
body: |
这条评论已被更新!
reactions: hooray
从文件设置评论内容
- name: 创建评论
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: 1
body-path: 'comment-body.md'
使用 markdown 模板
在这个例子中,将 markdown 模板文件添加到仓库的 .github/comment-template.md
位置,内容如下:
这是一个测试评论模板
渲染模板变量,如 {{ .foo }} 和 {{ .bar }}。
使用 render-template action 渲染模板,然后使用结果创建评论。
- name: 渲染模板
id: template
uses: chuhlomin/render-template@v1.4
with:
template: .github/comment-template.md
vars: |
foo: 这个
bar: 那个
- name: 创建评论
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: 1
body: ${{ steps.template.outputs.result }}
访问其他仓库的问题和评论
你可以通过使用 PAT 而不是 GITHUB_TOKEN
来在另一个仓库中创建和更新评论。
与 PAT 关联的用户必须对该仓库具有写入权限。