簡體   English   中英

在 github 操作中的 workflow_dispatch 上使用選定的分支

[英]use selected branch on workflow_dispatch in github actions

在此處輸入圖像描述

大家好,我正在構建 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 分支中。 我在開發分支中重新創建了暫存文件(我保持文件名相同)。 但是,當我 go 觸發工作流時,我仍然會收到此錯誤,如屏幕截圖所示。 我傳遞給可重用工作流的參數就像一種解決方法。

您能否確認您的工作流程文件位於.github/workflows/<workflow.yml>中?

此外,要回答有關在 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 }}

您可以使用以下方法進行檢查。

官方文檔 - 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 }}

這個問題前段時間已經解決了。 正如 GuiFalourd 爵士在評論中提到的那樣,文件確實應該在兩個分支中都可以訪問。 我不能確切地說為什么這不起作用,但我意識到要允許工作流在 staging 和 prod 分支中正確地轉到 function 並且不會在合並時導致覆蓋(除非我們忽略它),我需要創建一個通用工作流,它允許有條件的運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM