我正在为项目存储库设置Github操作。
工作流程包括以下步骤:
然而,我有两种不同的Kubernetes部署:一种用于开发,另一种用于生产。因此,我还有两个Github操作工作流。
每次推送提交时,都会触发Github开发操作工作流:
on:
push:
branches:
- master
但我不希望在我的生产工作流程中出现这种情况。我需要一个手动触发器,比如“发送到生产”按钮。我在文件中没有看到任何类似的东西。
是否有办法在Github操作中手动触发工作流?
如何在Github Actions、Docker或库伯内特斯上拆分我的开发和生产工作流程以实现我想要的?
更新:有关斜杠命令样式的“ChatOps”解决方案,请参阅斜杠命令调度操作。这可以允许您从发布和拉取请求注释中使用斜杠命令(例如部署)触发工作流。
下面是部署斜杠命令的基本示例REPO\u ACCESS\u TOKEN是一种范围有限的个人访问令牌
name: Slash Command Dispatch
on:
issue_comment:
types: [created]
jobs:
slashCommandDispatch:
runs-on: ubuntu-latest
steps:
- name: Slash Command Dispatch
uses: peter-evans/slash-command-dispatch@v1
with:
token: ${{ secrets.REPO_ACCESS_TOKEN }}
commands: deploy
可以在此工作流中处理该命令。
name: Deploy Command
on:
repository_dispatch:
types: [deploy-command]
有更多的选项和不同的设置。有关完整使用说明,请参阅斜杠命令调度。
原始答案:
repository_dispatch
工作流可以通过调用GitHub API手动触发,如下所示。
on:
repository_dispatch:
types: [production-deploy]
[用户名]
是GitHub用户名
curl -XPOST -u "[username]:[token]" \
-H "Accept: application/vnd.github.everest-preview+json" \
-H "Content-Type: application/json" \
https://api.github.com/repos/[username]/[repository]/dispatches \
--data '{"event_type": "production-deploy"}'
编辑:
解释工作流调度使用的精彩推文:https://twitter.com/github/status/1321859709075394563?s=19
是否有办法在Github操作中手动触发工作流?
我有一个小黑客这样做...
使用Watch事件,您可以按star手动触发操作或取消存储库。工作流中事件的代码是:
on:
watch
types: [started]
我知道这很奇怪,但很有效!然而,如果是与潜在明星的公开回购,这并不是最好的方式。
如何在Github Actions、Docker或库伯内特斯上拆分我的开发和生产工作流程以实现我想要的?
在Github操作中,我的意思是,您可以执行多个工作流/作业,并按目标分支或事件进行筛选。您可以组合多个事件,例如触发推送工作流,并在午夜使用cron。
是否有办法在Github操作中手动触发工作流?
您可以考虑,从2020年7月起:
(注:或多个工作流,通过新的复合运行步骤,2020年8月)
现在,您可以创建使用新的工作流调度事件手动触发的工作流
然后,您将在“操作”选项卡上看到“运行工作流”按钮,使您能够轻松触发运行。
您可以选择在哪个分支上运行工作流。
philippe在评论中补充道:
文档中没有提到的一件事:工作流必须存在于默认分支上,才能显示“运行工作流”按钮
将其添加到此处后,您可以继续在其自己的分支上开发操作,并且使用按钮运行时更改将生效
文件如下:
此外,您还可以选择指定输入,GitHub将在UI中以表单元素的形式显示这些输入。工作流调度输入的指定格式与操作输入的格式相同。
例如:
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
触发的工作流接收github中的输入。事件上下文。
例如:
jobs:
printInputs:
runs-on: ubuntu-latest
steps:
- run: |
echo "Log level: ${{ github.event.inputs.logLevel }}"
echo "Tags: ${{ github.event.inputs.tags }}"
Shim在评论中补充道:
您可以将工作流\u调度添加到还有其他触发器的工作流中(如推送和/或调度)
例如:
on:
workflow_dispatch:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
我开始使用GitHub Actions,并且能够为Elixir设置CI管道,操作构建和测试没有任何问题。我还想使用heroku操作部署应用程序,所以我继续添加了GitHub中可用的应用程序,但在这样做之后,我收到了以下错误: 无效的工作流文件每个步骤都必须定义一个用途或运行键 这是我的工作流程在添加heroku操作之前的样子: 这就是我添加heroku动作的方式 以下是错误以了解更多详细信息。
我正试图通过遵循本教程,使用GitHub操作构建docker映像并将其推送到Amazon ECR 我正在尝试为此repo设置GitHub操作,因此我在<代码>中创建了一个新的工作流。github/workflows目录。 DockerFile已成功创建并生成。 现在,在创建
我有以下GitHub操作的文件(删除了一些代码,以便更容易理解这个问题): 我经历了以下步骤: 在分支上进行一些提交,并推动这些更改 我期望GitHub Actions在第2项之后运行测试和部署阶段作业。但是相反,它只是再次运行,而没有运行。 如上所述,即使在推送到之后,它仍然在分支上运行,而不是在分支上运行。我有点假设这可能是由于一些奇怪的行为与快进合并。但是GitHub显然意识到我推动了,因为
我刚刚开始为一个项目设置一个Github操作工作流。我试图在一个容器内运行工作流步骤,并使用以下工作流定义: 但工作流无法声明容器立即停止到期。 我尝试了很多图片,包括官方文档中描述的“alpine:3.8”图片,但容器停止了。 根据GitHub操作的工作流语法,在容器部分中:“一个容器,用于运行作业中尚未指定容器的任何步骤。”我的假设是容器将被启动,步骤将在Docker容器内运行。
我有一个Github操作工作流,每小时、每小时触发一次。 当工作流运行时,它不会在计划的时间运行,即它不会在整点运行。延迟时间可能超过30分钟。我不知道这是为什么。 它不是工作流本身,因为当我在大约30秒内手动运行它时,它会执行。 有人能告诉我是什么原因造成了延误吗? 这是一个时区问题吗?即使如此,在两次连续的工作流运行之间也应该有一个固定的1小时间隔,但事实并非如此。 这是代码。 Github回
我在GitHub中有一个包含多个服务的monorepo 我想在两个条件下同时构建它们(使用GitHub操作): 标记-使用标记名称构建图像() 分支main-使用带有缓存的标签构建图像。 我找不到如何创建通用工作流和修改参数(如函数)的方法。 我能想到的唯一解决方案是创建一个复合操作,如下所示: 但现在我遇到了一个问题,需要在两个工作流中指定服务的所有作业,例如: 主要分支机构工作流: 标记分支工