jenkins发布项目
环境:
主机 | IP地址 | 服务 |
---|---|---|
server2 | 192.168.244.131 | jenkins |
node2 | 192.168.244.136 | tomcat |
在两台主机上部署相应的服务
在浏览器上访问 192.168.244.131:8080/jenkins server2主机IP
在浏览器上访问 192.168.244.136:8080 node2主机IP
在server2上简单部署一个项目
手动部署
(没有要自己注册一个账号)在网页上找包
下载git拉包
[root@server2 opt]# yum provides *bin/git
Failed to set locale, defaulting to C.UTF-8
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 1:39:34 ago on Tue Oct 19 15:24:11 2021.
git-core-2.27.0-1.el8.x86_64 : Core package of git
...: with minimal functionality
Repo : AppStream
Matched from:
Other : *bin/git
[root@server2 opt]# yum -y install git-core
拉包
[root@server2 opt]# git clone https://gitee.com/skywsy/tomcat-java-demo.git
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: 558, done.
remote: Counting objects: 100% (558/558), done.
remote: Compressing objects: 100% (316/316), done.
Receiving objects: 28% (161/558), 396.00 KiB | 383.
......
[root@server2 opt]# ls
test tomcat-java-demo
[root@server2 opt]#
把tomcat-java-demo打包war包
在这之前要下载mvn命令
[root@server2 tomcat-java-demo]# yum provides *bin/mvn
Failed to set locale, defaulting to C.UTF-8
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 1:46:36 ago on Tue Oct 19 15:24:11 2021.
maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch :
...: Java project management and project
...: comprehension tool
Repo : AppStream
Matched from:
Other : *bin/mvn
maven-lib-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch :
...: Core part of Maven
Repo : AppStream
Matched from:
Other : *bin/mvn
[root@server2 tomcat-java-demo]# yum -y install maven
打包(war包)
[root@server2 tomcat-java-demo]# ls
Dockerfile README.md deploy.yaml pom.xml
LICENSE db jenkinsfile src
[root@server2 tomcat-java-demo]# mvn clean package
......
ream-1.4.9.jar (549 kB at 292 kB/s)
[INFO] Packaging webapp
[INFO] Assembling webapp [ly-simple-tomcat] in [/opt/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [159 msecs]
[INFO] Building war: /opt/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:00 min
[INFO] Finished at: 2021-10-19T18:52:44+08:00
[INFO] ------------------------------------------------------------------------
[root@server2 tomcat-java-demo]# ls
Dockerfile README.md deploy.yaml pom.xml target
LICENSE db jenkinsfile src
[root@server2 tomcat-java-demo]#
[root@server2 tomcat-java-demo]# cd target/
[root@server2 target]# ls
classes
generated-sources
ly-simple-tomcat-0.0.1-SNAPSHOT
ly-simple-tomcat-0.0.1-SNAPSHOT.war
maven-archiver
maven-status
把ly-simple-tomcat-0.0.1-SNAPSHOT.war传到node2上
[root@server2 target]# mv ly-simple-tomcat-0.0.1-SNAPSHOT.war DD.war #随便改个名字
[root@server2 target]# ls
DD.war ly-simple-tomcat-0.0.1-SNAPSHOT
classes maven-archiver
generated-sources maven-status
[root@server2 target]#
[root@server2 target]#
[root@server2 target]# scp DD.war root@192.168.244.136:/usr/local/tomcat/webapps/
root@192.168.244.136's password:
DD.war 100% 17MB 224.1MB/s 00:00
##在node2上擦查看
[root@node2 ~]# cd /usr/local/tomcat/webapps/
[root@node2 webapps]# ls
DD ROOT examples manager
DD.war docs host-manager
[root@node2 webapps]#
用node2的IP访问网页
自动部署
拉包
在server2查看
[root@server2 target]# pwd
/root/.jenkins/workspace/tom/target
[root@server2 target]# ls
classes
generated-sources
ly-simple-tomcat-0.0.1-SNAPSHOT
ly-simple-tomcat-0.0.1-SNAPSHOT.war
maven-archiver
maven-status
修改名字
在主机server2上查看
[root@server2 target]# ls
classes maven-archiver
generated-sources maven-status
ly-simple-tomcat-0.0.1-SNAPSHOT myapp.war
ssh "ssh root@192.168.244.136 'tar -Jcf /opt/backup/myapp-$(date +%Y%m%d).tar.xz /usr/local/tomcat/webapps/DD'"
部署项目
pipeline {
agent any
stages {
stage('Build') {
steps {
// Get some code from a GitHub repository
git 'https://gitee.com/forgotten/tomcat-java-demo.git'
// Run Maven on a Unix agent.
sh "mvn -Dmaven.test.failure.ignore=true clean package"
sh "mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/myapp.war "
// To run Maven on a Windows agent, use
// bat "mvn -Dmaven.test.failure.ignore=true clean package"
}
}
stage('publish') {
steps {
sh "ssh root@192.168.244.136 'tar -Jcf /opt/backup/myapp-\$(date +%Y%m%d).tar.xz /usr/local/tomcat/webapps/DD'"
sh "scp target/myapp.war root@192.168.244.136:/usr/local/tomcat/webapps"
sh "ssh root@192.168.244.136 '/usr/local/tomcat/bin/shutdown.sh;slepp 3; /usr/local/tomcat/bin/catalina.sh start'"
}
}
}
}
创建免密登录
[root@server2 ~]# 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:3eu2cD23cNUuCjg+oI1exj3kosIW0P7KPVdk4LwMXOk root@server2
The key's randomart image is:
+---[RSA 3072]----+
| . |
| + |
| . . = . |
|. . o E o. . .|
| o o +S . . o|
| o .++.. o ..|
| . o +=o* o o.+.o|
| .+.=+oo.o =..o+.|
| .o++o .. .+. . |
+----[SHA256]-----+
[root@server2 ~]#
[root@server2 ~]#
[root@server2 ~]# ls .ssh/
id_rsa id_rsa.pub known_hosts
[root@server2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.244.136
/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.244.136's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.244.136'"
and check to make sure that only the key(s) you wanted were added.
构建
在node2上查看
[root@node2 webapps]# ls
ROOT examples manager myapp.war
docs host-manager myapp
访问网页
拉取私有仓库
手动拉取
[root@server2 ~]# git clone https://gitee.com/skywsy/tomcat-java-demo.git
Cloning into 'tomcat-java-demo'...
Username for 'https://gitee.com': skywsy 用户名
Password for 'https://skywsy@gitee.com': 密码
.....
自动拉取