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服务持续交付只需七毛三相关推荐

  1. gitlab代码提交自动触发Jenkins token发版(二)

    公司代码管理用到phabricator和gitlab,本文讲gitlab自动发版,正常发版流程一般是开发人员更改完代码提交到版本库,部署到测试环境,多次测试没问题再部署到生产环境,因为每一次测试部署就 ...

  2. Jenkins集成Gitlab配置提交流水线

    在大型项目开发过程中,开发人员频繁提交新代码,然后在项目生命周期结束时将其集成到代码仓库.在集成的时候往往会需要消耗大量的时间去解决构建编译等问题.如何配置 Jenkins 与版本控制系统 Gitla ...

  3. Jenkins钩子实现代码提交/合并时自动部署

    之前讲过如何实现jenkins代码部署,但每次提交/合并后都需要点击部署按钮,手动部署较为不便,所以就多加了个钩子,自动触发,但要注意的是,代码最好写完整再一次性push. 超详细教你用Jenkins ...

  4. gitlab代码提交

    注册登录gitlab,我这是自己的服务器,需要分配账号密码进行登录(不能注册), 首先要SSH验证,右上角头像--设置--SSH密钥,终端生成SSH密钥并添加,完成本地的验证(至于SSH密钥的生成,又 ...

  5. python1000行代码_写个人脸识别程序员,C可能要两千行代码,Java两百!但是Python只需二十行即可!...

    今天给大家介绍一个世界上最简洁的人脸识别库 face_recognition,你可以使用 Python 和命令行工具进行提取.识别.操作人脸. 基于业内领先的 C++ 开源库 dlib 中的深度学习模 ...

  6. Jenkins与网站代码上线

    第1章 引入 1.1 开发写代码的演变 l 一个开发单打独斗,撸代码,开发网站,自由自在: l 多个开发同时开发一个网站,同时改一份代码.但是同时改一个文件会导致冲突. l 采用分支结构,每天上班第一 ...

  7. vue-cli+gitlab代码管理时,vue项目配置文件设置

    2019独角兽企业重金招聘Python工程师标准>>> vue-cli生成的项目,使用gitlab进行代码管理,怎样忽略项目配置文件的提交(避免每次合并分支代码冲突,而且每次修改配置 ...

  8. jenkins持续集成与持续交付

    目录 一.jenkins简介 1.jenkins 2.CI/CD是什么? 二.jenkins的部署 1.环境准备 2.安装jenkins 3.更新插件源 三.jenkins项目管理配置 1.项目创建 ...

  9. 从代码到上线, 云端Docker化持续交付实践

    2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线, 云端Docker化持续交付实践>精彩 ...

最新文章

  1. Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
  2. 【高并发】面试官:说说缓存最关心的问题?有哪些类型?回收策略和算法?...
  3. 语义分割--Mix-and-Match Tuning for Self-Supervised Semantic Segmentation
  4. sql语句 case
  5. 程序员出身,身价 340 亿!没有他,可能我们刷不了 B 站
  6. python主要用来开发什么-python主要用于什么开发?
  7. [置顶] 深入浅出Javascript(三)创建自定义对象以及属性、方法
  8. OpenCV与相机的关系
  9. 基于STM32系列芯片的 IAP实现的探索
  10. 洛谷P2751 [USACO4.2]工序安排Job Processing
  11. JPEG2000开发SDK及其特点
  12. flutter 动画展开菜单_Flutter ExpansionPanel 超级实用展开控件
  13. 邮局只能寄指定大小的箱子
  14. 下载sqlserver2012 试用_大肥虫助手app下载-大肥虫助手最新版本下载v7.0.4
  15. bLue的字符串游戏
  16. mysql如何批量添加数据_mysql如何大批量插入数据 mysql大批量插入数据4种方法
  17. 多层陶瓷电容器用处_陶瓷电容器的作用是什么
  18. 苹果手机换电池对手机有影响吗_电池寿命真的影响手机性能~iPhone手机更换电池后性能对比...
  19. [科幻]Java版三体中黑暗森林法则的猜想
  20. python接口自动化--接口测试工具介绍(详解)

热门文章

  1. 如何找到Windows 7或8家庭组密码?
  2. H5在WebView上开发小结
  3. 虚拟DOM Diff算法解析
  4. 实现网站验证码切换功能
  5. linux下A免密码登录B
  6. /etc/sudoers中的含义
  7. 数组 边界 检查的几种实现方法
  8. [Linux程序设计][调试][ElectricFence]
  9. 一键生成Vue.js + Web API前后端集成项目
  10. C#中使用opencv处理图像