首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Github操作中的手动工作流触发器

Github操作中的手动工作流触发器
EN

Stack Overflow用户
提问于 2019-11-19 11:33:41
回答 7查看 28.6K关注 0票数 37

我正在为项目存储库设置Github操作。

工作流由以下步骤组成:

  • 塑造码头形象
  • 将图像推送到容器注册表
  • 展开Kubernetes部署。

但是,我有两个不同的Kubernetes部署:一个用于开发,一个用于生产。因此,我还有两个Github工作流。

每次推送提交时,都会触发Github用于开发的工作流程:

代码语言:javascript
运行
复制
on:
  push:
    branches:
    - master

但我不想因为我的生产流程而这么做。我需要一个手动触发器,比如发送到生产按钮。我在文件里没有看到任何接近那个的东西。

是否有一种方法可以在Github操作中手动触发工作流?

如何将我的开发和生产工作流分开以实现我想要的结果,无论是在Github操作、Docker还是Kubernetes上?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2020-07-07 04:35:27

是否有一种方式来手动触发一个工作流程中的Github动作?

你可以考虑一下,来自July2020

GitHub操作:使用workflow_dispatch的手动触发器

(注:或多个工作流,通过新的复合运行步骤,2020年8月)

现在,您可以创建使用新的workflow_dispatch事件手动触发的工作流。 然后,您将在Actions选项卡上看到一个“Run workflow”按钮,使您能够轻松地触发运行。

您可以选择在哪个分支上运行工作流。

菲利浦添加在评论中

文档中没有提到的一点是:工作流必须存在于默认分支中,才能显示"Run workflow“按钮。 一旦将其添加到那里,就可以继续在它自己的分支上开发操作,这些更改将在使用按钮运行时生效。

这些文件继续下去:

此外,您还可以选择指定输入,这些输入将在UI中以表单元素的形式呈现。工作流调度输入以与动作输入相同的格式指定。 例如:

代码语言:javascript
运行
复制
on: 
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
      tags:
        description: 'Test scenario tags'  

触发的工作流在github.event上下文中接收输入。 例如:

代码语言:javascript
运行
复制
jobs:
  printInputs:
    runs-on: ubuntu-latest
    steps:
    - run: |
        echo "Log level: ${{ github.event.inputs.logLevel }}"
        echo "Tags: ${{ github.event.inputs.tags }}" 

希姆添加了评论

您可以将workflow_dispatch添加到具有其他触发器(如on push和/或schedule)的工作流中。 例如: on: workflow_dispatch: push:分支:- master pull_request: type: opened,同步,重新打开

票数 39
EN

Stack Overflow用户

发布于 2019-11-21 00:16:42

编辑的

解释工作流调度使用的伟大推特:https://twitter.com/github/status/1321859709075394563?s=19

是否有一种方式来手动触发一个工作流程中的Github动作?

我有个小问题要做.

通过观看事件,您可以手动触发由星体或非星体的回购操作。工作流中事件的代码是:

代码语言:javascript
运行
复制
on:
  watch
    types: [started]

我知道这很奇怪但很管用!尽管如此,这并不是最好的方式,如果它是一个潜在的明星公共回购。

我如何将我的开发和生产工作流程分开来实现我想要的结果,无论是在Github操作、Docker还是Kubernetes上?

在Github操作中,您可以执行多个工作流/作业,并通过目标分支或事件进行筛选。您可以组合多个事件,例如触发用于push的工作流,并在午夜使用cron

票数 22
EN

Stack Overflow用户

发布于 2019-11-19 14:42:14

更新:有关斜杠命令样式"ChatOps“解决方案,请参见斜杠-命令-调度操作。这允许您使用从发出和拉出请求注释的斜杠命令(例如/deploy)触发工作流。

下面是一个deploy斜杠命令的基本示例。REPO_ACCESS_TOKEN是一个repo作用域个人存取令牌

代码语言:javascript
运行
复制
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

该命令可以在此工作流中处理。

代码语言:javascript
运行
复制
name: Deploy Command
on:
  repository_dispatch:
    types: [deploy-command]

有更多的选择和不同的设置。有关完整使用说明,请参见斜杠-命令-调度

原始答案:对GitHub API的调用可以手动触发repository_dispatch工作流,如下所示。

代码语言:javascript
运行
复制
on:
  repository_dispatch:
    types: [production-deploy]
  • [username]是一个GitHub用户名
  • [token]是一个repo作用域个人存取令牌
  • [repository]是工作流所在的存储库的名称。
代码语言:javascript
运行
复制
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"}'
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58933155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档