【问题标题】:use selected branch on workflow_dispatch in github actions在 github 操作中使用 workflow_dispatch 上的选定分支
【发布时间】:2022-08-15 13:01:03
【问题描述】:

大家好,我正在构建要使用的 Github 操作工作流掌握和开发分支机构。 我知道我可以通过重用下面的操作来检查分支,但是我实际上如何从手动 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 }}

这两个文件目前都在 master 分支中。我在开发分支中重新创建了暂存文件(我保持文件名相同)。但是,当我去触发工作流程时,我仍然会收到此错误,如屏幕截图所示。我传递给可重用工作流的参数就像一种解决方法。

  • Since workflows can be created only in default branch。这种说法是不正确的。工作流需要位于默认分支上才能显示在行动Github 存储库上的选项卡,但您可以在多个分支中拥有健全的工作流程。在您的情况下,您可以在掌握和开发如果您愿意,每个都有不同的实现。你试过了吗?
  • 嗨@GuiFalourd,我不知道。我刚刚尝试过,但是当我尝试在工作流调度下拉列表中切换分支时,我仍然看到该错误。我有 2 个具有相同名称和相同标题的文件(名称:**)。我假设如果文件名相同,则可以链接不同分支中的 2 个文件,但它看起来不像。
  • 您能否详细说明您尝试编辑问题的内容? ???
  • 谢谢@GuiFalourd,我已经用我的工作流文件代码 sn-ps 更新了这个问题。
  • 好的。如果工作流程,一切都应该按预期工作文件名在默认分公司和开发分支。但是,您如何称呼那里的可重用工作流程?您是否也在使用分支名称来指定需要使用哪个版本的可重用工作流(使用@main 或@develop)?

标签: github github-actions


【解决方案1】:

您能否确认您的工作流程文件位于.github/workflows/&lt;workflow.yml&gt; 中?

此外,要回答关于在 GUI 中显示变量输入的原始问题,您需要在 on.workflow_dispactch 部分 (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 }}

【讨论】:

    【解决方案2】:

    您可以使用以下方法进行检查。

    official docs - 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 }}
    

    【讨论】:

      【解决方案3】:

      这个问题前段时间已经解决了。正如 GuiFalourd 爵士在 cmets 中提到的那样,文件确实应该在两个分支中都可以访问。我不能确切地说为什么这不起作用,但我意识到要允许 staging 和 prod 分支中的工作流正常运行并且不会导致合并时覆盖(除非我们忽略它),我需要创建一个通用工作流,允许有条件的运行。

      【讨论】:

        猜你喜欢
        • 2023-01-30
        • 2022-06-10
        • 2020-03-06
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 2022-12-01
        • 1970-01-01
        • 2020-04-13
        相关资源
        最近更新 更多