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

标签 github github-actions

我有以下 .github/workflows/ci.yml GitHub 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:
      # ...

我经历了以下步骤:
  • develop 上做一些提交分支,并推送这些更改。
  • 在 GitHub Actions 上构建通过后,我从 develop 进行了快速向前合并。进入 staging .

  • 我希望 GitHub Actions 运行 testdeploy-staging第 2 项之后的工作。但它只是运行 test再次不运行 deploy-staging .

    GitHub Actions Workflow Runs

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

    GitHub offering to create a PR for <code>staging</code>

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

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

    最佳答案

    ${{ 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 Actions 在错误的分支上运行工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020994/

    相关文章:

    java - Gradle 依赖项是否不如将 jar 下载到 libs 安全?

    git - 无法将文件夹 www 添加到 github 存储库

    git - 将本地仓库与 Github 项目 merge

    github-actions - 如何使用 Github Actions 手动触发步骤

    image - 使用Jenkins docker镜像无法连接github

    firebase - 错误:获取存储源时出错:generic::unknown... 当通过 GitHub Actions 部署 GCP Cloud Function 时

    github - 用github Action 缓存npm依赖

    github - 如何为我的 Github 操作找到正确的入站规则以部署到我的 AWS EC2 服务器上?

    gradle - 在 Github Actions 中找不到或加载主类 org.gradle.wrapper.GradleWrapperMain

    github - 从 GitHub 删除已关闭的拉取请求