再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)
Gitlab runner 快速搭建CICD pipeline
背景
日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署全流水线
Jenkins在devops担任了很重要的角色,但是另一方面相信目前大家的代码版本管理大多都是交给git来管理,在企业私有部署的大背景下,Gitlab由于丰富的插件和细粒度更高的权限控制被大家所采用。
如果只是把Gitlab作为代码版本管理,那就大大浪费他的附加价值,在Gitlab中自带CICD功能,此功能就可完全代替Jenkins,这样一来,我们就不必维护多套系统,简化开发到运维的复杂度
实践
由于gitlab资源消耗严重,本地没有搭建,所以使用gitlab官方
第一步注册gitlab账户(企业私有部署可忽略此步骤)
注册地址:https://gitlab.com/
第二步创建项目并推送至gitlab仓库
并在项目中加入支持Docker容器的Dockerfile文件和支持触发gitlab CICD功能的 .gitlab-ci.yml脚本文件(此文件必须放在根目录)
最后的目录是这样
这两个文件的内容大致是
Dockerfile
推送Gitlab后的目录
第三步安装gitlab Runner。
安装就简单几步再不赘述,安装教程(https://docs.gitlab.com/runner/install/windows.html),
由于使用的gitlab 非企业版官方,所以就只能用它提供的共享runner,企业私有部署的gitlab,一般管理员会给每个开发人员分配一个注册令牌token用来与runner绑定
安装runner时,将gitlab地址(不包含仓库)和注册令牌在需要填入的时填入即可授权此runner与Gitlab交互
Runner大致就是用来执行一系列脚本的载体,当gitlab有代码提交,gitlab会通知与之对应的runner,麻烦runner帮他执行提前写好的脚本规则(runner可安装支持一个项目也可共享出来支持多个项目),执行的每一步状态会通知gitlab,gitlab会在CICD控制面板打印出来
第四步自动触发CICD
只要当根目录包含了.gitlab-ci.yml文件的项目提交至Gitlab,就会自动触发CICD,然后通知对应的Runner执行脚本,并将状态打印
点击每个JOb可看到内部执行的计划和输出,此处和jenkins流程类似
由于.gitlab-ci.yml文件包含了推送镜像到镜像仓库,此时我们打开腾讯镜像仓库即可看见编译打包上传好的镜像
此时有了镜像,那我们就可以依靠此镜像创建k8s集群服务
第五步启用云厂商k8s容器编排服务
创建k8s服务的大致步骤为:
只要在云厂商控制台启用对应步骤并配置即可实现一个k8s集群的容器服务,此过程各平台略有不同
由于考虑到腾讯云k8s服务按量付费没有最低余额限制,阿里云则需要100余额的门槛,所以在腾讯云充值了1.6元来进行实验
腾讯云各步骤文档:
创建集群 :https://cloud.tencent.com/document/product/457/9091
镜像仓库 :https://cloud.tencent.com/document/product/457/9117
创建服务 :https://cloud.tencent.com/developer/article/1412348
以上步骤创建完毕可在应用中心服务一栏可看到当前正在运行的服务,此处我设置为Pod为2个,相当于此服务下两个站点实例作为一个集群
第六步创建镜像触发器
现在我们已经依靠gitlab的runner服务推送的镜像创建了k8s容器服务
但每次提交镜像都得人为去重置服务并选择新的镜像,这个重复乏味的劳动过程想必谁都不想去做,
这时候就要用到云厂商提供的触发器来操作这个重复的过程。
提前制定好触发规则,例如匹配到某tag名称或者创建时间,即自动进行拉取镜像创建服务的过程
点击添加触发器
这里触发规则选择了只要有新版本就触发,并且选择被触发的服务,镜像提交,即更新服务拉取最新镜像构建
测试
修改任意gitlab仓库代码,提交,然后等构建完成后,进入腾讯云的触发器页面
显示触发成功,此时服务已经使用了最新的docke镜像版本
检查一下账户余额,发现还有0.87元。。。关闭集群。。待下次继续使用
以上是GItlab与腾讯云实现代码提交到容器持续交付的过程,其他例如阿里云流程也类似
这里不得不夸赞一下腾讯云,容器服务没有最低消费限制,几毛钱就能让广大群众学习K8S容器服务,对开发者很友好。。强烈安利。。
再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)的更多相关文章
- jenkins结合gitlab实现提交代码自动构建
jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具. 主要记录以下两个: 利用jenkins和gitlab的webho ...
- Jnekins+Gitlab代码提交全程配置
实验环境: 测试机:192.168.2.156 Jenkins:192.168.2.157 Gitlab:192.168.2.158 温馨提示:如果不知道,Jenkins和Gitlab安装过程~可参考 ...
- 配置gitlab代码提交之后自动触发jenkins
https://www.cnblogs.com/bugsbunny/p/7919993.html
- 小玩意儿之Gitlab 代码提交日志同步到禅道项目管理系统
以前都是使用禅道官方推荐的服务器本地扫描的方式,但其实不太方便,需要跟着项目的变化,不断的在配置文件维护项目相应仓库的配置. 然后现在Web Hooks越来越普遍的情况下,想尝试一种新的方式.看了禅道 ...
- 类似gitlab代码提交的热力图怎么做?
本文由 网易云发布. 作者:张淞(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 昨夜,网易有数产品经理路过开发的显示屏前见到了类型这样的一张图: 于是想到有数能不能做出这样的图来?作为 ...
- Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践
2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...
- 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚
1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
- Jenkins+jmeter+ant+Git 持续集成(六、代码提交到Gitlab即自动构建)
实现原理: 利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建. 1.Jenkins的插件安装: 需要安装两个gitlab的插件:Gitlab Hoo ...
随机推荐
- 微信小程序入门-指南针
微信小程序提供了众多的原生API接口,利用罗盘接口,做了个简单的指南针小程序,搜索小程序[X的实验室]可看效果. 实现方案 利用罗盘接口返回的[数据],转化为指南针偏移量[度数],利用CSS3 tra ...
- ELINK离线编程器版本说明
ELINK离线编程器版本详情,ELinkPROG版本与固件版本须匹配使用! 编程器支持芯片详细列表参见 https://www.cnblogs.com/raswin/p/9303300.html
- Delphi XE5 Android 调用手机震动(通过JObject测试是否支持震动)
源码如下: uses Androidapi.JNI.Os, Androidapi.JNIBridge; function GetVibratorArray(const AIntArr: array o ...
- IE的BHO通过IHTMLDocument2接口获得网页源代码
参考了凤之焚的专栏:http://blog.csdn.net/lion_wing/article/details/769742 但是他的源码有些问题,即IHTMLElementCollection接口 ...
- System.Data.SQLite 中GUID的处理
原文:System.Data.SQLite 中GUID的处理 项目中正好用到System.Data.SQLite,在手持上使用这个数据库,因为要做数据同步,所以表中的主键都是Guid的数据类型. 在数 ...
- 零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I
原文:零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I 本章将教大家如何运用CheckBox做实作上的变化:教你如何把CheckBox变 ...
- Elevate Web Builder for Web Developers(类似于unigui的东西)
推荐一款pascal 语言的web 开发工具 这几天仔细研究了一款使用Pascal 语言开发web 的工具 具体介绍可以参照这里. 先上几张他开发的页面照.
- Qt编译和使用boost库(附QT5.51的Boost下载)good
配置gcc可以在cmd中使用 添加MinGW到环境变量 安装过Qt的都已经默认安装过MinGw的环境了,只需要找到配置一下环境变量就行 我的在D:\Qt5.5.1\Tools\mingw492_32\ ...
- Windows服务器下的IIS和Apache性能比较
目前最流行的建立网站的服务工具就要属Apache与IIS了.那么他们之间到底哪个性能更好呢?到底哪个工具才是最适合我们的呢?最近我也对这方面的问题进行了一番研究. 如果是基于Linux平台的话,那不必 ...
- Python连载7-time包的其他函数
接连载6 一.time包 1.函数:sleep(second) (1)含义:是程序进入休眠状态多少秒 (2)格式:time.sleep(int num) 2.函数:strftime() (1)含义:将 ...