首页 > 解决方案 > GitHub Actions 在错误的分支上运行工作流

问题描述

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

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 上构建传递后,我从developinto进行了快进合并staging

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

GitHub Actions 工作流程运行

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

GitHub 提供为 <code>staging</code> 创建 PR

所以这让我重新思考我关于为什么它试图运行develop而不是staging.

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

标签: githubgithub-actions

解决方案


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

推荐阅读