我有以下GitHub操作的. github/workflow/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:
# ...
我经历了以下步骤:
develope
分支上进行一些提交,并推动这些更改
我期望GitHub Actions在第2项之后运行测试和部署阶段作业。但是相反,它只是再次运行test
,而没有运行部署阶段
。
如上所述,即使在推送到暂存
之后,它仍然在Development
分支上运行,而不是在暂存
分支上运行。我有点假设这可能是由于一些奇怪的行为与快进合并。但是GitHub显然意识到我推动了暂存
,因为它提供了从该分支创建PR到master
。
因此,这让我重新思考我的理论,为什么它试图在develope
而不是staging
上运行。
为什么会发生这种事?有没有办法解决这个问题,以便合并到分期
实际上在分期
上运行工作流,而不是开发
?
我的方法是将触发器和相关作业分离到不同的工作流中。
因此,为了模仿您的示例,而不是ci。yml
我将有两个文件:
test.yml
deploy-staging.yml
在中。github/工作流/测试。yml
:
name: Test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
# ...
在中。github/工作流/发布阶段。yml
:
name: Release Staging
on:
push:
branches:
- staging
jobs:
deploy-staging:
runs-on: ubuntu-latest
steps:
# test steps ...
# release ...
诚然,这很烦人,因为发行版不会在与测试相同的测试运行中运行,但是您希望在部署之前确保测试都通过。
如果您想链接测试运行工作流以运行部署工作流,我可能会更改release staging
以使用Check-suite事件而不是push。
${{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比较陌生,我有两个工作——一个是运行我的测试,另一个是将我的项目部署到服务器上。 显然,我希望测试在每个分支上运行,但是部署应该只在某个东西被推送到主控时发生。 我正在努力寻找在特定分支机构工作的方法。我知道只在特定分支上运行整个工作流是可能的,但是这意味着我将有一个“测试”工作流和一个“部署”工作流。 这听起来像是一个解决方案,但它们可以并行运行。在理想情况下,测
我开始使用GitHub Actions,并且能够为Elixir设置CI管道,操作构建和测试没有任何问题。我还想使用heroku操作部署应用程序,所以我继续添加了GitHub中可用的应用程序,但在这样做之后,我收到了以下错误: 无效的工作流文件每个步骤都必须定义一个用途或运行键 这是我的工作流程在添加heroku操作之前的样子: 这就是我添加heroku动作的方式 以下是错误以了解更多详细信息。
到目前为止,我们还没有在我们项目上使用过分支。然而你并不知道,我们实际已经工作在了一个分支上了。这是因为在 Git 上的分支功能并不是可选的,你永远会工作在一个分支中的(当前的 “active”,或者 “checked out”,或者 “HEAD”分支)。 那么 Git 是如何知道你当前在哪个分支上工作的呢? “git status” 命令输出的第一行会向我们显示出 “在主分支(branch ma
我刚刚开始为一个项目设置一个Github操作工作流。我试图在一个容器内运行工作流步骤,并使用以下工作流定义: 但工作流无法声明容器立即停止到期。 我尝试了很多图片,包括官方文档中描述的“alpine:3.8”图片,但容器停止了。 根据GitHub操作的工作流语法,在容器部分中:“一个容器,用于运行作业中尚未指定容器的任何步骤。”我的假设是容器将被启动,步骤将在Docker容器内运行。
$ git branch 添加-a选项,就可以显示包括远端分支在内的分支清单。 创建分支 $ git branch <branchname> 高级篇 【教程1 操作分支】 1. 建立分支 修改分支的名称 $ git branch -m <oldbranch> <newbranch> 删除分支 $ git branch -d <branchname> 若有未合并到HEAD的提交,则不能删除分支。如果
我已经在GitHub Actions上工作了很长一段时间,我们有一个指定的工作流程。工作流程是用yaml编写的。 我试图为设置一些条件,并且在运行中跳过yaml的块。这意味着——如果针对X分支提出拉取请求——该代码块应该运行。 像这样的东西: 有人能帮我解决这个问题吗?