基于Docker的Jenkins持续交付实践(2)
配置Jenkins
解锁的密码在容器的log中可以查看,或者直接查看jenkins_home指定文件
创建Pipeline下面我们创建一个的Jenkins的Pipeline完成简单的cicd流程.
以下是伪代码,仅提供思路 Jenkins pipeline的脚本语法是groovy的语法,其中docker 、Git是插件提供的能力.代码的执行流程如下:
通过简单的例子,可见Jenkins和Docker的结合给CICD带来了足够的便利和强大.我们需要准备的只是一个编译的脚本,在编译脚本中可以使用任何的环境和任何的版本. Pipeline 介绍Jenkins的任务两个主要版本. free style只是一个自动化的脚本,脚本类型为shell.所有的脚本在一台机器上运行,需要的环境需要提前准备.配置不集中,混乱.但是一般情况下还是够用的. pipeline 是jenkins2的版本使用了一个基于groovy脚本的任务类型,通过一系列的stage将构建的不同部分组合成一个pipline.而且配合step可以完成异步操作.因为基于groovy可编程性更加强大,而且脚本可以存放在源码中,脚本的更改不需要直接到jenkins中修改. pipeline的一些使用经验和技巧1.Jenkins的资料较少,官网可以查看的内容也不多,一般的需求Jenkins内置的pipeline-syntax里面就有常用的命令生成器.可以满足大多数需求. 2.在pipeline脚本调试完成之后应该将脚本以文件的形式放在源码目录中,这样子方便修改.和多分支需要编译的情况下进行互相隔离. 3.应该多查找下相应的插件,而不是使用sh用执行脚本的方式来解决问题. 4.应该将jenkins_home目录挂在出来,如果遇上了Jenkins崩溃了可以及时的恢复数据. 5.应该新建一个定时的pipeline用来清理生成的镜像,减少硬盘资源的占用. 6.页面新建的pipeline,在页面删除之后,jenkins_home/workspace中对应的项目文件并不会被删除. 总结持续发布很多团队想有这样的工具达到这个效果,有些团队觉得不需要.任何工具、流程都需要符合自身团队的实际.从我开始参与团队内的这个和持续发布有关的项目,查看了许多资料,结合团队项目内的实践.给出的一些经验的和见解和大家一起分享,如有错误或者建议,欢迎大家及时沟通. Q&A Q1:请问Kubernetes怎么结合Jenkins做持续集成呢? A1:部署到Kubernetes.Kubernetes除了可以通过API调用还可以在Jenkins中配置kubectl的方式创建或更新deployments. Q2:必须通过pipeline才能实现Jenkins把代码构建成Docker镜像么? A2:不一定,使用Docker主要是方便进行编译环境的隔离,也可以配置好NFS,构建完成之后复制到固定的服务器上,这个我们一般叫制品库. Q3:Pipeline如何通过Docker容器部署应用到不同的节点上去?发布遇到问题如何回滚版本的? A3:Jenkins的能力更多的是做持续集成(CI)的功能,部署和回滚都需要容器管理平台并不是Jenkins的强项,特别是回滚单依靠Jenkins很难做到完美的方案.但是部署到不同的Docker的节点上,可以使用第三方的管理平台,例如Appsoar和k8s提供的API能力,可以进行部署.Jenkins直接调用curl命令执行容器管理平台提供的API. Q4:pipeline的每个环节的报告如何快速获取?比如代码静态检查,工程构建,测试报告等等. A4:?http://jenkins:8080/job/clearImages/86/wfapi/,通过Jenkins这个API,可以获取一些状态和时间信息,至于详细的代码静态检查,每种语言都有不同的语法检查.需要自行配置.当然详细的需要查看输出日志. Q5:关于测试驱动开发,在开发之前写好的用例一定要是自动化的吗?为什么? (编辑:ASP站长网) |