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 按钮
  • 更复杂一点还可以实现在手动触发时填写参数,控制不同的工作流程或者直接改写某个环境变量等操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/607423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Processing和PixelFlow库创建交互式流体太极动画

使用Processing和PixelFlow库创建交互式流体太极动画 引言准备工作效果展示代码结构代码解析第一部分:导入库和设置基本参数第二部分:流体类定义MyFluidDataConfig 类详解MyFluidData 类详解my_update 方法详解流体类定义完整代码 第三部分:太…

无监督式学习

1.是什么? 无监督式学习与监督式学习**最大的区别就是:**没有事先给定的训练实例,它是自动对输入的示例进行分类或者分群; 优点:不需要标签数据,极大程度上扩大了我们的数据样本,其次不受监督信…

部署 Sentinel 控制台:实现流量管理和监控

序言 Sentinel 是阿里巴巴开源的一款流量防护与监控平台,它可以帮助开发者有效地管理微服务的流量,实现流量控制、熔断降级、系统负载保护等功能。本文将介绍如何在项目中部署和配置 Sentinel 控制台,实现微服务的流量防护和监控。 一、Sen…

WEB基础--单元测试与三层架构

单元测试 为什么要进行单元测试 减少创建类,我们希望在一个类中,并且测试时不需要改代码,那么我们就要用到junit单元测试 常见测试分类 黑盒测试 黑盒测试也叫功能测试,主要关注软件每个功能是否实现,并不关注软件代…

【websocket-客户端可视化工具】

postman 新版postman (版本v11以上) ,除了http协议,还支持了Websocket,MQTT,gRPC等多种连接协议,可以作为多种协议的客户端,使用起来非常方便。 使用 服务端代码 这里以websocket协议举例,代…

【Linux】网络接口绑定和组合的操作实例

网络接口绑定和组合的操作实例 (一)网卡1. 增2. 查3. 激活——设置网络接口 (二)网络接口绑定1. 概述2. 实验操作3. 删除绑定 (三)网络接口组合1. 概述2. 实验操作 (一)网卡 1. 增 …

分割模型Maskformer系列

maskformer:Per-Pixel Classification is Not All You Need for Semantic Segmentation 论文地址:https://arxiv.org/pdf/2107.06278 1.概述 传统的语义分割方法通常采用逐像素分类(per-pixel classification),而实…

【JAVA基础之装箱和拆箱】自动装箱和自动拆箱

🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1.包装类 1.1 概述 1.2 Integer类 1.3 装箱和拆箱 1.4 自动装箱和自动拆箱 1.5 基本类型与字符串之间的转换 1.5.1 基本类型转换为字符串 1.5.2 字符串转…

带你破解晶振PCB的布局要点!

一、晶振的分类 01 无源晶振 无源晶振器是一种 passives 振荡器,它不需要外部电源来维持振荡。它的振荡频率由晶体的物理尺寸和材料特性决定(一般都采无源晶振)。 02 有源晶振 有源晶振器是一种 active 振荡器,它需要外部电源来…

计算机中GPU快不行的几个标志,看下有没有你遇到的

GPU是处理图形密集型任务的主要组件。尽管它非常耐用,但它最终会磨损并开始失效。在到达生命的终结之前,它通常会显示出即将发生故障的迹象,需要及时修复或更换。本指南详细介绍了这些标志。 在我们开始之前 在深入研究GPU故障的迹象之前,重要的是要承认,下面提到的一些…

卷积通用模型的剪枝、蒸馏---蒸馏篇--RKD关系蒸馏(以deeplabv3+为例)

本文使用RKD实现对deeplabv3+模型的蒸馏;与上一篇KD蒸馏的方法有所不同,RKD是对展平层的特征做蒸馏,蒸馏的loss分为二阶的距离损失Distance-wise Loss和三阶的角度损失Angle-wise Loss。 一、RKD简介 RKD算法的核心是以教师模型的多个输出为结构单元,取代传统蒸馏学习中以教…

Leetcode—394. 字符串解码【中等】

2024每日刷题&#xff08;131&#xff09; Leetcode—394. 字符串解码 实现代码 class Solution { public:string decodeString(string s) {string curstr;int curNum 0;stack<pair<string, int>> st; for(char c: s) {if(isdigit(c)) {curNum curNum * 10 (c…

电脑中的两个固态硬盘比一个好,想知道为什么吗

你当前的电脑很有可能有一个NVME SSD作为主驱动器&#xff0c;但可能至少还有一个插槽可以放另一个SSD&#xff0c;而且这样做可能是个好主意。 两个SSD可以提高性能 如果你有两个固态硬盘&#xff0c;你可以从中获得比有一个更好的性能。一种方法是使用RAID 0将两个驱动器组…

Python_AI库 Pandas的loc和iloc的区别与使用实例

Python中Pandas的loc和iloc的区别与使用实例 在Pandas中&#xff0c;loc和iloc是两个常用的方法&#xff0c;用于基于标签&#xff08;label&#xff09;和整数位置&#xff08;integer location&#xff09;来选择数据。尽管两者在功能上有重叠&#xff0c;但它们在用法和性能…

OceanBase开发者大会实录:SaaS 场景降本50%!石基零售应用 OB Cloud 实践

本文来自2024 OceanBase开发者大会&#xff0c;石基零售助理总裁 、 ROC 产品事业部负责人陈亮的演讲实录—《石基零售与 OB Cloud 零售行业应用实践》。完整视频回看&#xff0c;请点击这里&#xff1e;> 大家下午好&#xff01;我是石基零售的陈亮。今天和大家分享一下石基…

struct和union大小计算规则

Union 一&#xff1a;联合类型的定义 联合也是一种特殊的自定义类型&#xff0c;这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09; 比如&#xff1a;共用了 i 这个较大的空间 二&#xff1a; 联合的…

数据分析从入门到精通 2.pandas修真之前戏基础

从爱上自己那天起&#xff0c;人生才真正开始 —— 24.5.6 为什么学习pandas numpy已经可以帮助我们进行数据的处理了&#xff0c;那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据&#xff0c;当然在数据分析中除了数值型的数据还有好多其他类型…

信通院智能体标准发布,实在智能牵头编写

4月28日&#xff0c;由人工智能关键技术和应用评测工业和信息化部重点实验室、中国信息通信研究院&#xff08;以下简称&#xff1a;中国信通院&#xff09;人工智能研究所共同主办的“人工智能”高质量发展研讨会顺利召开&#xff0c;会上中国信通院正式发布全国首个Agent&…

【C++】string类的使用②(容量接口Capacity || 元素获取Element access)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 前言&#x1f525;容量接口&#xff08;Capacity&#xff09;size和lengthcapacitymax_sizereserveresizeclearemptyshrink_to_fit &#x1f525;元素获取&#xff08;Ele…

从零开始打造个性化生鲜微信商城小程序

随着移动互联网的普及&#xff0c;小程序商城已经成为越来越多商家的选择。本文将通过实战案例分享&#xff0c;教您如何在五分钟内快速搭建个性化生鲜小程序商城。 步骤一&#xff1a;登录乔拓云网后台&#xff0c;进入商城管理页面 打开乔拓云官网&#xff0c;点击右上角的“…