我有以下的 .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
分支。
test
和 deploy-staging
两个作业。但实际上它只是再次运行了 test
,而没有运行 deploy-staging
。
正如您在上面所看到的,即使将代码推送到了“staging”分支,它仍然在“develop”分支上运行,而不是“staging”分支。我有点猜测这可能是由于快进合并的某种奇怪行为引起的。但是GitHub显然已经识别出我将代码推送到了“staging”,因为它提供了从该分支创建PR到“master”的选项。
这让我重新思考了一下它为什么试图在develop
上运行而不是staging
的理论。为什么会发生这种情况?是否有任何方法可以修复此问题,以便将合并到
staging
实际上在staging
上运行工作流程,而不是develop
?
deploy-staging
任务中执行任何步骤,还是仅失败但没有运行任何步骤? Github actions存在一个[错误](https://github.community/t5/GitHub-Actions/BUG-Workflows-report-failure-when-action-did-not-run-and/m-p/41566),即将未满足某个条件的任务标记为失败,而不是“未运行”。这就是为什么您需要明确指定发生了什么的原因。还有其他解决问题的方法,但我需要知道您具体遇到了什么问题。 - smac89