【问题标题】:GitHub Actions Running Workflow on Wrong BranchGitHub Actions 在错误的分支上运行工作流
【发布时间】:2020-03-20 02:31:17
【问题描述】:

我有以下用于 GitHub Actions 的 .github/workflows/ci.yml 文件(删除了一些代码以便更容易理解这个问题):

name: CI
on:
  push:
  release:
    types: [published]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      # ...
  deploy-staging:
    runs-on: ubuntu-latest
    needs: test
    if: github.event_name == 'push' && github.ref == 'staging'
    steps:
      # ...

我经历了以下步骤:

  1. develop 分支上进行一些提交,然后推送这些更改。
  2. 在 GitHub Actions 上构建传递后,我进行了从 developstaging 的快进合并。

我希望 GitHub Actions 在第 2 项之后同时运行 testdeploy-staging 作业。但它只是再次运行 test 而没有运行 deploy-staging

正如您在上面看到的,即使在推送到staging 之后,它仍然在develop 分支而不是staging 分支上运行它。我有点假设这可能是由于快进合并的一些奇怪行为。但 GitHub 显然认识到我推送到 staging,因为它提出要从该分支创建一个 PR 到 master

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

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

【问题讨论】:

  • 它是否实际运行,即在development 分支上执行deploy-staging 作业的任何步骤,或者它只是失败但没有运行任何步骤? Github 操作有一个bug,它将不满足条件的作业标记为失败而不是“未运行”。这就是为什么您需要准确说明发生了什么。还有其他方法可以解决您遇到的问题,但我需要确切知道您遇到了什么。

标签: github github-actions


【解决方案1】:

${{ 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 }}

【讨论】:

    【解决方案2】:

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

    因此,为了模仿您的示例,我将有两个文件,而不是 ci.yml

    • test.yml
    • deploy-staging.yml

    .github/workflows/test.yml:

    name: Test
    on: push
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          # ...
    

    .github/workflows/release-staging.yml:

    name: Release Staging
    
    on:
      push:
        branches:
          - staging
    
    jobs:
      deploy-staging:
        runs-on: ubuntu-latest
        steps:
          # test steps ...
          # release ...
    

    诚然,这很烦人,因为该版本不会在与测试相同的测试运行中运行,但您想确保在部署之前测试全部通过。

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

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2020-04-02
      • 2020-01-09
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多