• 06--jenkins构建CI_CD


    前言:上一篇文章整理了git的部署和使用,这章主要复习持续集成软件Jenkins,这个技术现在在云计算方面也是有应用的,同时也是越高级越智能的软件代表。

    1、概念简介

    1)jenkins是什么 
    Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
    2)为什么使用jenkins 
    Jenkins是一种使用Java编程语言编写的开源持续集成软件工具,用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。
    3)CI/CD是什么 
    CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
    CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
    4)jenkins的优势是什么 
    Jenkins的优势包括:
    在开发环境的早期阶段, 错误跟踪很容易。
    提供大量的插件支持。
    对代码的迭代改进。
    构建失败会在集成阶段进行缓存。
    对于每个代码提交更改, 都会生成一个自动生成报告通知。
    为了将构建报告的成功或失败通知开发人员, 它与LDAP邮件服务器集成在一起。
    实现持续集成的敏捷开发和测试驱动的开发。
    通过简单的步骤, 即可自动完成maven发布项目。
    5)实现持续集成/持续发布的产品的流程概述?
    开发(git) -->git主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->ssh-->发布到tomcat服务器 

     注:本文非特殊说明情况下操作均于192.168.189.150(Jenkins)上操作

    2、Jenkins基础配置

    2.1、基础环境

    角色IP
    Git,模拟公司内部版本控制系统github代替
    部署Jenkins192.168.189.150
    模拟对外的业务服务器192.168.189.151

    可以配置一个centos7的源,感觉清华源比阿里源稳定一些

    1. [root@localhost yum.repos.d]# ls
    2. Centos_base.repo local.repo.bak
    3. [root@localhost yum.repos.d]# cat Centos_base.repo
    4. [tsinghua-centos7]
    5. name=CentOS-$releasever - Tsinghua
    6. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/
    7. gpgcheck=1
    8. gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/RPM-GPG-KEY-CentOS-7
    9. enabled=1
    10. [root@localhost yum.repos.d]# rpm --import https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/x86_64/RPM-GPG-KEY-CentOS-7

    所需软件下载地址

    jdk:Java 存档下载 — Java SE 8 | Oracle 中国

    maven:Maven – Download Apache Maven

    git:Index of /pub/software/scm/git/

    tomcat:Apache Tomcat® - Welcome!

    Jenkins:jenkins.war

    2.2、安装Git

    1. [root@localhost yum.repos.d]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig
    2. #源码编译安装git
    3. [root@localhost ~]# ls
    4. anaconda-ks.cfg apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
    5. [root@localhost ~]# tar xf git-2.9.5.tar.gz
    6. [root@localhost ~]# ls
    7. anaconda-ks.cfg git-2.9.5 jdk-11.0.16_linux-x64_bin.tar.gz
    8. apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz
    9. [root@localhost ~]# cd git-2.9.5
    10. [root@localhost git-2.9.5]# make prefix=/usr/local/git all
    11. #all是开启git所有功能,类似安装前勾选
    12. [root@localhost git-2.9.5]# make prefix=/usr/local/git install
    13. #安装
    14. [root@localhost git-2.9.5]# vim /etc/profile.d/jenkins_tools.sh
    15. [root@localhost git-2.9.5]# cat /etc/profile.d/jenkins_tools.sh
    16. PATH=$PATH:$HOME/bin:/usr/local/git/bin
    17. #写这里是为了一会cat方便看,平时直接写到profile即可
    18. [root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh
    19. [root@localhost git-2.9.5]# git --version
    20. git version 1.8.3.1
    21. #注意此处git版本与下载版本并不相同,是因为一部分镜像即使最小化安装也会预装git
    22. [root@localhost git-2.9.5]# yum list | grep git.x86
    23. #找到1.8.3的全称
    24. [root@localhost git-2.9.5]# yum remove git.x86_64
    25. [root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh
    26. [root@localhost git-2.9.5]# git --version
    27. git version 2.9.5
    28. #版本恢复正常

    注:

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

     /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

    2.3、安装jdk,maven

    1. [root@localhost ~]# tar xf jdk-11.0.16_linux-x64_bin.tar.gz
    2. [root@localhost ~]# tar xf apache-tomcat-9.0.79.tar.gz
    3. [root@localhost ~]# ls
    4. anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz jdk-11.0.16
    5. apache-maven-3.8.8-bin.tar.gz git-2.9.5 jdk-11.0.16_linux-x64_bin.tar.gz
    6. apache-tomcat-9.0.79 git-2.9.5.tar.gz
    7. [root@localhost ~]# mv jdk-11.0.16 /usr/local/java
    8. [root@localhost ~]# mv apache-tomcat-9.0.79 /usr/local/tomcat
    9. [root@localhost ~]# vim /etc/profile.d/java.sh
    10. [root@localhost ~]# cat /etc/profile.d/java.sh
    11. TOMCAT_HOME=/usr/local/tomcat
    12. JAVA_HOME=/usr/local/java
    13. PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
    14. export TOMCAT_HOME JAVA_HOME PATH
    15. [root@localhost ~]# source /etc/profile.d/java.sh
    16. [root@localhost ~]# java -version
    17. java version "11.0.16" 2022-07-19 LTS
    18. Java(TM) SE Runtime Environment 18.9 (build 11.0.16+11-LTS-199)
    19. Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16+11-LTS-199, mixed mode)
    20. [root@localhost ~]# ls
    21. anaconda-ks.cfg apache-maven-3.8.8-bin.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
    22. [root@localhost ~]# tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/
    23. [root@localhost ~]# mv /usr/local/apache-maven-3.8.8/ /usr/local/maven
    24. [root@localhost ~]# vim /etc/profile.d/jenkins_tools.sh
    25. [root@localhost ~]# cat /etc/profile.d/jenkins_tools.sh
    26. PATH=$PATH:$HOME/bin:/usr/local/git/bin
    27. export M2_HOME=/usr/local/maven
    28. export M2=$M2_HOME/bin
    29. PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
    30. export MAVEN_HOME=/usr/local/maven
    31. export PATH=${MAVEN_HOME}/bin:$PATH
    32. [root@localhost ~]# mvn --version
    33. Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
    34. Maven home: /usr/local/maven
    35. Java version: 11.0.16, vendor: Oracle Corporation, runtime: /usr/local/java
    36. Default locale: zh_CN, platform encoding: UTF-8
    37. OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

    2.4、上传Jenkins

    1. [root@localhost ~]# ls
    2. anaconda-ks.cfg git-2.9.5 jenkins.war
    3. apache-maven-3.8.8-bin.tar.gz git-2.9.5.tar.gz
    4. apache-tomcat-9.0.79.tar.gz jdk-11.0.16_linux-x64_bin.tar.gz
    5. [root@localhost ~]# rm -rf /usr/local/tomcat/webapps/*
    6. [root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/

    2.5、启动tomcat

    1. [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
    2. Using CATALINA_BASE: /usr/local/tomcat
    3. Using CATALINA_HOME: /usr/local/tomcat
    4. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    5. Using JRE_HOME: /usr/local/java
    6. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    7. Using CATALINA_OPTS:
    8. Tomcat started.

    使用浏览器访问如下

    按照提示输入密钥,点击继续

    3、Jenkins前台配置

     选择“安装推荐的插件”等待插件安装

    注:这个位置可能会出现部分模块安装失败(红色),重试也会失败,这是因为和插件中心网络连接的问题,这里可以修改下插件中心,改为国内地址,插件安装位置/root/.jenkins/plugins/,安装失败可以通过外部下载后上传到此文件夹,实现插件安装,建议成功安装一次后将该文件夹下文件打包保存,以后部署直接使用。部分模块安装失败不影响进程推进,但会影响后期测试,此时排查难度已经接近无限大了。

    1. vim ~/.jenkins/hudson.model.UpdateCenter.xml
    2. #将url项替换如下
    3. http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    4. vim ~/.jenkins/updates/default.json
    5. #此处替换命令如下
    6. :% s/www.google.com/www.baidu.com/g
    7. :% s/updates.jenkins.io\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g

    安装完成

    创建账号继续

     点击保存并完成,完成安装

    4、Jenkins系统配置

    4.1、管理选项

     4.2、提示信息​​​​​​

    4.3、全局变量设置

    下拉找到系统管理

    勾选环境变量然后新增

     

    保存后自动回到主页

    4.4、全局工具配置

    4.4.1、maven配置

    4.4.2、添加jdk

    4.4.3、添加git

     4.4.4、添加maven

    4.4.5、ssh配置

    配置150与151ssh免密

    1. [root@localhost ~]# ssh-keygen
    2. [root@localhost ~]# ssh-copy-id -i 192.168.189.151
    3. [root@localhost ~]# ssh root@192.168.189.151
    4. Last login: Sat Jun 8 22:08:14 2024 from 192.168.189.1
    5. [root@localhost ~]# ip a | grep 192.168.189.15
    6. inet 192.168.189.151/24 brd 192.168.189.255 scope global noprefixroute ens33
    7. [root@localhost ~]# exit
    8. 登出
    9. Connection to 192.168.189.151 closed.
    10. [root@localhost ~]#

     取出刚刚生成的密钥,按下图配置,测试成功后保存弹出

    5、Jenkins插件管理

    5.1、插件管理中心

    通过插件管理中心可以直观地看到这里有可更新、可选未安装插件、已安装插件;可以通过过滤快速查找

     安装插件

    5.2、优化maven

    修改前

    修改后

    修改内容如下(修改为阿里源)

    1. <id>central
    2. central
    3. aliyun maven
    4. https://maven.aliyun.com/repository/public

    6、自动化构建

    6.1、创建一个maven工程

    6.2、构建maven项目

    6.3、源码管理

    这里使用公共的互联网仓库gitee代替公司内部后端开发仓库(如果是私有仓库,这里需要建立credentials身份认证)

     6.4、设置触发器

    6.5、设置打包程序(maven)

    手动添加手动添加Goals and options:clean package -Dmaven.test.skip=true

    6.6、构建后操作

    在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工作

    配置完保存自动弹出 

    source file的路径解释:构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)

    # ls /root/.jenkins/jobs/testjob1/builds/target/*.war

    这里需要到被推送服务器上提前部署路径,下方代码框内操作在151上完成

    1. [root@localhost ~]# mkdir -p /jenkins/war
    2. [root@localhost ~]# mkdir -p /jenkins/sh
    3. [root@localhost ~]# vim /jenkins/sh/deploy.sh
    4. [root@localhost ~]# cat /jenkins/sh/deploy.sh
    5. echo "FINISH build job" > /tmp/finish.sh
    6. [root@localhost ~]# ls /tmp/
    7. hsperfdata_root
    8. ks-script-PSPgvR
    9. systemd-private-5b02e3efb14a4000adb47697e94b3a70-chronyd.service-S01q6J
    10. vmware-root_8724-2832207218
    11. vmware-root_8730-2865761147
    12. vmware-root_8750-2824015062
    13. yum.log
    14. [root@localhost ~]# chmod +x /jenkins/sh/deploy.sh

    6.7、执行构建

    点击进度条的时间戳,进入 任务记录页面

     

    此处如果失败可回头检查控制台信息和前面所有设置

    7、查看构建结果

    此处检查在151(tomcat服务器)上执行

    1. [root@localhost ~]# ls /jenkins/war/
    2. easy-springmvc-maven.war
    3. #gitee上代码已经全部拉下
    4. [root@localhost ~]# cat /tmp/finish.sh
    5. FINISH build job
    6. #预设脚本已经执行

    8、常用操作总结

    1)重启Jenkins

    http://ip:8080/jenkins/restart

    2)“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可

    1. [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
    2. "1.0" encoding="UTF-8"?>

    3)构建个人的github库时,缺失pom文件

    可以用其他公共库的pom文件拷贝

    后记:Jenkins这个主要用于公司内部运维环境,重点放在与开发协调上。

  • 相关阅读:
    arm 体系架构前沿p5
    LetCode刷题[简单题](2)括号匹配问题(堆栈)
    npm ERR! code ERESOLVE
    你应该打好你的日志,起码避免被甩锅
    iObjects C++许可模块划分
    C进阶---动态内存管理
    基于Nodejs和mysql的工具市场客户信息管理系统
    【MongoDB】MongoDB数据库的基础使用,特殊情况以及Mongoose的安装和创建流程(含有Mongoose固定版本安装)
    opencv遇到CV_MINMAX未声明标识符问题
    网络原理——初识
  • 原文地址:https://blog.csdn.net/qq_43387908/article/details/139527702