我有以下 .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
上做一些提交分支,并推送这些更改。 develop
进行了快速向前合并。进入 staging
. 我希望 GitHub Actions 运行
test
和 deploy-staging
第 2 项之后的工作。但它只是运行 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/