Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
*Jenkins是一个用 Java 编写的开源自动化软件项目。*是基于Java开发的一种持续集成工具,用于监控持续重复的工作。Jenkins 用于持续构建和测试软件项目 ,集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。
Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
首先保证系统中已经安装了jdk,最好是jdk1.5以上。
第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:
$ java -jar jenkins.war
如果需要修改端口可以使用如下命令:
$ java -jar jenkins.jar--httpPort=8081
然后在浏览器中(推荐用火狐输入localhost:8081,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins。
第二种方法是用tomcat打开
解压tomcat到某个目录,如/usr/local,进入tomcat下的/bin目录,启动tomcat
将jenkins.war文件放入tomcat下的webapps目录下,启动tomcat时,会自动在webapps目录下建立jenkins目录,在地址栏上需要输入localhost:8080/jenkins
Jenkins 的一个流程

Jenkins 的官网:https://www.jenkins.io/
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cI07ZBOp-1660814259859)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660726770094.png)]](https://1000bd.com/contentImg/2024/03/29/358edddb2bbf4179.png)
中文版
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgqXQ8NH-1660814259861)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660727839904.png)]](https://1000bd.com/contentImg/2024/03/29/6f7a14a33a5b0926.png)
点击文档后的页面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EHnJSnRp-1660814259861)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660735391130.png)]](https://1000bd.com/contentImg/2024/03/29/228f43d08d91cf9f.png)
下载Jenkins
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-546mikzW-1660814259863)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660726843068.png)]](https://1000bd.com/contentImg/2024/03/29/0ef86ca9b1ce0641.png)
Jenkins 下载打包工具的地址
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZaZVK78E-1660814259863)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660802764272.png)]](https://1000bd.com/contentImg/2024/03/29/bf80a2e6bc1b3e05.png)
如果需要安装 maven 、JDK 、git 、ant 。默认是 maven
如果从这里安装,只能Jenkins 的这页面能用,系统是不能用的。所以一般安装软件直接在主机上安装。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yVxFbrb0-1660814259865)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660802807121.png)]](https://1000bd.com/contentImg/2024/03/29/0073353405886f35.png)
| 系统平台 | IP | 主机名 |
|---|---|---|
| centos8/redhat8 | 192.168.229.148 | node1 |
| centos8/redhat8 | 192.168.229.150 | node2 |
在node1 主机打完包之后使用 scp 传送到 node2
node1 跑Tomcat 跟Jenkins 、 node2 跑Tomcat。 然后在node1 打包完之后再传到 node2 ,然后使用 node2 的IP加端口访问是否能访问到。
node1 我已部署Tomcat跟 Jenkins 如有不懂请看我另一篇文章 http://t.csdn.cn/g8HK4
node2 部署Tomcat过程 在这篇文章里 http://t.csdn.cn/g8HK4
在node1上操作
## 首先先用命令行的方式进行打包看是否能打包,再用Jenkins 的方式打包。
## 下载 git 命令
[root@node1 ~]# dnf -y install git
## 使用git 命令拉取下来 。。 如果是私有的就需要登录账号跟密码,才能拉取
[root@node1 ~]# git clone https://github.com/chendao2015/tomcat-java-demo.git
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: 549, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 549 (delta 0), reused 2 (delta 0), pack-reused 546
Receiving objects: 100% (549/549), 5.08 MiB | 1.09 MiB/s, done.
Resolving deltas: 100% (213/213), done.
[root@localhost ~]# ls
anaconda-ks.cfg
tomcat-java-demo ## 拉取好了
[root@node1 ~]# cd tomcat-java-demo/
[root@node1 tomcat-java-demo]# ls
db Dockerfile LICENSE pom.xml README.md src
## 使用 pom.xml 打包的
## build.xml 使用 ant打包的
进行打包
[root@node1 tomcat-java-demo]# mvn clean package -Dmaven.test.skip=true
......打包过程省略N
打包完成后会看到 有target 目录
[root@node1 tomcat-java-demo]# ls
db Dockerfile LICENSE pom.xml README.md src target
进入 target 目录
[root@node1 tomcat-java-demo]# cd target/
[root@node1 target]# ls
classes generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-archiver maven-status
## 使用 scp 命令传到 node2 主机的 /usr/local/tomcat/webapps 的下面
[root@node1 target]# scp ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/
The authenticity of host '192.168.229.150 (192.168.229.150)' can't be established.
ECDSA key fingerprint is SHA256:BSCsrBDXmOy0vQCzkxthvFwA+8EIkoMVyeVV45QrFdM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.229.150' (ECDSA) to the list of known hosts.
root@192.168.229.150's password:
ly-simple-tomcat-0.0.1-SNAPSHOT.war 100% 17MB 117.4MB/s 00:00
## 在 node2 上查看
[root@node2 webapps]# pwd
/usr/local/tomcat/webapps
[root@node2 webapps]# ls
ly-simple-tomcat-0.0.1-SNAPSHOT ly-simple-tomcat-0.0.1-SNAPSHOT.war
## 已经传过来 访问以下
## 设置免密登录
[root@node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Gy5a/XPsjBCOipQnI25IbAiproNG0yahSkSHEICDSzI root@node1
The key's randomart image is:
+---[RSA 3072]----+
|O.. |
|E+ . |
|+=. |
|+o |
|B o S |
|+O + = + |
|@ O . + * . |
|** = + . o.oo |
|=o. o o+o |
+----[SHA256]-----+
[root@node1 ~]#
[root@node1 ~]# ssh-copy-id root@192.168.229.150
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/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.229.150's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.229.150'"
and check to make sure that only the key(s) you wanted were added.
node2 主机访问
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JajQP8zu-1660814752724)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660808870269.png)]](https://1000bd.com/contentImg/2024/03/29/41418faa9c9a43d1.png)
这时可以使用 Jenkins 操作了,创建一个项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YHdmIQC-1660814259868)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660809225243.png)]](https://1000bd.com/contentImg/2024/03/29/ed072c40698bb2c5.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dgs602lu-1660814259870)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660812159335.png)]](https://1000bd.com/contentImg/2024/03/29/ba4725865bb8b30b.png)
点击确定后的页面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAO6mHrk-1660814259872)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660809851075.png)]](https://1000bd.com/contentImg/2024/03/29/47ed1df738f5447b.png)
脚本内容
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://github.com/chendao2015/tomcat-java-demo.git' ## 注意:如果是私有仓库还要添加账号跟密码
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage(publish){
steps{
sh """
scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/
ssh root@192.168.229.150 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
"""
}
}
}
}
注意:在执行之前需要设置免密登录
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQIrsl6l-1660814259874)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660810042780.png)]](https://1000bd.com/contentImg/2024/03/29/d124ff4a40cf121b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-icUdVDeE-1660814259875)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660810754960.png)]](https://1000bd.com/contentImg/2024/03/29/c4b68343dc8ebbd4.png)
node2 操作
[root@node2 ~]# cd /usr/local/tomcat/webapps/
[root@node2 webapps]# ls
ly-simple-tomcat-0.0.1-SNAPSHOT ly-simple-tomcat-0.0.1-SNAPSHOT.war
node2 访问
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1dy3eAEM-1660814259877)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660812622288.png)]](https://1000bd.com/contentImg/2024/03/29/40558a7fd7b52665.png)
其实上面的脚本代码还可以优化的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nvp9pvo7-1660814259878)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660813961698.png)]](https://1000bd.com/contentImg/2024/03/29/00da01816a454ef4.png)
/opt/test1.sh 脚本内容
[root@node1 ~]# cat /opt/test1.sh
#!/bin/bash
cd /opt/
git clone 'https://github.com/chendao2015/tomcat-java-demo.git' ## 拉取代码
cd /opt/tomcat-java-demo
mvn clean package -Dmaven.test.skip=true && \ ## 打包
scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.229.150:/usr/local/tomcat/webapps/ ## 使用scp 命令把打包好的东西传到node2主机的指定位置上
ssh root@192.168.229.150 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'