【壹个小技巧】一看就会的CI/CD :Github Actions
什么是 CI/CD?
我这里先不说概念,先说一个平时开发的场景问题:
我们平时开发一个项目,经常会遇到这些“小”问题:
就是如何保证自己的项目是正确的,至少拿给别人的时候,可以编译运行的?
或者说多人开发的时候,如何保证提交没有编译冲突?
或者如何做到快速自动化测试?
最后又是如何在服务器自动化部署的呢?
当然,我们这里不说平时公司的正规方案,肯定是一大推的集成方案。咱们就说一下平时自己是如何做的:
基本都是本地调试调试看看,或者是F6运行一下,然后提交,提交的时候,还不敢保证和本地的一样,可能拷贝的时候拷贝错了,或者少拷贝了一两个,然后就很尴尬。
那这个时候,如果有一个 Job 能够自动的将我们每次提交的代码做自动化编译,然后它自己进行测试,最后甚至可以自己去部署,嗯,就很美啦!
还真有!那这个时候就来说说常见的方案 —— CI/CD
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题。
具体而言,CI/CD 在整个应用生命周期内(从集成和测试阶段,到交付和部署)引入了持续自动化和持续监控。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
—— 资料来源于网上
它有以下几点好处:
持续集成、持续交付、持续部署、持续测试。
这个时候,你可能你会说,『妈耶,你今天不会讲这个吧,这么复杂,就算是明白了,我自己平时开发肯定用不到呀,甚至说自己开发很难去搞这么多东西,我平时只有 Github 一个代码管理,这么复杂,肯定搞不定』,没关系!我们在 Github 上也可以简单的实现 CI/CD 操作。
Github 上如何进行 CI/CD 的操作?
我的 Blog.Core 项目在 Github 上也开源了一年多了,目前效果基本还行,每天少不了的就是被各种问:
群主,你的项目没有调试么?我本地下载下来都编译不通过?!
群主,你的项目能直接在服务器上部署么,我拷贝了发现运行不起来?!
等等,诸如此类。
后来我没办法了,就在Github上增加了一个第三方的插件—— Appveyor ,来简单的实现了 CI/CD 操作,通过注册账号,然后各种配置以后,可以实现,每次向 Github 提交,会自动编译,然后生成报告,而且他们第三方还提供了一个徽章,可以放到 README 里,很贴心,一直用着,(如果你也想用这个,可以留言,或者群里问我,我写个小步骤,或者自己网上随便百度百度吧,很简单,因为我以后不用这个了,具体看下文 ????)
但是,就在今天,我再提交代码的时候,发现爆红了,心情瞬间不爽:
这个肯定不是代码的问题,因为我都没有修改代码,怎么办呢,查看日志吧,这个不重要就不说了,反正就是说 Appveyor 地址什么的无法访问了,行吧,那我就不用你啦!
正在考虑是否要放弃的时候,想起来之前 Github 官方发的一个邮件:
大概意思是说,Github 官方将在十一月13号以后新增两个功能,其中一个就是 Github Actions,可以支持CI/CD了,哇塞!自家的东西,肯定想用,而且也是微软搞的,那要试一试!
使用 Github Actions 实现CI/CD
这个过程其实就很简单了,毕竟 Github 的操作都很人性化的,我们来快速的操作一遍,可以看我下边的步骤,当然可以看官网地址
https://help.github.com/cn/actions/automating-your-workflow-with-github-actions/about-continuous-integration),很人性化的提供了中文翻译:
1、打开我们的 Github 项目,在顶部有一个 Actions 的banner。
2、点击进去,会自动根据项目的内容,进行判断,找到合适的 Workflow 模板。因为我的项目的 NetCore 的,所以这里自动会给我们匹配 .NET Core 的workflow,如果你是其他项目,比如Java、python等,会有不同,当然我们自己也可以自定义模板。
3、点击 Set up this workflow ,可以看到已经有一些 yml 代码了,这个是 YAML 语法,感兴趣的自己研究下,学会基本的就行了,官方的学习地址:
(https://help.github.com/cn/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)。
比如说,用空格表示代码块,然后用 - 表示数组,用 : 来表示键值对操作等等。
相应的代码操作:注意这里有一个错误,我故意这么写就是为了暴漏这个错误:
name: .NET Core
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 2.2.108
- name: Build with dotnet
run: dotnet build --configuration Release
4、直接将这个文件 submit,可以看到会在 .github 下的 workflows 文件夹下,生成一个dotnetcore.yml 文件。
与此同时,我们的项目已经正式的在后台进行自动编译了,目前是过程中,黄色的圆点:
5、刚刚我说过了,上边官方给我们默认的 workflow 模板有一个错误,也不是错误,就是不太合适的地方,会报错,但是,会有很详细的日志报告,我们来看看:
相信每一个只要开发过 netcore 的都知道这个错误,没错!就是 SDK 的版本不一致导致的,我们只需要改一下那个 .yml 文件中的 dotnet 版本就行了,不懂的请回看。
版本改成 3.0.100 即可。
6、如果Build失败,会通过邮件提醒。
我认为这个特别合理,因为之前用第三方的时候,比如Appveroy,是没有提醒功能的,我们push到Github的时候,只能慢慢的等待,看日志了。但是 Github Actions 提供了发送错误日志的功能:
7、最后可以看到绿色的成功的标志,也会有编译列表!
是不是很方便!而且里边有很详细的日志文档,可以提供一个月,我们可以下载和查看,我们项目中的警告等,也会列出来,很方便:
可以来一个小徽章
上边咱们说完了,但是总感觉少点儿什么,没错,就是没办法实时在 README 页面里,查看编译状态,GitHub 也想到啦,他们提供了一个徽章api:
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
就比如我的是这样的:
[![Build status](https://github.com/anjoy8/blog.core/workflows/.NET%20Core/badge.svg)]()
最终的展示效果:
是不是又简单又很方便的!而且我们点击这个徽章,还可以看到之前的提交记录和详细日志:
只有这么多了么?
当然不是,Github Actions 还有很多很多的内容,值得我们去学习和研究,比如这些:
本文也仅仅是一个小技巧,详细在微软的带领下,Github也会越来越好!
更多精彩小技巧,欢迎联系我哟。
???? 这里是 Github Actions 官网地址
【壹个小技巧】一看就会的CI/CD :Github Actions相关推荐
- 程序员求职高峰期,这12条工作小技巧必看
过完春节,该拿的奖金都拿了,又到了一年一度的离职高峰期,新老手程序员纷纷走上了求职之路. 今天给所有程序员提12条工作小技巧,让你在新工作上越做越顺. 1.写文档的能力非常重要 像Spring,hib ...
- 逗号用计算机怎么打,使用电脑如何输入特殊字符符号?这些输入小技巧一看就会...
01 在使用键盘输入标点符号时,大部分都可以直接通过键盘按键或者按Ctrl+键盘按键直接输入.比如按下shift+1,就可以输入感叹号,中文状态下按反斜杠键就可以输入顿号. 其实在键盘上的很多同一个按 ...
- 做好拼多多的几个小技巧[必看]
一个拼多多店铺如果没有销量,就意味着没有收入,因而提高销售量是每个店铺卖家都必须做的.今天小编就跟大家分享一下拼多多店铺提高销售量的5个技巧,希望能帮到大家. 1.提炼卖点和打造宝贝详情页. 提高销售 ...
- 总结了一些优化性能的小技巧,看官请收好
性能优化几乎是面试的时候非常高频的问题,因此总结了这么几条特别常见的优化方案送给大家.本文专业词汇较多,基础或者接触比较少的同学可能概念理解起来比较复杂.但还是请硬着头皮把这些概念搞懂,因为特别高频. ...
- 想要避免After Effects渲染失败的问题,5个小技巧必看
Adobe After Effects是由 Adobe Systems 开发的数字视觉效果.动态图形和合成应用程序,用于电影制作.视频游戏和电视制作的后期制作过程.有时,我们不得不面对项目在 Aft ...
- we learn考试能切屏吗_2020年成人高考考试小技巧速看!
成人高考全称成人高等学校招生全国统一考试.属于国民教育系列,列入国家招生计划.毕业证在教育部唯一官方本科学历查询网址www.chsi.com.cn上可查.是严格正规的全国统考级考试,用我们老师间流行的 ...
- 这30个生活小技巧,不看后悔死……
生活到底是什么? 有个谜语:你对它笑,它就对你笑:你对它哭,它就对你哭--这是什么?人们都猜:这是一面镜子!但有一个人却不动声色地回了这么一句:这是生活. 举座皆惊!而他却来了一句妙侃:"愁 ...
- word域变成正常文本_【Word小技巧】不学会后悔哦~
工作中使用Word早已成了习惯,因此,今天小编将为大家分享几个实用的的Word小技巧. 重叠字快速录入 文字录入是word最基本操作,过程中我们难免要输入重叠字,例如:热热闹闹,卿卿我我等--你知道如 ...
- 空间统计分析_空间汇总统计分析的小技巧:构造单调函数
无论用arcgis,还是Mapgis做空间分析的时候,都会遇到一个汇总统计的问题: 如下图,B图层为不同的区域,A图层为对应空间位置上的坡度等级,现在要统计B图层中每个区域不同坡度等级的面积,该怎么办 ...
最新文章
- asp.net 2.0 权限树的控制
- linux中查看文件内容常用的命令
- django第三次(转自刘江)
- vue-cli 自动切换环境
- Skyscraper
- wxWidgets:wxFrame类用法
- linux 的读写操作(转)
- ASP.NET Core MVC 配置全局路由前缀
- weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现
- 2020-10-28
- [jQuery基础] jQuery动效
- 定义一个Point类,派生出Circle类,计算各派生类对象的面积Area()
- python编程是干嘛的-Python这么火到底能干啥?
- python编程基础及应用教程答案_Python编程基础教程
- Android自带指南针坐标系,Android自定义View,带你实现小米指南针和时钟
- 《张志俊揭秘太极拳》读书摘编
- spark实现 通过ratings.dat和movies.dat两个文件得到平均得分超过4.0的电影列表
- 软件开发需要学习什么?
- 新浪微博开放平台站内应用开发流程直播(一)
- 设计模式(二)--策略模式
热门文章
- 遍历DataTable内存数据的三种方法性能对比
- c语言 程序延时 校准,c语言实现系统时间校正工具代码分享
- macos mojave_使Ubuntu看起来像macOS Mojave的黑暗模式
- Vue.js中的8种组件间的通信方式;3个组件实例是前6种通信的实例,组件直接复制粘贴即可看到运行结果
- java读取excel某个单元格的值_java poi怎么获取excel单元格的内容
- Jmeter JDBC请求-----数据库读取数据进行参数化 通过SSH跳板机连接数据库
- some demos
- 分析拼多多的崛起【产品思维】
- systemd kernel
- JAVA学习笔记--初识容器类库