我有以下用于 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:
# ...
我经历了以下步骤:
develop
分支上进行一些提交,并推送这些更改。 develop
到 staging
的快速合并。 我希望 GitHub Actions 在第 2 项之后运行
test
和 deploy-staging
作业。但它只是再次运行 test
而不运行 deploy-staging
。正如您在上面看到的,即使在推送到
staging
之后,它仍然在 develop
分支而不是 staging
分支上运行它。我有点假设这可能是由于快进合并的一些奇怪行为。但是 GitHub 显然意识到我推送到 staging
,因为它提供了从该分支创建 PR 到 master
。所以这让我重新思考我的理论,为什么它试图在
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/