github操作中的用户输入(指定回购分支等)

时间:2019-12-20 18:04:51

标签: github github-actions

我想创建一个github动作来创建集成测试环境。我们已经有一个可以执行此操作的dockerized脚本,但是,环境由2个以上的存储库组成。因此,为了在开发过程中使其有效,我们需要指定其他存储库的分支。

例如,假设我在回购中有一个PR:前端,分支:my-feature-brach。它需要repo:后端,分支:他们的功能分支。我想从PR中使用该PR分支(在前端仓库中)的分支开始构建,然后问我后端仓库使用哪个分支。

这可能吗?

3 个答案:

答案 0 :(得分:1)

GitHub Actions可以使用GitHub API与PR进行交互。

这意味着,您的脚本可以在回购协议上创建注释,并由PR创建者(或您想要的任何人)对注释重新激活(特别是激活实际操作)。您确定格式),然后从分支开始测试。

另一种可能性是要求指定格式的PR(例如,注释中需要$setUnion)。该操作从PR描述中提取分支,并使用该分支。

请参见the GitHub API docs for PRsGitHub 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 Tokenrepo

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操作可以做什么的简要介绍。请查看存储库以获取全部详细信息。