Jenkins_CICD_实现CI/CD流程


目录:

部署

所有服务均以docker或者kubernetes运行。

$ docker run -d --name jenkins-server -p 8005:8080 -v /usr/local/wlhiot/mount/jenkins:/var/jenkins_home 192.168.254.29:8001/library/jenkins:2.289.3

在宿主机创建1000权限的目录并挂载,正常运行后浏览器输入127.0.0.1:8005访问Jenkins服务。

查看宿主机的/usr/local/wlhiot/mount/jenkins/secrets/initialAdminPassword目录获取登录密码。

Jenkins原生的权限管理还是比较弱的,可以使用'Role-based Authorization Strategy'(限制各岗位能查看的Job,适合小公司)插件或者'OpenLDAP'(用户统一管理,适合人员流动较大的公司)来实现权限把控。

集成

与gitlab代码管理集成

gitlab的搭建及使用见'devops'父目录下的'gitlab'子目录 参考链接:CI持续集成系统环境

与gerrit代码审查集成

gerrit的搭建及使用见'devops'父目录下的'gerrit'子目录 参考链接:CI持续集成系统环境

与sonarqube代码质量管理集成

http://www.dhr2333.cn/article/2022/5/16/26.html

与dingtalk(钉钉)集成

http://www.dhr2333.cn/article/2022/5/16/24.html

与OpenLDAP集成实现权限管理

http://www.dhr2333.cn/article/2022/6/27/36.html

CI流程说明

得到Jar包前的步骤均属于CI阶段,主要包含:

  1. 开发完成需求提交代码至gerrit参与review,通过后同步至gitlab
  2. Jenkins从gitlab拉取代码至workspace
  3. maven对其进行编译得到工程件(jar包或者dist目录)
  4. 通过Junit进行自动化测试
  5. 配合sonarqube进行质量检测

CD流程说明

CD主要是部署,主要的工作是得到能跑起项目的Jar包后,将其打成镜像并部署

  1. 编写dockerfile(可以由开发写进代码中也可保存在服务器中)
  2. 将jar包打成docker镜像(可附加参数使其每次构建都生成指定版本的镜像)
  3. 将镜像推送到harbor仓库进行存档
  4. 控制服务器拉取镜像进行部署

CI/CD完整流程整合

整个流程以'自由风格的软件项目'来实现,因为'freestyle'是大部分Job的基础。 不仅能实现Maven项目,也能实现vue项目,且Jenkins官方推荐的最佳实践Pipeline流水线也得先用'freestyle'实现,然后再逐步修改。

  1. 拉取gitlab中指定分支的代码(可通过/usr/local/wlhiot/mount/jenkins/workspace/查看拉取的代码)

  2. 对拉取的代码进行maven编译打包

  3. 生成docker镜像,上传仓库,通过kubernetes API控制node节点拉取镜像进行部署

  4. 查看运行结果,YAML文件模板见http://www.dhr2333.cn/article/2022/5/16/27.html

  5. 通过sonarqube对代码进行质量检测

  6. 构建成功后触发钉钉通知或邮件通知

将Jar打包成docker镜像的dockerfile文件(根据实际需求)

java项目是跑在JVM虚拟机上的,即使已经修改了容器的时区也得需要添加启动参数'-Duser.timezone=GMT+08'用来修改JVM虚拟机的时间

$ cat /usr/local/wlhiot/container/docker/project/ebox/svr/
dockerfile                       wlh-electric-0.0.1-SNAPSHOT.jar  
$ cat /usr/local/wlhiot/container/docker/project/ebox/svr/dockerfile 
FROM java:8
MAINTAINER bingo
ADD wlh-electric-0.0.1-SNAPSHOT.jar ebox.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","-Duser.timezone=GMT+08","ebox.jar"]

Pipeline工作流

http://www.dhr2333.cn/article/2022/5/16/25.html