GitHub操作在错误的分支上运行工作流

GitHub操作在错误的分支上运行工作流,github,github-actions,Github,Github Actions,我有以下用于github操作的.github/workflows/ci.yml文件(为了便于理解此问题,删除了一些代码): 我完成了以下步骤: 在develope分支上进行一些提交,并推动这些更改 在GitHub操作的构建传递之后,我做了一个快速的合并,从develope到staging 我希望GitHub操作在第2项之后运行测试和部署登台作业。但是它只是再次运行测试,而没有运行部署暂存 如上所示,即使在按下staging之后,它仍然在develope分支而不是staging分支上运行它。我认

我有以下用于github操作的
.github/workflows/ci.yml
文件(为了便于理解此问题,删除了一些代码):

我完成了以下步骤:

  • develope
    分支上进行一些提交,并推动这些更改
  • 在GitHub操作的构建传递之后,我做了一个快速的合并,从
    develope
    staging
  • 我希望GitHub操作在第2项之后运行
    测试
    部署登台
    作业。但是它只是再次运行
    测试
    ,而没有运行
    部署暂存

    如上所示,即使在按下
    staging
    之后,它仍然在
    develope
    分支而不是
    staging
    分支上运行它。我认为这可能是由于快进合并的一些奇怪行为造成的。但GitHub显然意识到我推动了
    登台
    ,因为它提供了从该分支创建PR到
    master

    因此,这让我重新思考我的理论,为什么它试图在
    develope
    而不是
    staging
    上运行


    为什么会发生这种情况?有没有办法解决这个问题,因此合并到
    暂存
    实际上是在
    暂存
    上运行工作流,而不是
    开发

    我的方法是将触发器和相关作业分离到不同的工作流中

    因此,为了模仿您的示例,我没有使用
    ci.yml
    而是使用两个文件:

    • test.yml
    • deploy staging.yml

    .github/workflows/test.yml
    中:

    name: Test
    on: push
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          # ...
    
    name: Release Staging
    
    on:
      push:
        branches:
          - staging
    
    jobs:
      deploy-staging:
        runs-on: ubuntu-latest
        steps:
          # test steps ...
          # release ...
    
    .github/workflows/release staging.yml
    中:

    name: Test
    on: push
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          # ...
    
    name: Release Staging
    
    on:
      push:
        branches:
          - staging
    
    jobs:
      deploy-staging:
        runs-on: ubuntu-latest
        steps:
          # test steps ...
          # release ...
    
    诚然,这是令人恼火的,因为该版本没有在与测试相同的测试运行上运行,但是您希望在部署之前确保测试都通过


    如果您想链接测试运行工作流以运行部署工作流,我可能会将
    release staging
    更改为使用而不是推送

    ${{github.ref}
    将是
    refs/heads/staging
    而不仅仅是
    staging

    在这些情况下,最好的做法是在执行之前的步骤中回显要检查的变量值:

        steps:
          - name: Check inputs
            run: |
              echo github.ref is: ${{ github.ref }}
              echo github.event_name is: ${{ github.event_name }}
    

    它是否确实在
    开发
    分支上运行了
    部署登台
    作业的任何步骤,或者只是失败了,但没有运行任何步骤?Github操作有一个标记,它将不满足条件的作业标记为失败,而不是“未运行”。这就是为什么你需要具体说明发生了什么。有其他方法可以解决您遇到的问题,但我需要确切了解您的经历。此问题可能与: