Jenkins

Jenkins

介绍

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

官网:https://jenkins.io/ 官方文档:https://jenkins.io/doc/

特性

开源的java语言开发持续集成工具,支持CI,CD;

易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;

消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;

分布式构建:支持Jenkins能够让多台计算机一起构建/测试;

文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;

丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

jenkins功能:打包发布 jenkins是流程化工具

打包工具:

  • gradler
  • ant
  • maven
  • 打包工具版本必须一致

部署

关闭防火墙selinux
[root@localhost ~]# systemctl disable --now firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# vim /etc/selinux/config 
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 
Disabled

安装openjdk、jenkins、tomcat
查看选择包
[root@localhost ~]# yum list all|grep openjdk
java-1.8.0-openjdk.x86_64                            1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-accessibility.x86_64              1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-demo.x86_64                       1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-devel.x86_64                      1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-headless.x86_64                   1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-javadoc.noarch                    1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-javadoc-zip.noarch                1:1.8.0.201.b09-2.el8                                AppStream 
java-1.8.0-openjdk-src.x86_64                        1:1.8.0.201.b09-2.el8                                AppStream 
java-11-openjdk.x86_64                               1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-demo.x86_64                          1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-devel.x86_64                         1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-headless.x86_64                      1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-javadoc.x86_64                       1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-javadoc-zip.x86_64                   1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-jmods.x86_64                         1:11.0.2.7-2.el8                                     AppStream 
java-11-openjdk-src.x86_64                           1:11.0.2.7-2.el8                                     AppStream 

[root@localhost ~]# yum -y install java-11-openjdk*
[root@localhost ~]# wget https://get.jenkins.io/war-stable/2.303.2/jenkins.war
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz

解压
[root@localhost ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg              initial-setup-ks.cfg
模板  图片  下载  桌面  apache-tomcat-9.0.54.tar.gz  jenkins.war
[root@localhost ~]# tar xf apache-tomcat-9.0.54.tar.gz -C /usr/local/

[root@localhost local]# ls
apache-tomcat-9.0.54  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@localhost local]# mv apache-tomcat-9.0.54 jenkins
[root@localhost local]# ls
bin  etc  games  include  jenkins  lib  lib64  libexec  sbin  share  src
[root@localhost local]# cd jenkins/
[root@localhost jenkins]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
开启服务
[root@localhost jenkins]# ./bin/startup.sh
Using CATALINA_BASE:   /usr/local/jenkins
Using CATALINA_HOME:   /usr/local/jenkins
Using CATALINA_TMPDIR: /usr/local/jenkins/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost jenkins]# ss -antl
State    Recv-Q    Send-Q             Local Address:Port        Peer Address:Port    
LISTEN   0         32                 192.168.122.1:53               0.0.0.0:*       
LISTEN   0         128                      0.0.0.0:22               0.0.0.0:*       
LISTEN   0         5                      127.0.0.1:631              0.0.0.0:*       
LISTEN   0         128                      0.0.0.0:111              0.0.0.0:*       
LISTEN   0         128                         [::]:22                  [::]:*       
LISTEN   0         5                          [::1]:631                 [::]:*       
LISTEN   0         1             [::ffff:127.0.0.1]:8005                   *:*       
LISTEN   0         128                         [::]:111                 [::]:*       
LISTEN   0         100                            *:8080                   *:*       

 

[root@localhost jenkins]# cd webapps/
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# rm -rf docs  examples  host-manager  manager
[root@localhost webapps]# ls
ROOT
[root@localhost webapps]# cp ~/jenkins.war .
[root@localhost webapps]# ls
jenkins.war  ROOT
[root@localhost webapps]# ls
jenkins  jenkins.war  ROOT
[root@localhost webapps]# cat /root/.jenkins/secrets/initialAdminPassword
8a874edaef5f4ff1a4f376c1d3eedb4b


 

 

 

 

 

 

手动

server1
关闭防火墙
[root@server1 ~]# systemctl disable --now firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@server1 ~]# setenforce 0

下载openjdk、Tomcat
[root@server1 ~]# yum -y install java-11-openjdk*
[root@server1 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
[root@server1 ~]# tar xf apache-tomcat-9.0.54.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ls
apache-tomcat-9.0.54  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@server1 local]# mv apache-tomcat-9.0.54/ tomcat
[root@server1 local]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT

