GitHub操作在错误的分支上运行工作流
我有以下用于github操作的GitHub操作在错误的分支上运行工作流,github,github-actions,Github,Github Actions,我有以下用于github操作的.github/workflows/ci.yml文件(为了便于理解此问题,删除了一些代码): 我完成了以下步骤: 在develope分支上进行一些提交,并推动这些更改 在GitHub操作的构建传递之后,我做了一个快速的合并,从develope到staging 我希望GitHub操作在第2项之后运行测试和部署登台作业。但是它只是再次运行测试,而没有运行部署暂存 如上所示,即使在按下staging之后,它仍然在develope分支而不是staging分支上运行它。我认
.github/workflows/ci.yml
文件(为了便于理解此问题,删除了一些代码):
我完成了以下步骤:
develope
分支上进行一些提交,并推动这些更改develope
到staging
测试
和部署登台
作业。但是它只是再次运行测试
,而没有运行部署暂存
如上所示,即使在按下staging
之后,它仍然在develope
分支而不是staging
分支上运行它。我认为这可能是由于快进合并的一些奇怪行为造成的。但GitHub显然意识到我推动了登台
,因为它提供了从该分支创建PR到master
因此,这让我重新思考我的理论,为什么它试图在develope
而不是staging
上运行
为什么会发生这种情况?有没有办法解决这个问题,因此合并到
暂存
实际上是在暂存
上运行工作流,而不是开发
?我的方法是将触发器和相关作业分离到不同的工作流中
因此,为了模仿您的示例,我没有使用ci.yml
而是使用两个文件:
test.yml
deploy staging.yml
在
.github/workflows/test.yml
中:
name: Test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
# ...
name: Release Staging
on:
push:
branches:
- staging
jobs:
deploy-staging:
runs-on: ubuntu-latest
steps:
# test steps ...
# release ...
在.github/workflows/release staging.yml
中:
name: Test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
# ...
name: Release Staging
on:
push:
branches:
- staging
jobs:
deploy-staging:
runs-on: ubuntu-latest
steps:
# test steps ...
# release ...
诚然,这是令人恼火的,因为该版本没有在与测试相同的测试运行上运行,但是您希望在部署之前确保测试都通过
如果您想链接测试运行工作流以运行部署工作流,我可能会将
release staging
更改为使用而不是推送 ${{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操作有一个标记,它将不满足条件的作业标记为失败,而不是“未运行”。这就是为什么你需要具体说明发生了什么。有其他方法可以解决您遇到的问题,但我需要确切了解您的经历。此问题可能与: