Github: Github actions 自动化工作原理与多workflow创建

Github actions


1 )概述

  • Github Actions 是Github官方推出的 CI/CD 解决方案
    • https://docs.githu.com/en/actions
  • 优点
    • 自动发布流程可减少发布过程中手动操作成本,大幅提升ci/cd效率,快速实现项目发布上线
  • 缺点
    • 存在较高的技术门槛
    • 需要利用额外服务,会产生技术成本

2 )工作原理

  • Repository 是代码仓库, .github 是特定的目录,里面有一个目录是 workflows
  • workflow 是一个可配置的自动化流程,它可以包含多个jobs
    • 通过在 .github/workflows 添加 .yml 配置文件实现 1个 workflow
    • 一个工程可以包含多个 workflow
    • 参考:https://docs.github.com/cn/actions/learn-github-actions/understanding-github-actions#workflows
  • 在 workflows 下包含了所有 .yml 结尾的文件
    • yaml 是一种标记语言,可读性较好,适合编写配置文件
  • 有多少 yml 文件都会并发执行
  • 每个 workflow 都通过 event 来触发
    • 比如 pull request, push 或 open issue, 也可以自定义事件
    • 如:https://docs.github.com/cn/actions/learn-github-actions/events-that-trigger-workflows
  • 每个 workflow 包含若干 job
    • job 是 workflow 当中一系列的可执行步骤,每个 job 是在同一个 runner 中进行的
    • runner 是指处于 github 的一台特殊的虚拟机,支持各种操作系统
    • 每个步骤或是一个 shell 脚本,亦或是一个可执行的action
    • 每个步骤是按照顺序执行,并且互相依赖
  • 每个 job 包含若干 step, 这里的stop 就是 cmd 或 action
    • 这里 action 就是 一些列 shell 的组合或传参的封装
  • Action 是 github action 中的一个自定义应用,它可以以运行一系列复杂的并且常用的任务
    • 使用 action 可以帮我们减少在 workflow 中写重复代码
    • github 提供了非常多常用的action
    • 可以再这里查阅: https://github.com/marketplace?type=actions
    • 同时,我们也可以写自己的 action

3 )yml 配置示例

  • 在项目目录下新建 .github/workflows 目录, 在里面 新建 test.yml

    name: Github Actions Test
    on: [push]
    jobs:
        Test:
            runs-on: ubuntu-latest
            steps:
                - run: echo "hello test"
                - run: echo "${{ github.event_name }}"
    
  • 可以看到,在里面可以使用环境变量和自定义变量, 同时,类似 jobs 下可定义多个任务,比如 再加一个 Test2

  • 参考:https://docs.github.com/en/actions/learn-github-actions/environment-variables

  • 上面的简单示例可以很明白的看清楚会发生什么

  • 我们把代码提交到github, 在github的action上就会出现一条记录

  • 点进去就可以看到具体运行的 job

多 workflow 演示

  • 在上面 test.yml 同级,新增 test2.yml

    name: Github Actions Test2
    on: [push]
    jobs:
        Test2:
            runs-on: ubuntu-latest
            steps:
                - run: echo "hello test2"
                - run: echo "${{ github.action }}"
                - run: echo "${{ github.ref }}"
                - run: echo "${{ github.repository }}"
    
  • 这样,再次提交运行,就可以重新运行这2个 workflow 了

  • 如果没有触发,可能由于提交到真实的主机上,或workspaces 目录或具体配置错误

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

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

相关文章

/usr/local/bin/docker-compose: line 1: Not: command not found

安装docker-compose 检查是否安装成功 docker-compose --version 出错 /usr/local/bin/docker-compose: line 1: Not: command not found 检查下载连接是否正确 官网 https://dockerdocs.cn/compose/install/ 根据官网上连接下载 发现下载不了 在版本前加个V 就可以解决 版…

【C++】类和对象终章

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、初始化列表1.1 初始化列表的形式1.2 初始化列表的注意事项 二、explicit关键…

一个页面请求从在浏览器中输入网址到页面最终呈现

前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步…

校园闲置物品租售系统|基于springboot框架+ Mysql+Java+B/S架构的校园闲置物品租售系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 ​编辑 用户功能模块 商品购买管理 卖家功能模块 商品…

QML 布局管理器之GridLayout

一.QML GridLayout介绍 在QML中,GridLayout是一种用于布局元素的容器。它允许您以网格形式组织和排列元素。要使用rowspan、columnspan、layoutFillWidth和rowSpacing属性,您可以将一个元素跨越多行和多列,并填充整个宽度,同时设置…

【正则表达式】正则表达式里使用变量

码 const shuai No My Name Is ShuaiGe.match(new RegExp(shuai, gi)); //↑↑↑↑↑↑↑↑ //等同于 //↓↓↓↓↓↓↓↓ /No/gi.test(My Name Is ShuaiGe)用作领域 搜索的字符动态改变,例如↓模糊搜索例: 一个文本宽,输入文本模糊搜索用…

