GitHub Actions 手动触发方式

目录

前言

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.mzph.cn/pingmian/9222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024版】最新6款漏洞扫描工具来了!(附下载)看完这一篇就够了

目录 一、Nessus 二、AWVS 三、ZAP 四、w3af 五、北极熊 六、御剑 七、网络安全学习路线 (2024最新整理) 八、学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明: 渗透测试收集信息完成后&#xf…

每日两题 / 104. 二叉树的最大深度 102. 二叉树的层序遍历(LeetCode热题100)

104. 二叉树的最大深度 - 力扣(LeetCode) 递归判断,当前节点的最大深度为1 max(左节点的最大深度,右节点的最大深度) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …

Ansible---inventory 主机清单

一、inventory 主机清单 1.1、inventory介绍 hosts配置文件位置:/etc/ansible/hosts Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 1.2、inventory中的变量 Inventory变量名含义…

八、VUE内置指令

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 四、VUE事件处理 五、VUE计算属性 六、Vue监视属性 七、VUE过滤器 七、VUE内置指令 九、VUE组件 v-text 向其所在的节点中渲染文本内容。 (纯文本渲染)与插值语法的区别:v-text会替换掉节点中的内容,{{x…

springboot3项目练习详细步骤(第一部分:用户业务模块)

目录 环境准备 用户模块 注册 注册接口文档 ​编辑 实现结构 Spring Validation 登录 登录的接口文档 实现登录逻辑 JWT令牌 完善登录认证 拦截器 获取用户详细信息 接口文档 Usercontroller类中编写方法接口 忽略属性返回 优化代码ThreadLocal 更新用户基本信…

ubuntu启动修复(BIOS无法找到GRUB | 引导加载器)

Ubuntu启动修复(无法找到GRUB|引导加载器) 问题: 笔者的一台双系统主机,里面有两个硬盘,1T的硬盘装的是windows系统,2T硬盘装的是ubuntu20.04系统。因为长期使用ubuntu系统,所以选择格式化了1T…

Adobe Premiere Pro安装

一、安装包下载 链接:https://pan.baidu.com/s/1aYqTSQQutDguKYZE-yNHiw?pwd72l8 提取码:72l8 二、安装步骤 1.鼠标右击【Pr2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Pr2024(64bit)】。 2.打开…

【计算机毕设】小型企业办公自动化系统+vue - 免费源码(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个小型企业办公自动化系统,利用Vue作为前端框架,为企业员工提供便捷的办公管理工具,提升…

mysql数据库调优篇章1

目录 1.认识数据库中日志的作用2.增加mysql数据库中my.ini 基本配置3.增加my.ini中参数配置4.查看已经执行过的sql语句过去执行时间5.找出慢查询的sql6. SHOW VARIABLES LIKE ‘innodb_read_io_threads’; SHOW VARIABLES LIKE ‘innodb_write_io_threads’; SHOW VARIABLES LI…

ArthasGC日志GCeasy详解

Arthas详解 Arthas是阿里巴巴在2018年9月开源的Java诊断工具,支持JDK6,采用命令行交互模式,可以方便定位和诊断线上程序运行问题.Arthas官方文档十分详细.详见:官方文档 Arthas使用场景 Arthas使用 # github下载arthas wget https://alibaba.github.io/arthas/arthas-boot.j…

了解tensorflow.js

1、浏览器中进行机器学习的优势 浏览器中进行机器学习,相对比与服务器端来讲,将拥有以下四大优势: 不需要安装软件或驱动(打开浏览器即可使用);可以通过浏览器进行更加方便的人机交互;可以通过…

智慧手术室手麻系统源码,C#手术麻醉临床信息系统源码,符合三级甲等医院评审要求

手麻系统全套源码,C#手术麻醉系统源码,支持二次开发,授权后可商用。 手术麻醉临床信息系统功能符合三级甲等医院评审要求,实现与医院现有信息系统如HIS、LIS、PACS、EMR等系统全面对接,全面覆盖从患者入院,…

前端css中径向渐变(radial-gradient)的使用

前端css中径向渐变的使用 一、前言二、主要内容说明(一)、径向渐变的形状1.椭圆形渐变(ellipse),源码12.源码1运行效果3.圆形渐变(circle),源码24.源码2运行效果 (二&…

C++青少年简明教程:C++程序结构

C青少年简明教程&#xff1a;C程序结构 一个简单的C程序源码如下&#xff1a; #include <iostream> using namespace std;int main() {cout << "Hello World" << endl;return 0; }下面解析一下。 1. #include <iostream> 这行代码的意思…

Python包管理工具

1、python包管理 在java开发生态&#xff0c;我们早已习惯使用maven或者gradle来构建和管理java项目。通过构建工具&#xff0c;我们可以非常方便对项目的依赖、打包、部署等进行管理&#xff0c;极大的减少手工操作的复杂性。 如果使用python开发生态&#xff0c;我们同样可…

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本&#xff08;函数做调…

Kafka应用Demo:指派分区订阅消息消费

环境准备 Kafka环境搭建和生产者样例代码与《Kafka应用Demo&#xff1a;按主题订阅消费消息》相同。 消费者代码样例 public class KafkaConsumerService {private static final Logger LOGGER LoggerFactory.getLogger(KafkaConsumerService.class);private static final S…

【DFT】高 K/金属栅极阈值电压偏移的密度泛函模型

文章《Density functional model of threshold voltage shifts at High-K/Metal gates》&#xff0c;是由R. Cao、Z. Zhang、Y. Guo、J. Robertson等人撰写&#xff0c;发表在《Solid-State Electronics》期刊上。通过密度泛函理论&#xff08;Density Functional Theory, DFT&…

Redis(无中心化集群搭建)

文章目录 1.无中心化集群1.基本介绍2.集群说明 2.基本环境搭建1.部署规划&#xff08;6台服务器&#xff09;2.首先删除上次的rdb和aof文件&#xff08;对之前的三台服务器都操作&#xff09;1.首先分别登录命令行&#xff0c;关闭redis2.清除/root/下的rdb和aof文件3.把上次的…

大数据技术架构

一、hadoop 1、基础知识 1.1、概念 ①Hadoop集群特点&#xff1a;高可靠性、高效性、高可拓展性、高容错性、成本低、运行在Linux操作系统上、支持多种编程语言 ②Hadoop的由来&#xff1a; 谷歌的三驾马车对应的开源软件描述GFS&#xff1a;海量数据怎么存HDFS分布式文件…