Jenkins
一、使用tomcat容器安装jenkins
1、部署tomcat,tomcat下载https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat,此时下载9.0版本的,10版本部署有bug,无法实现。
先要卸载centos7中自带得jdk
[root@ws ~]# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
javapackages-tools-3.4.1-11.el7.noarch
[root@ws ~]# rpm -e java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 --nodeps
[root@ws ~]# rpm -e java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64 --nodeps//部署网络源
//时钟同步
//安装jdk
[root@ws yum.repos.d]# yum -y install java-11-openjdk//解压tomcat,并部署安装
[root@ws local]# tar -xzvf apache-tomcat-9.0.67.tar.gz -C /usr/local/
[root@ws ~]# cd /usr/local/
[root@ws local]# ls
apache-tomcat-9.0.67  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@ws local]# ln -s apache-tomcat-9.0.67/ tomcat//启动tomcat,测试能否访问tomcat首页
[root@ws tomcat]#  bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
1、部署jenkins
//下载jenkins到/usr/local/tomcat/webapps/目录下
//下载下来后会自动解压
//启动服务
[root@ws tomcat]# bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@ws tomcat]# bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@ws tomcat]# cd webapps/
[root@ws webapps]# ls
docs  examples  host-manager  jenkins  jenkins.war  manager  ROOT
[root@ws webapps]# //浏览器访问jenkins

//查看上图框出来的文件,该文件中记录这密码,复制密码并登录
[root@ws webapps]# cat /root/.jenkins/secrets/initialAdminPassword
6e75422e88de464587840ca4ec2be037
3、自定义jenkins
//选择插件来安装

//选择无,进行安装,后期需要什么插件就安装什么插件

//创建管理员用户admin,密码为admin

//此时登录进去是英文界面,我们进行替换国内源

//点击 Advanced ---> 更新为国内源 ---> Submit
原国外插件源地址:https://updates.jenkins.io/update-center.json
国内插件源地址:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json

//安装简体中文插件

//安装Git GitHub GitLab Gitee插件
安装完成后,会重启jenkins


Jenkins流水线项目发布流程
主机名称 ip地址 需要的应用服务 工具包 系统
ansible 192.168.110.110 tomcat、jenkins git maven RHEL9
app 192.168.110.66 tomcat 无 RHEL9
1、关闭防火墙和selinux
2、在node1上部署服务tomcat和jenkins(上面已经部署),重新部署,登录web界面时选择安装推荐的插件,部署好后,设置国内源
3 配置yum源
[root@absible yum.repos.d]# cat server.repo 
[baseos]
name=baseos
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
[appstream]
name=app
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
3、先在ansible主机上生成一个密钥,传给app主机
[root@absible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.110.66
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.110.66 (192.168.110.66)' can't be established.
ED25519 key fingerprint is SHA256:Vx2iAClKk4iu5uccKPyvHZ0Qc0E179q28tXIIWNvxUM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.110.66's password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@192.168.110.66'"
and check to make sure that only the key(s) you wanted were added.4、在app上部署tomcat
略
5、在ansible中配置jenkins
//创建任务

//创建流水线任务

发布流水线的方法我在这里给大家介绍两种,一种是脚本的方式,一种是使用文本参数的方式
首选都需要在jinkins所在服务器,也就是ansible中安装git和maven
[root@absible ~]#  yum -y install git 
[root@absible ~]# yum -y install maven-openjdk11.noarchhttps://github.com/devopsbyhari/JenkinsTomcatExample.git
第一种方法:使用脚本
pipeline {
agent any
stages {
stage('pull code') {
steps {
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
}
}


//绿色为构建成功

//添加第二部分脚本执行
pipeline {
agent any
stages {
stage('pull code') {
steps {
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
stage('package') {
steps {
sh """
mvn clean
mvn package
"""
}
}
}
}
//再次进行构建--此时构建时间非常长第二次构建就是为了安装软件包,生成站点,站点
/root/.jenkins/workspace/test/target/目录下,通过日志文件可以看到该目录下就有个压缩文件为java-tomcat-maven-example.war
//第三次构建的时候,就是需要把这个文件使用scp的方式发送给app的tomcat中pipeline {
agent any
stages {
    stage('pull code') {
        steps {
            git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
        }
    }
    stage('package') {
        steps {
            sh """
            mvn clean
            mvn package
            """
        }
    }
    stage('deploy') {
        steps {
            sh """
            scp target/java-tomcat-maven-example.war root@192.168.110.66:/usr/local/tomcat/webapps/
            ssh root@192.168.110.66 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
            """
        }
    }
}}
此时我们去app中的去验证
[root@app ~]# cd /usr/local/tomcat/webapps/
[root@app webapps]# ls
docs  examples  host-manager  java-tomcat-maven-example  java-tomcat-maven-example.war  manager  ROOT
[root@app webapps]# //访问app的tomcat

//能够成功访问该页面,说明我们此次jenkins流水线项目部署成功
第二种方法呢,就是通过文本参数来实现流水线项目发布
为了实验效果呢,我们首先把app中刚刚接收到的站点给删除掉
//新建流水线项目lq

//添加文本参数

//添加git下载信息https://github.com/devopsbyhari/JenkinsTomcatExample.git

//添加字符参数,打包

//添加字符参数 定义tomcat路径

//添加文本参数 定义客户端ip

//编写流水线脚本
pipeline {
agent any
stages {
    stage('pull code') {
        steps {
            git "${git_url}"
        }
    }
    stage('package') {
        steps {
            sh """
            mvn clean
            mvn package
            """
        }
    }
    stage('deploy') {
        steps {
            sh """
            scp target/${maven_package}.war root@${client_ip}:${tomcat_path}/webapps/
            ssh root@${client_ip} '${tomcat_path}/bin/catalina.sh stop && ${tomcat_path}/bin/catalina.sh start'
            """
        }
    }
}}
//刚刚定义好的变量参数值
//构建

//验证
