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



浙公网安备 33010602011771号