在GitHub Actions中使用workflow_dispatch选择分支

3

enter image description here

大家好,我正在构建Github actions工作流以使用masterdevelop分支。 我知道可以通过重复使用以下操作来检出分支,但是如何从手动workflow_dispatch下拉菜单中传递变量呢?

   uses: actions/checkout@v2
   with:
     ref: develop

由于工作流只能在默认分支中创建,唯一的解决办法是创建触发器工作流,其重用核心工作流并将分支作为参数传递。

更新 以下是主干(生产)分支的代码:

name: Trigger ECR deploy


on:
  release:
      types: [published]
  workflow_dispatch:
  
jobs:
  deploy-terraform:
    uses: <reusable-workflow-path>
    with:
      AWS_REGION: "ap-south-1"                  
      ECR_REPOSITORY: "repo-name-here"
      BRANCH: "master"
    secrets:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

这是用于暂存环境的另一个文件

name: Trigger ECR deploy


on:
  release:
      types: [published]
  workflow_dispatch:
  
jobs:
  deploy-terraform:
    uses: <reusable-workflow-url>
    with:
      AWS_REGION: "ap-south-1"                  
      ECR_REPOSITORY: "repo-name-here"
      BRANCH: "develop"
      ENVIRONMENT: "staging"
    secrets:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

目前这两个文件都在主分支中。我已经在开发分支中重新创建了暂存文件(文件名保持不变)。然而,当我尝试触发工作流程时,仍然会出现如屏幕截图所示的错误。我传递给可重用工作流的参数就像一个解决方法。


3
“由于 workflow 只能在默认分支中创建”的说法是不正确的。要在 Github 存储库的“Actions”选项卡中显示 workflow,它需要位于默认分支上,但您可以在多个分支上拥有相同的 workflow。对于您的情况,如果您愿意,可以在 master 和 develop 上都使用此 workflow,并且每个分支都有不同的实现。您试过了吗? - GuiFalourd
嗨@GuiFalourd,我不知道这一点。我刚试了一下,但是当我尝试在工作流分发下拉菜单上切换分支时,仍然看到那个错误。我有两个文件,名称和标题相同(名称:**)。我假设如果文件名相同,则不同分支中的2个文件可以链接起来,但事实并非如此。 - Anatolii Vorobiov
你能否提供更多细节,说明你尝试编辑的问题是什么? - GuiFalourd
谢谢 @GuiFalourd,我已经更新了问题并添加了我的工作流文件代码片段。 - Anatolii Vorobiov
好的。如果工作流程的文件名默认分支和开发分支上相同(比如说.github/workflows/deploy.yml),那么一切都应该按预期运行。然而,在那里你是如何调用可重用的工作流程的呢?你是否也使用分支名称来指定需要使用哪个版本的可重用工作流程(使用@main@develop)? - GuiFalourd
不,我在我的公共代码库中调用可重用的工作流程(与调用代码库分开),它位于@main分支中。 - Anatolii Vorobiov
3个回答

3

请确认您的工作流文件是否位于 .github/workflows/<workflow.yml> 目录下?

此外,回答您原始问题,有关在 GUI 中呈现变量输入的问题,您需要在 on.workflow_dispatch 部分定义这些变量(参见:https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch):

name: Trigger ECR deploy


on:
  release:
      types: [published]
  workflow_dispatch:
    inputs:
      AWS_REGION:
        description: 'AWS Region to deploy in'
        required: true
        default: 'ap-south-1'
        type: choice
        options:
        - ap-south-1
        - ap-south-2
        - ....
      ECR_REPO:
        description: 'ECR repository'
        required: true
        type: string
      BRANCH:
        description: 'Branch to use'
        required: true
        default: 'master'
        type: choice
        options:
        - master
        - develop
  
jobs:
  deploy-terraform:
    uses: <reusable-workflow-path>
    with:
      AWS_REGION: ${{ inputs.AWS_REGION }}                  
      ECR_REPOSITORY: ${{ inputs.ECR_REPO }}
      BRANCH: ${{ inputs.BRANCH }}
    secrets:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

1

这个问题已经解决了一段时间了。正如GuiFalourd先生在评论中提到的那样,文件确实应该存在于两个分支中才能访问。我不能确定为什么它不起作用,但我意识到为了让暂存和生产分支中的工作流正常运行并且不会在合并时造成覆盖(除非我们忽略它),我需要创建一个允许有条件的运行的通用工作流。


-1
你可以使用以下内容进行检查。

官方文档 - workflow_dispatch

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'
        type: choice
        options:
        - info
        - warning
        - debug
      tags:
        description: 'Test scenario tags'
        required: false
        type: boolean
      environment:
        description: 'Environment to run tests against'
        type: environment
        required: true

jobs:
  log-the-inputs:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "Log level: $LEVEL"
          echo "Tags: $TAGS"
          echo "Environment: $ENVIRONMENT"
        env:
          LEVEL: ${{ inputs.logLevel }}
          TAGS: ${{ inputs.tags }}
          ENVIRONMENT: ${{ inputs.environment }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接