• Jenkins自动化部署


    Jenkins自动化部署

    1.基础环境搭建

    参考:https://llinp.cn/articles/2022/01/01/1640998831081.html

    1.1 虚拟机环境搭建

    1.2 安装jdk运行环境

    #进入到src目录下
    cd /usr/local/src/
    
    #创建java文件目录
    mkdir java
    
    #将下载好的jdk压缩包存放到java目录中,并使用解压命令进行解压
    tar -zxvf jdk-8u212-linux-x64.tar.gz
    
    
    #修改环境变量
    vim /etc/profile
     
    #set java env                
    JAVA_HOME=/usr/local/src/java/jdk1.8.0_212
    JAVA_BIN=/usr/local/src/java/jdk1.8.0_212/bin
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    
    #通过命令source /etc/profile让profile文件立即生效
    source /etc/profile
    
    #测试是否安装成功
    java -version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    出现下图的效果就说明jdk环境已经配置好了

    image-20220202125049998

    1.3 安装maven

    #第一步:上传或下载安装包
    cd/usr/local
    apache-maven-3.6.1-bin.tar.gz
    
    #第二步:解压安装包
    tar -zxvf apache-maven-3.6.1-bin.tar.gz
    
    #第三步:建立软连接
    ln -s /usr/local/apache-maven-3.6.1/ /usr/local/maven
    
    #第四步:修改环境变量
    vim /etc/profile
    
    export MAVEN_HOME=/usr/local/maven
    export PATH=$PATH:$MAVEN_HOME/bin
    
    #通过命令source /etc/profile让profile文件立即生效
    source /etc/profile
    
    #第五步、测试是否安装成功
    mvn –v
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20220202130143480

    1.4 安装git

    yum -y install git
    
    • 1

    1.5安装docker

    #验证docker是否安装好, 命令查看docker的版本,虚拟机中的docker已经装好了,1.7.3到1.7.1中的安装命令不要执行。
    docker version
    
    #卸载老版本的 docker 及其相关依赖
    sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
    
    #安装 yum-utils**,它提供了** yum-config-manager**,可用来管理yum源**
    sudo yum install -y yum-utils
    
    #添加yum源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    #更新索引
    sudo yum makecache fast
    
    #安装 docker-ce
    sudo yum install docker-ce
    
    #查看docker状态
    systemctl status docker
    
    #启动 docker
    systemctl start docker
    
    # 启动
    service docker start
    # 停止
    service docker stop
    # 重启
    service docker restart 
    
    #验证是否安装成功
    docker info
    
    #查看装好的镜像
    docker images
    
    #查看容器
    #显示所有容器
    docker ps -a 
    #显示所有正在运行的容器
    docker ps 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    详细安装教程参见:

    https://llinp.cn/articles/2022/01/09/1641738726437.html#toc_h2_0

    2.安装jekins

    下载jenkins

    官方地址:https://www.jenkins.io/download/

    image-20220202133506565

    安装

    #第一步:上传或下载安装包
    cd/usr/local/jenkins
    jenkins.war
    
    #第二步:启动
    #nohup-后台静默启动 
    #/usr/local/jenkins/jenkins.war war包路径
    #/usr/local/jenkins/jenkins.out 日志输入路径
    #nohup & 后台静默启动
    nohup java -jar  /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &
    
    #第三步:访问
    http://ip:8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    安装成功之后的效果,刚开始访问会有一个初始化界面不需要操作等待即可,如果等待很久没有变化则kill -9 进程号,重新启动即可

    初始化界面

    image-20220202141606609

    image-20220202134859232

    密码解锁

    cat /root/.jenkins/secrets/initialAdminPassword
    
    • 1

    image-20220202135659543

    注意默认是国外镜像,下载非常慢。建议到此关闭浏览器配置国内的镜像

    image-20220202135720298

    3.配置国内的镜像

    官方下载插件慢 更新下载地址

    cd {你的Jenkins工作目录}/updates #进入更新配置位置

    #将镜像地址替换曾
    sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
    
    • 1
    • 2

    这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo(linux登录账户不是超级管理员的话)

    3.1 停止jenkins

    #查看jenkins进程
    ps -ef|grep jenkins
    
    • 1
    • 2

    image-20220202140533598

    #杀掉进程,停止jenkins
    kill -9 37820
    
    • 1
    • 2

    image-20220202140626888

    进入到 cd /root/.jenkins目录中

    cd /root/.jenkins
    
    • 1

    进入updates目录

    cd updates/
    
    • 1

    执行语句替换镜像地址为国内镜像地址

    sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
    
    • 1

    查看替换后的default.json内容(cat、tail都可以查看文件内容)

    tail default.json
    或
    cat default.json 
    
    • 1
    • 2
    • 3

    重启jenkins

    nohup java -jar  /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &
    
    • 1

    4.安装插件

    选择安装推荐的插件

    img

    安装中

    image-20220202141919095

    安装成功

    正常填写即可

    image-20220202142229167

    配置访问地址

    这里默认端口是8080根据需要进行切换

    image-20220202142331799

    进入到这个界面jenkins的安装就完成了

    image-20220202142546668

    5.jenkins配置

    jenkins的配置准备工作

    1.下载jdk

    2.下载maven

    3.下载git

    4.下载jenkins.war https://jenkins.io/index.html

    下载地址:

    链接:https://pan.baidu.com/s/1E-uQbZLVRGWkR_14xuPCLg
    提取码:35sv

    登录

    image-20220202142744199

    jenkins管理界面

    image-20220202142822260

    image-20220202143041727

    进入全局配置

    image-20220202143212846

    5.1 配置jdk

    #查看jdk安装路径
    which jdk
    
    • 1
    • 2

    image-20220202143711038

    这里我的jdk安装路径是/usr/local/src/java/jdk1.8.0_212

    image-20220202143858161

    5.2配置maven

    image-20220202144320800

    5.3配置git

    #查看git安装路径
    which git
    
    • 1
    • 2

    image-20220202144305423

    image-20220202144441195

    6.jenkins自动化部署

    6.1修改项目

    image-20220202145617226

    修改pom文件

    修改打包方式

     <packaging>jarpackaging>
    
    • 1

    打包插件

     <build>
            <finalName>demojenkinsfinalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6.2在jenkins管理界面创建自动化任务

    image-20220202145822508

    创建item

    image-20220202150007616

    源码管理填入项目git地址

    image-20220202150853461

    添加用户名和密码

    image-20220202153516162

    构建环境

    image-20220202153700891

    脚本文件

    #!/bin/bash
    #maven打包
    mvn clean package
    echo 'package ok!'
    echo 'build start!'
    cd ./
    service_name="demojenkins"
    service_prot=8761
    #查看镜像id 判断demojenkins镜像是否存在
    IID=$(docker images | grep "$service_name" | awk '{print $3}')
    echo "IID $IID"
    if [ -n "$IID" ]
    then
    	#如果存在则删除镜像
        echo "exist $SERVER_NAME image,IID=$IID"
        #删除镜像
        docker rmi -f $service_name
        echo "delete $SERVER_NAME image"
        #删除之后重新构建
        docker build -t $service_name .
        echo "build $SERVER_NAME image"
    else
    	#不存在则直接构建
        echo "no exist $SERVER_NAME image,build docker"
        #构建
        docker build -t $service_name .
        echo "build $SERVER_NAME image"
    fi
    #查看容器id,查看有哪些正在运行的容器
    CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
    echo "CID $CID"
    if [ -n "$CID" ]
    then
    	#如果存在相同的容器则停止删除
        echo "exist $SERVER_NAME container,CID=$CID"
        #停止
        docker stop $service_name
        #删除容器
        docker rm $service_name
    else
        echo "no exist $SERVER_NAME container"
    fi
    #启动,创建容器
    docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
    #查看启动日志,根据选择是否查看
    #docker logs -f  $service_name
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    image-20220202154444127

    构建之前需要启动docker

    image-20220202154951514

    开始执行任务

    image-20220202155104157

    查看控制台输出

    image-20220202155135976

    至此项目就构建完成了

    image-20220202155709097

    最终效果

    image-20220202155827285

    6.3补充

    构建结构

    我这里用到的jenkins是2.319.2的版本图片已经做了改变,图标的表示可以根据对于的解释来看

    第一列是 “上次构建状态显示”,是一个圆形图标,一般分为四种:

    IMG_256

    蓝色:构建成功;

    IMG_257

    黄色:不确定,可能构建成功,但包含错误;

    IMG_258

    红色:构建失败;

    IMG_259

    灰色:项目从未构建过,或者被禁用;

    如上显示蓝色,表示构建成功。

    注意:手动触发构建的时间与自动定时构建的时间互不影响。

  • 相关阅读:
    H5互动小游戏如何提升用户留存
    ffmpeg2段视频合成一段
    C语言文件操作
    SpringBoot_15_shiro
    【双向传输ConvLSTM网络:Pan-Sharpening】
    电机控制方案汇总
    QSystemTrayIcon——实现系统托盘
    2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明
    国外大神制作的史上最精简Win10系统,真有那么好用吗?
    RabbitMQ消息队列
  • 原文地址:https://blog.csdn.net/qq_44981526/article/details/125883421