我想创建一个github动作来创建集成测试环境。我们已经有一个可以执行此操作的dockerized脚本,但是,环境由2个以上的存储库组成。因此,为了在开发过程中使其有效,我们需要指定其他存储库的分支。
例如,假设我在回购中有一个PR:前端,分支:my-feature-brach。它需要repo:后端,分支:他们的功能分支。我想从PR中使用该PR分支(在前端仓库中)的分支开始构建,然后问我后端仓库使用哪个分支。
这可能吗?
答案 0 :(得分:1)
GitHub Actions可以使用GitHub API与PR进行交互。
这意味着,您的脚本可以在回购协议上创建注释,并由PR创建者(或您想要的任何人)对注释重新激活(特别是激活实际操作)。您确定格式),然后从分支开始测试。
另一种可能性是要求指定格式的PR(例如,注释中需要$setUnion
)。该操作从PR描述中提取分支,并使用该分支。
请参见the GitHub API docs for PRs和GitHub actions docs for the github context(有关PR的信息) 供参考。
答案 1 :(得分:1)
您可以使用输入定义手动可执行的工作流程。
range
比起这些预定义参数,您可以使用:
on:
workflow_dispatch:
inputs:
environment:
description: 'Define env name'
required: true
default: 'prod'
branch:
description: 'Define branch name'
required: true
default: 'master'
我认为您可以以此支持您的用例。 更多详细信息here。
答案 2 :(得分:0)
您可以使用斜杠命令样式“ ChatOps”解决方案。操作slash-command-dispatch可以帮助您通过发布中的斜杠命令(例如/build
)触发工作流并提取请求注释。
这是拉取请求注释中build
斜杠命令的基本示例。 REPO_ACCESS_TOKEN
是范围为Personal Access Token的repo
name: Slash Command Dispatch
on:
issue_comment:
types: [created]
jobs:
slashCommandDispatch:
runs-on: ubuntu-latest
steps:
- name: Slash Command Dispatch
uses: peter-evans/slash-command-dispatch@v1
with:
token: ${{ secrets.REPO_ACCESS_TOKEN }}
commands: build
issue-type: pull-request
可以在此工作流程中处理命令。
name: Build Command
on:
repository_dispatch:
types: [build-command]
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the pull request branch
- uses: actions/checkout@v1
with:
repository: ${{ github.event.client_payload.pull_request.head.repo.full_name }}
ref: ${{ github.event.client_payload.pull_request.head.ref }}
path: ${{ github.event.repository.name }}
token: ${{ secrets.REPO_ACCESS_TOKEN }}
如果将参数传递给slash命令,则它们将与有效负载一起传递。例如,分支名称。
/build their-feature-branch
然后在工作流程中,您可以检出通过arg1
传递的分支。
- uses: actions/checkout@v1
with:
repository: backend-repo
ref: ${{ github.event.client_payload.slash_command.arg1 }}
path: backend-repo
token: ${{ secrets.REPO_ACCESS_TOKEN }}
这只是对slash-command-dispatch操作可以做什么的简要介绍。请查看存储库以获取全部详细信息。