GitHub Actions 手动触发方式

news/2024/10/22 10:48:42/

目录

前言

Star

Webhook

手动触发按钮


前言

  • GitHub Ac­tions 是 Mi­crosoft 收购 GitHub 后推荐的一款 CI/​CD 工具
  • 早期可能是处于初级开发阶段,它的功能非常原生,甚至没有直接提供一个手动触发按钮
  • 一般的触发方式为代码变动(push 、pull_request),发布文件(release)或者定时(schedule)等
  • 这些属于自动触发方式
  • 如果我们需要在 GitHub 仓库没有任何变动的情况下手动触发就需要使用一些奇技淫巧
  • 经历了漫长的功能迭代,官方最终正式带来了手动触发按钮功能

Star

  • 这种触发方式,点击仓库上的 Star 按钮即可触发 GitHub Ac­tions 的工作流程
  • 这是最容易实现的方式,只要 work­flow 文件中存在如下字段:
  • 为了避免被其他人点击 Star 导致的不必要的麻烦
  • 还需要在 work­flow 文件中加上 if: github.event.repository.owner.id == github.event.sender.id 字段
  • 这样只有仓库所有者,也就是你自己点 Star 才有效
  • 点击 Star 触发方式的 work­flow 文件示例:
  • 虽然其他人点击不再会触发,但是在 Ac­tions 页面还是会出现一个记录,所以这种手动触发方式并不完美
  • 对于比较大的项目仓库使用可能会因为 Star 太多导致产生很多无意义的 Ac­tions 记录从而影响正常查看 Ac­tions 记录
  • 所以这种方式只适合私有仓库、公开的测试仓库或者不起眼的小项目仓库

Webhook

  • 给 GitHub API 发送一个 repository dispatch event(仓库调度事件) 请求,当API接收到请求后就会触发相应的 workflow
  • Web­hook 方式灵活多变,可控性强,对于高阶用户来说是一个利器
  • 甚至可以自己写一个触发脚本、网页或者浏览器插件来实现更高级的功能
  • 创建 token
  • 首先需要创建 Personal access token,权限为 repo 即可
  • 如果你不知道怎么做,可以查看官方文档中的相关介绍
  • to­ken 会用在 web­hook 的请求标头中,用于身份验证
  • 编写 Workflow 文件
  • 在 work­flow 文件中设置 repository_dispatch 触发事件,以便 GitHub Ac­tions 能接收这个触发事件
  • 这是一个最简单的 Work­flow 文件示例:
  • 发送请求
  • 通过 web­hook 来触发 GitHub Ac­tions,以下是一个使用 cURL 发送请求的例子:
  • 需要要替换的值:
  • :owner - 用户名
  • :repo - 需要触发的 Github Action 所在的仓库名称
  • ACTIONS_TRIGGER_TOKEN - 带有 repo 权限的 Personal access token
  • TRIGGER_KEYWORDS - 自定义 Webhook 事件名称,可以为任意值,Actions 列表中会显示此名称,更多信息请参见下文
  • 进阶使用
  • 在 web­hook 请求中需要发送一个 event_type 属性的 json 有效负载
  • 前面例子中的 TRIGGER_KEYWORDS 就是所发送的有效负载,官方将它称之为 “自定义 Web­hook 事件名称”
  • 为了方便理解下文将它称之为 “触发关键词”
  • 因为没有做任何限制设置,所以可以为任意值,这是最基础的使用方式
  • 有时一个仓库可能不止一个 work­flow ,所以我们就可能需要对触发关键词进行限制
  • 使用不同的关键词来触发不同的 work­flow
  • 设置 repository_dispatch 下的 types 字段的值可以限制触发关键词
  • 下面的例子将设置 helloworld 这个触发关键词,只有当请求中的关键词为 helloworld 才会触发:
  • 还可以给每一个步骤设置运行条件,在运行条件中 github.event.action 等于触发关键词
  • 通过判断给定的值是否与 github.event.action 相同来判断该步骤是否需要执行
  • 比如下面例子中只有当触发关键词为 helloworld 时才会执行这个步骤:
  • 触发关键词也可以是多个,比如像下面这个例子:
  • 当触发关键词为 helloworld 时,只有 Hello World 步骤会运行
  • 当触发关键词为 test 时,只有 TEST 步骤会运行
  • 当触发关键词为 none 时,虽然 Ac­tions 会触发,但没有步骤运行
  • 而发送其他关键词并不会触发这个 work­flow

手动触发按钮

  • 在时隔多年后 GitHub Ac­tions 终于引入了一个手动触发的按钮
  • 不过默认是不开启的,需要在 work­flow 文件中设置 workflow_dispatch 触发事件
  • 一个最简单的例子:
  • 设置好触发事件后就能在相关 work­flow 的页面下看到 Run workflow 按钮
  • 更复杂一点还可以实现在手动触发时填写参数,控制不同的工作流程或者直接改写某个环境变量等操作

http://www.ppmy.cn/news/1460444.html

相关文章

Web3Tools - 助记词生成

Web3Tools - 助记词生成工具 本文介绍了一个简单的助记词生成工具,使用 React 和 Material-UI 构建。用户可以选择助记词的语言和长度,然后生成随机的助记词并显示在页面上 功能介绍 选择语言和长度: 用户可以在下拉菜单中选择助记词的语言&…

Centos中将UTC的时区改为CTS时区

date命令可以看到现在的时间以及时区,可以看到现在是UTC时区 而想要更改时区那么就要了解tzselect命令 tzselect 是一个 Linux 命令行工具,用于交互式地帮助用户选择并设置系统的时区。这个程序会通过一系列的问题引导用户,从而确定用户所在的…

el-tree

Vue.js 组件结构: 是一个 Vue.js 组件,它由一些 Vue 文件组成,包括模板(template)、脚本(script)和样式(style)。 模板部分定义了组件的结构和布局,包括树节点…

蓝桥杯EDA客观题

目录 前言 一、PCB类知识点和题目分析 1.电阻 2.电容 3.封装类 4.单位转换类 5.电路板结构类 6.PCB绘制规则 7.立创软件 8.PCB硬件 线性电源和开关电源 二、数电知识点和题目分析 1.门电路 2.逻辑代数 3.组合逻辑电路 4.触发器 5.时序逻辑电路 6.其他 三、模…

《十堂课学习 Flink》第九章:Flink Stream 的实战案例一:CPU 平均使用率监控告警案例

9.1 本章概述 本章的所有需求、设计、开发仅是模拟真实业务场景,因为实际业务需求、现场环境更加复杂,并且考虑到本系列课程本身就偏向于基础内容,因此这里我们对自己假设的业务场景进行设计与开发,整个流程虽然简单,…

项目管理-计算题公式【复习】

1.【进度】相关公式 1.1三点估算 PERT 三点估算法是基于 任务成本的三种估算值(最可能成本CM,最乐观成本CO,最悲观成本CP)来计算预期成本的方法。 三角 分布:预期成本(最乐观成本最可能成本最悲观成本&am…

java项目之企业OA管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的企业OA管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 企业OA管理系统的主要使用…

使用 Parallels Desktop 在 Mac 上畅玩 PC 游戏

我们不再需要接受 “Mac 不是为游戏而打造” 这一事实;Parallels Desktop 通过将电脑变成高性能的游戏设备,从而改变了一切。 Parallels Desktop 充分利用 Mac 硬件的强大功能,让您无缝畅玩 Windows 专享游戏。 性能得到提升,可玩…