再见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容器服务,对开发者很友好。。强烈安利。。

原文地址:https://www.cnblogs.com/xiaoliangge/p/11190019.html

时间: 2024-08-01 00:24:55

再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)的相关文章

jenkins结合gitlab实现提交代码自动构建

jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具. 主要记录以下两个: 利用jenkins和gitlab的webhook结合,实现提交代码之后,自动触发jenkins的构建. 顺带介绍一下通过触发器构建,比如直接通过url去触发的方式. 一.jenkins结合webhook 1.jenkins配置 a.首先jenkins得需要安装两个gitlab的插件:Gitlab Hook Plugin和gitlab,插件的安

Jnekins+Gitlab代码提交全程配置

实验环境: 测试机:192.168.2.156 Jenkins:192.168.2.157 Gitlab:192.168.2.158 温馨提示:如果不知道,Jenkins和Gitlab安装过程~可参考本人的一下博客文章 https://www.cnblogs.com/bixiaoyu/p/9560992.html https://www.cnblogs.com/bixiaoyu/p/9231861.html 一:配置Gitlab 既然要做到集成部署,肯定 需要一个代码仓库供,开发提交的代码上传到

小玩意儿之Gitlab 代码提交日志同步到禅道项目管理系统

以前都是使用禅道官方推荐的服务器本地扫描的方式,但其实不太方便,需要跟着项目的变化,不断的在配置文件维护项目相应仓库的配置. 然后现在Web Hooks越来越普遍的情况下,想尝试一种新的方式.看了禅道的Git模块Control中的代码后,发现了一个apiSync方法,于是有了思路: 覆盖其 git/apiSync 动作:并通过使用独立入口的方式回避其原有的鉴权机制,而通过 Gitlab 的 Hooks Secret Token来鉴权. 使用方法 将代码解压到禅道项目目录 生成一段随机字符串作为S

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明

[ci] 构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码.

构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码. ? 拉取gitlab代码库: jenkins安装git插件 配置gitlab服务器和jenkins服务器身份互信 jenkins服务器生成一对rsa key. 复制公钥到gitlab web dashboard添加 在jenkins Credentials里添加private key. 接下去创建project ? 拉取到了本地: /var/lib/jenkins/workspace

Jenkins+Maven+Gitlab+Nexus持续集成环境搭建

1.软件及服务介绍 Jenkins:jenkins是实现代码自动化流程上线的工具,Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.前身是Hudson是一个可扩展的持续集成引擎.可用于自动化各种任务,如构建,测试和部署软件.Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行 Maven:Maven是一个项目

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki

Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护. 贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在

持续集成学习11 jenkins和gitlab集成自动触发

一.配置gitlab上提交代码后在jenkins上自动构建 1.在jenkins上配置gitlab 系统管理--->系统设置--->gitlab配置 2.在gitlab上配置token 3.在jenkins上配置gitlab的token 4.在构建触发器中配置 5.在gitlab中创建一个dev分支然后在jenkins中基于该分支创建一个token给gitlab用 原文地址:https://www.cnblogs.com/Presley-lpc/p/11840812.html