【问题标题】:Github Actions - Same workflow name, different branches. Which takes priority?Github Actions - 相同的工作流名称,不同的分支。哪个优先?
【发布时间】:2022-01-16 00:13:20
【问题描述】:

如果我在名称和内容相同的两个分支“dev”和“main”中有一个工作流,哪个优先?或者两个工作流程都会运行?如果两个工作流的内容不同,但工作流名称相同会​​怎样?

假设我在下面的主分支上有这个工作流,但我在具有相同文件名和触发器的“dev”分支上有一个稍微不同的版本(都在 push 分支 dev 上)。两者都会在推送到“开发”时执行吗?

name: .NET Core CI

on:   
  push:
    branches:
      - dev

env:
  AZURE_WEBAPP_NAME: ghactiontest    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release -o '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v2
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

【问题讨论】:

  • 编辑您的问题并显示工作流程。
  • 它可以依赖于工作流触发器。但是,如果它不是(全局)推送触发器,则 default 分支工作流将被优先考虑(在您的情况下,主分支)。请注意,如果使用 wokflow_dispatch 触发器,则可以选择执行工作流的分支。

标签: github github-actions


【解决方案1】:

我在“main”和“dev”分支上用一个简单的 hello world 工作流对此进行了测试。如果给定分支存在“推送”触发器,则工作流必须存在于该分支上。如果“dev”上没有相应的工作流,则“main”上的工作流带有“main”和“dev”的触发器只会在推送到“main”时执行。

name: .NET Core CI Cert

on:   
  push:
    branches:
      - cert
      - main
jobs:
  my-job:
    runs-on: ubuntu-latest
    steps:
      - name: my-step
        run: echo "Hello World Cert Branch!"

【讨论】:

    【解决方案2】:

    通常,此工作流程适用于 devmain - 您能发布您的确切工作流程吗?

    具有相同名称的两个工作流也将单独运行,并且将被视为具有两个不同 workflow_ids 的两个不同工作流 - 但它们将使用相同的名称显示。

    【讨论】:

      【解决方案3】:

      由于假设所有工作流都位于.github/workflows 目录中,并且理论上它们不能位于子目录中,因此您不能在此目录中创建多个同名的工作流。 要回答您的其他问题,如果您想为特定分支运行工作流,您可以使用以下分支语法:

      on:
        push:
          branches:
            - main
      

      只需创建具有不同名称的工作流,并在相应分支触发推送或拉取请求事件时触发它们。

      【讨论】:

      • 您可以在两个不同的分支中创建两个具有相同名称的文件 - 我认为在这种情况下您将获得两个不同的 id
      • @mmomtchev 你能在官方文档中指出这个理论吗?
      • 个人观察,我用API,看到id
      猜你喜欢
      • 2020-03-20
      • 2022-07-04
      • 1970-01-01
      • 2020-12-16
      • 2021-05-12
      • 2020-03-17
      • 2020-08-20
      • 1970-01-01
      相关资源
      最近更新 更多