Jenkins

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.noarch

https://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'
            """
        }
    }
}

}

//刚刚定义好的变量参数值

//构建

//验证

相关推荐
虚伪的空想家20 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
火车头-11020 小时前
【docker 部署nacos1.4.7】
运维·docker·容器
虾..20 小时前
Linux 进程状态
linux·运维·服务器
测试者家园20 小时前
DevOps 到底改变了测试什么?
运维·自动化测试·软件测试·devops·持续测试·智能化测试·软件测试和开发
jiayong231 天前
多子系统架构下的Nginx部署策略与最佳实践
运维·nginx·系统架构
皮糖小王子1 天前
Docker打开本地镜像
运维·docker·容器
叫致寒吧1 天前
Nginx基于域名的虚拟主机实操案例
运维·服务器·nginx
施努卡机器视觉1 天前
SNK施努卡车门自动化安装
运维·自动化
咕噜签名-铁蛋1 天前
云服务器与物理服务器、VPS的区别
运维·服务器
恒创科技HK1 天前
香港服务器流量有限制和带宽有限制区别在哪?
运维·服务器·网络