cloudci

ET302云CI构建流程

目前的jenkins环境都是基于docker,不需要项目组另外提供服务器,统一在技术部的服务器上使用docker,故首先要提供et302的docker镜像。

1、搭建和制作et302的docker编译运行环境

1.1在一台ubuntu14操作系统上安装docker

 sudo apt-get install -y docker.io

报错,貌似要在ubuntu上增加证书

https://wiki.zte.com.cn/pages/viewpage.action?pageId=125276216

apt-get install ca-certificates

安装成功后通过如下命令登录docker的制品库。

sudo docker login docker.artsz.zte.com.cn

输入用户名密码,要配置证书,

参照https://wiki.zte.com.cn/pages/viewpage.action?pageId=174523151解决

1.2下载制品库模板

docker pull public-docker-virtual.artsz.zte.com.cn/ubuntu:14.04从docker制品库下载ubuntu14.04的镜像

查看镜像

docker images

1.3运行容器

docker run -it public-docker-virtual.artsz.zte.com.cn/ubuntu:14.04 /bin/bash

也可通过images-id运行。

进去容器后就像进入一台全新的ubuntu系统一样,在容器中下载软件,搭建编译环境。

搭建编译环境参考

公司的ubuntu14.04的docker镜像中还少了bc软件,还需要通过apt-get install bc安装bc软件,不然编译kernel会提示bc not found

1.4在docker中编译et302代码

通过如下命令将docker宿主机上的代码/home/ccmadmin/ET302_git/et302映射到docker的/home/workspace下,然后在docker中运行编译脚本编译版本。

sudo docker run --rm -i -v /home/ccmadmin/ET302_git/et302:/home/workspace -w /home/workspace public-docker-virtual.artsz.zte.com.cn/ubuntu:14.04 /bin/bash -c "cd /home/workspace/ott_vct/product/makever/autobuild&&./up_build_git.sh"若没有异常退出则构建成功。

1.5将容器制作成镜像,并打标签

sudo docker tag ubuntu14.04:et302 vcs-release-docker.artsz.zte.com.cn/vcs/et302:v1

将之前的镜像ubuntu14.04改名为vcs-release-docker.artsz.zte.com.cn/vcs/et302:v1

并将这个镜像库上传至镜像库

sudo docker push vcs-release-docker.artsz.zte.com.cn/vcs/et302:v1

上传成功

注:kw的检查运行环境也要提前在docker镜像中安装好。

Kw在docker上的环境搭建参考

https://wiki.zte.com.cn/pages/viewpage.action?pageId=59908949

 

 

2、搭建ipipeline环境和流程

Ipipeline相关概念

https://wiki.zte.com.cn/pages/viewpage.action?pageId=240336670

 

2.1 PipelineMultibrach Pipeline的创建和配置

公司为不同的项目组建立了不同的Jenkins管理界面,以视频会议系统为例,其管理界面地址为 https://cloudci.zte.com.cn/cloud-vcs/ ,不同项目组可以在分配的Jenkins管理界面中创建并管理自己的Multibrach Pipeline。

通过在Jenkins管理界面新建项目,我们可以创建不同类型的任务,这里我们选择新建任务类型为Multibrach Pipeline

 

2.1.1创建Multibrach Pipeline

2.1.2输入名称

2.1.3选择Multibrach Pipeline类型

 

点击OK后,创建成功直接进入配置界面

选择git库的路径和用户名密码

2.1.4配置老化策略

其他保持默认配置。

Vcs/et302代码库中要确保有Jenkinsfile文件以保证jenkins能识别到。

点击Scan Multibranch Pipeline Now

之后Jenkinsfile就会扫描vcs/et302的所有分支中是否有Jenkinsfile并执行,查看日志

发现找到了两个分支

并自动建立两个分支master和master_et302的pipeline

 

目前ET302主要实现了dailyci manualci verifyci mergeci的流程

Dailyci中包括如下复杂度检查、KW检查、build版本构建、自动部署版本服务器和ST流程,由定时器凌晨触发,完成每日构建版本并推送制品库。

Verifyci是启动了代码评审时会走的流程,主要完成新增代码的KW检查、复杂度检查、模块编译、UT流程。

只要用git push origin HEAD:refs/for/master提交了代码就会触发verfyci

上述操作完成之后,如果配置了verify功能,jenkins会自动触发构建,并将结果邮件发送给当事人;

     构建失败的话,需要重新修改代码

    git add .

    git commit --amend   说明:仍然启用第一次提交时候的评审单号,不会创建新的单子

    git push origin HEAD:refs/for/master%r=dai.heng@zte.com.cn,[email protected] 

 

Mergeci是在verifyci之后,代码审查通过,合入版本后触发的流程,主要完成模块的kw检查、复杂度检查、编译、FT流程。

这些全部都在jenkinsfile中实现。

技术部的Ipipeline模板

https://wiki.zte.com.cn/pages/viewpage.action?pageId=314934801

 

Et302的ipipeline地址在https://cloudci.zte.com.cn/cloud-vcs/view/ET302/job/ET302_IPIPELINE/

每个分支都可以建立一个,其中每个代码库的分支都需要有jenkinsfile文件,目前建立了vcs/et302的master分支。云CI会检查到jenkinsfile,然后针对jenkinsfile中的内容来控制构建的流程。

Et302的jenkinsfile,主要是一些groovy脚本语言,主要的功能都有了,有需要可以根据模板进一步完善。

 

代码评审走verifyci可以参考这篇

https://wiki.zte.com.cn/pages/viewpage.action?pageId=97369251

 

参考文档

 

 

 

 

你可能感兴趣的:(devop,jenkins)