CI的全称是Continuous Integration,表示持续集成。
在CI环境中,开发人员将会频繁地向主干提交代码。这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。
详细介绍:
需要具备的条件:团队需要为每个新功能、代码改进、或者问题修复创建自动化测试用例。你需要一个持续集成服务器,它可以监控代码提交情况,对每个新的提交进行自动化测试。研发团队需要尽可能快的提交代码,至少每天一次提交。
带来的效益:通过自动化测试可以提早拿到回归测试的结果,避免将一些问题提交到交付生产中。
发布编译将会更加容易,因为合并之初已经将所有问题都规避了。减少工作问题切换,研发可以很快获得构建失败的消息,在开始下一个任务之前就可以很快解决。
测试成本大幅降低,你的CI服务器可以在几秒钟之内运行上百条测试。你的QA团队花费在测试上面的时间会大幅缩短,将会更加侧重于质量文化的提升上面。
HUDSON,日本老牌游戏厂商,成立于1973年5月18日,总公司位于日本东京,是Konami(コナミ)集团的成员之一。以制作和开发休闲游戏及手机游戏为主。
主要作品有炸弹人系列、桃太郎电铁系列、淘金者系列、天外魔境系列、当然还有广为中国玩家熟悉的高桥名人の冒险岛系列,此外任天堂公司还请Hudson公司代为开发马里奥聚会系列。
扩展资料:
Hudson公司最初由工藤裕司和工藤浩两兄弟创办。曾在20世纪80年代末、90年代初开发了大量深受玩家喜爱的运行在任天堂家用游戏机(FC/Super FC/GameBoy)上的游戏,盛极一时。Hudson公司于2000年12月在日本大阪证券交易所上市。
Hudson作为一种革命性的开放源码CI服务器,它从以前的CI服务器吸取了许多经验教训。Hudson最吸引人的特性之一是它很容易配置:很难找到更容易设置的CI服务器,也很难找到开箱即用特性如此丰富的CI服务器。
参考资料来源:百度百科-HUDSON
上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》
CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,
Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。
CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程
关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章
拉取镜像,启动并设置开机自启
配置docker加速器
GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了
切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来
external_url 'http://192.168.26.55’
gitlab_rails[‘gitlab_ssh_host’] = '192.168.26.55’
gitlab_rails[gitlab_shell_ssh_port] = 222
修改完配置文件之后。直接启动容器
相关的git命令
下面我们要配置私有的docker镜像仓库,用到的机器为:
这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry
首先需要设置selinux、防火墙
安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具
解压harbor 安装包:harbor-offline-installer-v2.0.6.tgz,导入相关镜像
修改配置文件
harbor.yml:设置IP和用户名密码
./prepare &&./install.sh
查看相关的镜像
访问测试
这里因为我们要在192.168.26.55(CI服务器)上push镜像到192.168.26.56(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址
修改后的配置文件
加载使其生效
CI机器简单测试一下
push一个镜像,可以在私仓的web页面查看
镜像jenkins拉取
这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,
更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少
"http://www.google.com/" 替换为 "http://www.baidu.com/"
替换后查看
重启docker,获取登录密匙
需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock
修改镜像库启动参数后需要重启docker
后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"
添加 JVM 运行参数-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 运行跨站请求访问
这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端
然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章
命令测试没有问题
我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像
这里我们先用一个Nginx镜像来代替hexo博客的镜像
查看deployments和pod
访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK
我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址
这里所有的节点都需要设置后重启docker
访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化
下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab
同时需要编写Dockerfile文件来创建镜像
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)