jenkins
安装git拉代码
[root@localhost jenkins]#  yum -y install git
[root@localhost ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg              initial-setup-ks.cfg
模板  图片  下载  桌面  apache-tomcat-9.0.54.tar.gz  jenkins.war
[root@localhost ~]# cd /opt/
[root@localhost opt]# git clone https://gitee.com/forgotten/tomcat-java-demo.git
正克隆到 'tomcat-java-demo'...
remote: Enumerating objects: 558, done.
remote: Counting objects: 100% (558/558), done.
remote: Compressing objects: 100% (316/316), done.
remote: Total 558 (delta 217), reused 558 (delta 217), pack-reused 0
接收对象中: 100% (558/558), 5.08 MiB | 96.00 KiB/s, 完成.
处理 delta 中: 100% (217/217), 完成.
[root@localhost opt]# ls
tomcat-java-demo

jenkins上打包
安装mvn命令
[root@localhost tomcat-java-demo]# yum -y install maven
[root@localhost tomcat-java-demo]# ls
db  deploy.yaml  Dockerfile  jenkinsfile  LICENSE  pom.xml  README.md  src
[root@localhost tomcat-java-demo]# rpm -qf /usr/bin/mvn
maven-3.5.4-5.module+el8+2452+b359bfcd.noarch

[root@localhost tomcat-java-demo]# mvn clean package
[root@localhost tomcat-java-demo]# mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/myapp.war
[root@localhost tomcat-java-demo]# ls target/
classes            ly-simple-tomcat-0.0.1-SNAPSHOT  maven-status
generated-sources  maven-archiver                   myapp.war

把myapp.war同步到server1
[root@localhost tomcat-java-demo]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:pBoYHMf6dp9pTdmvEbPNjiYSwQR1zI3NPQXfJkWG8jU root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|  ... .o.o.= ..==|
| . o.   ..+ = +Eo|
|  o.   o.    o.o=|
|  .o   oo     .o |
|  ... . S. oo    |
|    oo. . o .*   |
|   ... . *  o.o  |
|        * o .+.  |
|       . . oo..  |
+----[SHA256]-----+
[root@localhost tomcat-java-demo]# cd
[root@localhost ~]# ls .ssh/
id_rsa  id_rsa.pub

[root@localhost ~]# ssh-copy-id root@192.168.145.170
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.145.170 (192.168.145.170)' can't be established.
ECDSA key fingerprint is SHA256:t40x15ktcpMljOGJDYGl/mBzhl7pKNTCrzQ4D5mLaos.
Are you sure you want to continue connecting (yes/no)? 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.145.170's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.145.170'"
and check to make sure that only the key(s) you wanted were added.

[root@localhost ~]# ssh root@192.168.145.170
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Wed Oct 20 12:14:28 2021 from 192.168.145.1

[root@server1 ~]# exit
注销
Connection to 192.168.145.170 closed.

server1
[root@server1 ~]# /usr/local/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.
[root@server1 ~]# ss -antl
State    Recv-Q    Send-Q             Local Address:Port        Peer Address:Port    
LISTEN   0         32                 192.168.122.1:53               0.0.0.0:*       
LISTEN   0         128                      0.0.0.0:22               0.0.0.0:*       
LISTEN   0         5                      127.0.0.1:631              0.0.0.0:*       
LISTEN   0         128                      0.0.0.0:111              0.0.0.0:*       
LISTEN   0         128                         [::]:22                  [::]:*       
LISTEN   0         5                          [::1]:631                 [::]:*       
LISTEN   0         1             [::ffff:127.0.0.1]:8005                   *:*       
LISTEN   0         128                         [::]:111                 [::]:*       
LISTEN   0         100                            *:8080                   *:*       
[root@server1 ~]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ROOT

jenkins
[root@localhost opt]# cd tomcat-java-demo/
[root@localhost tomcat-java-demo]# scp target/myapp.war root@192.168.145.170:/usr/local/tomcat/webapps/
myapp.war                                          100%   17MB  56.0MB/s   00:00    

server1
[root@server1 ~]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  myapp  myapp.war  ROOT


 

 

jenkins自动

项目的创建方式: 新建项目→给它一个名字→选择流水线→进入流水线后,再写代码→选择确定

[root@localhost ~]# cd .jenkins/workspace/
[root@localhost workspace]# ls
ninhao  ninhao@tmp
[root@localhost workspace]# cd ninhao
[root@localhost ninhao]# ls
db  deploy.yaml  Dockerfile  jenkinsfile  LICENSE  pom.xml  README.md  src  target
[root@localhost ninhao]# ls target/
classes            ly-simple-tomcat-0.0.1-SNAPSHOT      maven-archiver
generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-status


 

 

 

 

 

 

 

 

 

 

备份

[root@server1 ~]# cd /usr/local/tomcat/webapps/
[root@server1 webapps]# ls
docs  examples  host-manager  manager  myapp  myapp.war  ROOT
[root@server1 webapps]# cd
[root@server1 ~]# cd /opt/
[root@server1 opt]# mkdir backup
[root@server1 opt]# ls
backup
[root@server1 opt]# cd
[root@server1 ~]# tar Jcf /opt/backup/myapp-$(date +%Y%m%d%H%M).tar.xz /usr/local/tom
cat/webapps/myapp
tar: 从成员名中删除开头的“/”
[root@server1 ~]# ls /opt/backup/
myapp-202110201307.tar.xz
[root@server1 ~]# ssh root@192.168.145.170 'tar Jcf /opt/backup/myapp-$(date +%Y%m%d%
H%M).tar.xz /usr/local/tomcat/webapps/myapp'
The authenticity of host '192.168.145.170 (192.168.145.170)' can't be established.
ECDSA key fingerprint is SHA256:t40x15ktcpMljOGJDYGl/mBzhl7pKNTCrzQ4D5mLaos.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.145.170' (ECDSA) to the list of known hosts.
root@192.168.145.170's password: 
tar: 从成员名中删除开头的“/”
[root@server1 ~]# ls /opt/backup/
myapp-202110201307.tar.xz  myapp-202110201308.tar.xz


[root@localhost ~]# cd .jenkins/workspace/
[root@localhost workspace]# ls
ninhao  ninhao@tmp
[root@localhost workspace]# cd ninhao
[root@localhost ninhao]# ls
db  deploy.yaml  Dockerfile  jenkinsfile  LICENSE  pom.xml  README.md  src  target
[root@localhost ninhao]# scp target/myapp.war root@192.168.145.170:/usr/local/tomcat/
webapps/
myapp.war                                          100%   17MB  67.5MB/s   00:00    

 

 

 

 

posted @ 2021-10-19 01:21  Aimmi  阅读(162)  评论(0)    收藏  举报