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-lateststeps:- 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-lateststeps:- run: echo "hello test2"- run: echo "${{ github.action }}"- run: echo "${{ github.ref }}"- run: echo "${{ github.repository }}"
    
  • 这样,再次提交运行,就可以重新运行这2个 workflow 了

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

代码自动化部署

  • 前文描述了 cmd 相关的,也就是 基于 run 来说的,现在我们使用 action 来操作
  • 这里基于action来操作,在 https://github.com/marketplace?type=actions 来查找可用的 action
    • 可以搜索 ssh remote commands
    • 找到 By appleboy 的这个
    • 点击进去可以查看相关文档
    • https://github.com/marketplace/actions/ssh-remote-commands

1 )初步测试

  • .github/workflows/deploy.yml
    name: Deploy xxx-project
    on: [push]
    jobs:Deploy:runs-on: ubuntu-lateststeps:- uses: appleboy/ssh-action@v0.1.7with:host: $ {{ secrets.SSH_HOST }}username: $ {{ secrets.SSH_USER }}password: $ {{ secrets.SSH_PWD }} script_stop: truescript: |ls -altouch test.txtecho "hello deploy" >> test.txtcat test.txt
  • with 下的所有字段在文档上有相关说明
  • 这里,secrets 在 仓库 / Settings / Secrets 中进行配置的
  • 这里,很方便的保护了一些隐私数据
  • 提交后,查看workflow部署情况,并且自己使用 ssh 连入 服务器
  • 查看是否创建了 test.txt,如果一切就绪,则表示准备工作完成

2 )优化脚本

  • ssh 登录 ubuntu 服务器后,默认回到用户目录下面,也就是 ~

  • 我们要重新修改脚本

    name: Deploy xxx-project
    on: [push]
    jobs:Deploy:runs-on: ubuntu-lateststeps:- uses: appleboy/ssh-action@v0.1.7with:host: $ {{ secrets.SSH_HOST }}username: $ {{ secrets.SSH_USER }}password: $ {{ secrets.SSH_PWD }} script_stop: truescript: |cd /root/resource/nginx/ls -larm -rf 带部署项目目录git clone git@github.com:某用户/某仓库.git -b $ {{ github.ref_name }}cd 某仓库目录npm installnpm run build
    
  • 这样,基于此,将中文替换成自己的项目相关名称,即可完成一个前端项目的部署

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

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

相关文章

【Git教程】(八)版本库间的交换 —— 版本库的克隆与命名,分支监控、命名、拉取及推送 ~

Git教程 版本库间的交换 1️⃣ 克隆版本库2️⃣ 如何告知 Git 其他版本库的位置3️⃣ 给版本库添加别名4️⃣ 获取数据5️⃣ 远程跟踪分支:监控其他分支6️⃣ 利用本地分支操作别处的版本库7️⃣ PULL操作8️⃣ PUSH操作9️⃣ 命名分支🌾 总结 Git 是个…

elementUI两个select单选框联动

实现需求&#xff1a;两个单选框内容两栋&#xff0c;在选择第一个时&#xff0c;第二个选框能自动更新对应选项。且在切换第一个选项内容时&#xff0c;第二个选框会被清空且切换到新的对应选项。 设置值班班次和备班情况两个选项 &#xff0c;完整代码如下&#xff1a; <…

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER&#xff1a;倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…

【排序算法】-- 深入理解桶排序算法

概述 在计算机科学中&#xff0c;排序算法是一种对数据进行有序排列的重要技术。桶排序&#xff08;Bucket Sort&#xff09;是一种常见的排序算法&#xff0c;它通过将数据分到有限数量的桶中&#xff0c;并对每个桶中的数据分别排序&#xff0c;最后按照顺序将所有桶中的数据…

机器视觉学习(四)—— 图像的色彩

目录 一、图像的基础知识 二、NumPy模块 三、图像色彩变化 3.1 RGB图像的分通道显示 3.2 HSV图像的分通道显示 一、图像的基础知识 总结的笔记&#xff1a; """ 二值图: 每个像素取值 0或1,图像显示出来只有黑白色; 黑色:0 白色:1 灰度图: …

IoT 物联网场景中 LoRa + 蓝牙Bluetooth 室内场馆高精定位技术全面解析

基于LoRa蓝牙的室内场景定位技术&#xff0c;蓝牙主要负责位置服务&#xff0c;LoRa主要负责数据传输。 01 LoRa和蓝牙技术 LoRa全称 “Long Rang”&#xff0c;是一种成熟的基于扩频技术的低功耗、超长距离的LPWAN无线通信技术。LoRa主要采用的是窄带扩频技术&#xff0c;抗干…

基于深度学习的口罩人脸识别研究进展

MTCNN模型训练输入的所有图像都是正样本&#xff08;戴口罩的照片&#xff09;&#xff0c;没有负样本作为模型输入。在后续的识别任务模块中&#xff0c;导入MTCNN模型检测结果&#xff0c;对特征点进行编码比较进行识别。 基于MTCNN的口罩人脸识别框架可分为四个阶段&#xf…

大美博罗迎盛会,“村ART“点亮新征程