面试常问:为什么 Vite 速度比 Webpack 快?

前言 最近作者在学习 webpack 相关的知识,之前一直对这个问题不是特别了解,甚至讲不出个123....,这个问题在面试中也是常见的,作者在学习的过程当中总结了以下几点,在这里分享给大家看一下,当然最重要的是…

实现一个横向的picker

Picker 选择器显示一个或多个选项集合的可滚动列表,相比于原生 picker,实现了 iOS 与 Android 端体验的一致性。 要实现横向 picker,其实跟纵向 picker差不多,都支持滚动时停留在指定位置,并且支持滚动到边界支持反弹…

C语言中,基本数据类型介绍

C语言当中各种数据类型的大小,首先要了解有哪些数据类型。 一 字符型: 整数(字符)类型存储大小值范围char1 字节-128 到 127 或 0 到 255(2的8次方)unsigned char1 字节0 到 255()s…

C/C++火柴棍等式

有n根(n<24)火柴棍&#xff0c;你可以拼出多少个形如“ABC"的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零&#xff0c;则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示: 依次需要用到的火柴棍数目为6 2 5 5 4 5 6 3 7 6 。 如果是初学者可能会这么写。 …

shallowReactive浅层式响应对象

一、 reactive 和ref 都是深层响应式对象: 就是不管对象有多少层&#xff0c;修改此对象任一属性都会响应式处理 shallowReactive 和shallowRef 浅层响应式对象: 只会修改第一层对象&#xff0c;修改此对象第一层属性&#xff0c;视图会有同步变化&#xff0c;非第一层&#xf…

JVM学习-底层字节码的执行过程

目录 1.一个简单的程序分析 2. a&#xff0c;a&#xff0c;a--在JVM中的执行过程 3. 一个好玩的xx 4.方法调用的字节码分析、多态的实现、对象头 5. try-catch-finally的字节码分析 5.1 try-catch 5.2 try-catch-finally 5.3特殊情况 5.3.1 try和finally块中都出现了re…

面向对象技术(第二周)

目录 前言 ⚽回顾 &#x1f3d0;类的层次 定义 层次关系的实现 &#x1f3c0;继承 &#x1f94e;编程方法 非面向对象编程 根本思想 特点 例子&#xff08;设计一个画板系统Panel&#xff09; 第一步&#xff1a;整体设计 第二步&#xff1a;模块具体设计 缺点分…

Linux 常用命令100+

Linux 运维/开发/测试 常用命令100(v1.1) 帮助命令(2个) 命令功能说明示例man 命令查看普通命令帮助&#xff0c;命令的词典&#xff0c;更复杂的还有info&#xff0c;但不常用。rootbrLinux ~]#man lshelp 命令查看Linux内置命令的帮助&#xff0c;比如cd命令。[rootbrLinux…

Apache zookeeper kafka 开启SASL安全认证

背景&#xff1a;我之前安装的kafka没有开启安全鉴权&#xff0c;在没有任何凭证的情况下都可以访问kafka。搜了一圈资料&#xff0c;发现有关于sasl、acl相关的&#xff0c;准备试试。 简介 Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发…

拼多多商品详情接口数据采集

拼多多商品详情接口数据采集是一个相对专业的任务&#xff0c;通常涉及到使用API接口或第三方采集工具等技术手段。以下是一些基本步骤和注意事项&#xff0c;供您参考&#xff1a; 请求示例&#xff0c;API接口接入Anzexi58 申请开发者账号&#xff1a;如果您打算使用API接口…

基于java+springboot+vue实现的停车场车位预约系统(文末源码+Lw+ppt)23-442

摘 要 本系统为用户而设计制作合庆镇停车场车位预约系统&#xff0c;旨在实现合庆镇停车场车位预约智能化、现代化管理。本合庆镇停车场车位预约管理自动化系统的开发和研制的最终目的是将合庆镇停车场车位预约的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;…

高光谱数据应用于植被监测与分析与数据获

1. 常用高光谱数据 (1) 航空成像光谱仪系统 国内系统&#xff1a;MAIS、OMIS-1、OMIS-2、PHI、WHI、LASIS 国外系统&#xff1a;AIS、AVIRIS、TRWIS、GERIS、HYDICEAISA、DAIS、CASI、HYMAP (2) 航天成像光谱仪 Hyperion/EO-1 环境与减灾小卫星星座&#xff08;HJ-1B&…

ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术

原文链接&#xff1a;ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596849&idx3&sn111d68286f9752008bca95a5ec575bb3&chksmfa823ad6cdf5b3c0c446eceb5cf29cccc3161d746bdd9f2…

IPy,一个超级有用的Python库

更多内容在 Python 的 IPy 库是一个专门用于处理 IP 地址和网络相关操作的第三方库。它提供了丰富的功能&#xff0c;可以帮助用户轻松地进行 IP 地址的解析、格式化、比较和范围计算等操作。以下是 IPy 库的一些主要特性和功能&#xff1a; IP 地址解析与表示&#xff1a;IPy …