三月的博罗,春意盎然,生机勃勃。在这万物复苏的美好时节,首届"村ART"乡村艺术作品评比大赛盛大开启。本次大赛由博罗县政府和泰康保险集团联合主办,以"农民画农民、农民画农村"为主题,旨在为广大农民朋友搭建一个展示才华、抒发情怀的广阔舞台,用艺术之光点…

IDEA : 已经有一个永久破解版的IDEA2019版本,现在又想安装最新版本的,俩版本共存,发现新版本打不开的解决方案

在新文件的目录下&#xff0c;注释掉一行19版本的地址 地址&#xff1a;C:\Users\23999\AppData\Roaming\JetBrains\IntelliJIdea2023.2 (不同电脑Users后边的一个地址的注释会不一样) 然后找到该目录下的indea64.exe.vmoptions 用 记事本 打开 在-javaagent 那一栏里会自动给…

营气卫气是什么?循行规律?

营在脉中&#xff0c;卫在脉外&#xff0c;营周不休。 营气 营在脉中运行&#xff0c;为什么营气能在脉中运行呢&#xff1f;因其性柔顺精专&#xff0c;所以营气能循行、运行于经脉之中&#xff0c;正如《灵枢卫气》所云“其精气之行于经者&#xff0c;为营气”。 营气的运行…

使用CURL命令确定Access-Control-Allow-Origin问题

一、问题描述 有前端小伙伴反馈ajax请求遇到跨域问题&#xff0c;也让后端小伙伴设置了跨域允许&#xff0c;但诡异的事情是在前端小伙伴的微信开发者工具中Network headers中看到了两行&#xff1a;Access-Control-Allow-Origin&#xff0c;其中居然出现了&#xff1a;“Acce…

uniapp兴趣社区交友圈子系统小程序源码 thinkphp框架后台管理

圈子论坛社区系统&#xff0c;含完整的后台PHP系统。功能&#xff1a;小程序授权登陆&#xff0c;H5和APP&#xff0c;手机号登陆&#xff0c;发帖&#xff0c;建圈子、发活动。圈主可置顶推荐帖子&#xff0c;关注、点赞、评论、交流等。可作为圈子贴吧等自媒体。 兴趣社区圈…

丁腈手指套:守护你的指尖,赋予无限可能

在繁忙的现代生活中&#xff0c;无论是在工业车间、医疗场所&#xff0c;还是日常生活的琐碎细节中&#xff0c;保护我们的双手都显得尤为重要。丁腈手指套作为一种专业的防护用品&#xff0c;以其出色的防护性能、舒适性和灵活性&#xff0c;为众多领域的工作者提供了便捷而高…

SQLServer介绍、安装、数据库导入导出

安装 本地运行的&#xff1a;cn_sql_server_2008_r2_express_with_management_tools_x64.exe 官网&#xff1a;SQL Server下载 同上链接下载SSMS管理 SQL Server Management Studio&#xff08;SSMS&#xff09;是干什么的&#xff1f; SQL Server Management Studio&#x…

理解计算属性等

计算属性 计算属性的作用是将写在computed内的写了对应的属性名&#xff0c;属性值都是函数&#xff0c;将这属性值的函数调用之后的返回值赋给属性名的变量。因此其实计算属性内的是值&#xff0c;不是方法&#xff0c;因此写插值等语句是只是写变量&#xff0c;而不是调用。且…

Python零基础---爬虫技术相关

python 爬虫技术&#xff0c;关于数据相关的拆解&#xff1a; 1.对页面结构的拆解 2.数据包的分析&#xff08;是否加密了参数&#xff09;&#xff08;Md5 aes&#xff09;难易程度&#xff0c;价格 3.对接客户(433,334) # 数据库 CSV 4.结单&#xff08;发一部分数据&a…

【Spring Boot 3】整合nacos + Dubbo3 的Spring cloud Alibaba项目

这里写自定义目录标题 前言1、项目结构2、搭建nacos注册中心、配置中心3、项目依赖4、common模块5、provider服务提供者pom文件bootstrap.yml在nacos中添加配置启动类UserServiceImpl consumer服务消费者pom文件bootstrap.ymlnacos配置启动类UserController 测试END 前言 在sp…

Git——本地使用详解

目录 Git1、开始版本控制1.1、初始化Repository1.2、使目录脱离Git控制 2、把文件交给Git管控2.1、创建文件后交给Git2.2、git add之后再次修改文件2.3、git add "--all"与"."参数区别2.4、把暂存区的内容提交到存储库里存档 3、工作区、暂存区与存储库3.1…

车规级芯片又添新成员!NCV7520FPR2G 可编程六路低压侧 MOSFET 预驱动器

NCV7520FPR2G是一款可编程六沟道低压侧 MOSFET 预驱动器&#xff0c;是一个 FLEXMOS™ 汽车级产品系列&#xff0c;用于驱动逻辑电平 MOSFET。NCV7520FPR2G可通过串行 SPI 和并行输入组合控制。该器件提供可兼容 3.3 V/5 V 的输入&#xff0c;串行输出驱动器可基于 3.3 V 或 5 …

Linux常用操作命令和服务器硬件基础知识

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…