jenkins部署项目

jenkins

1.先说说CI/CD

在这里插入图片描述

生产环境下,提前需要备份,再操作

集成:个人研发的部分与软件整体部分交付的过程,代码集成流程:编译,测试,打包

CI(continuous Integration):持续集成,在持续集成环境中,开发人员将会频繁的提交代码到主干。这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流进行验证。这样做是基于之前持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。一般用于测试环境和开发环境。

CD:代码持续交互,持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按键就可以随时随地实现应用的部署上线。

持续部署的过程要手动部署

而jenkins中提供的插件可以实现CI/CD功能

几种发布流程场景:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.jenkins介绍

jenkins官网

jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,使软件项目可以持续集成。

jenkins可以在每个人git代码后,自动检测到代码的变动,自动的打包,测试,提交,出现问题会以邮件的方式提醒。

3.jenkins包下载

在这里插入图片描述

在这里插入图片描述

4.jenkins部署
[root@jenkins ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@jenkins ~]# setenforce 0
#下载jenkins.war包
[root@jenkins ~]# wget https://get.jenkins.io/war-stable/2.303.2/jenkins.war
#下载openJDK环境
[root@jenkins ~]# yum -y install java-17-openjdk*
#下载tomcat包
[root@jenkins ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz

#部署jenkins项目
[root@jenkins ~]# tar -xf apache-tomcat-9.0.54.tar.gz -C /usr/local/
[root@jenkins ~]# ln -s /usr/local/apache-tomcat-9.0.54/ /usr/local/jenkins
[root@jenkins ~]# mkdir /backup       
[root@jenkins ~]# cp -r /usr/local/jenkins/webapps/* /backup/   #备份webapps下默认的目录
[root@jenkins ~]# rm -rf /usr/local/jenkins/webapps/*
[root@jenkins ~]# cd /usr/local/jenkins/webapps/
[root@jenkins webapps]# cp /root/jenkins.war .     #war包传到webapps项目中
[root@jenkins webapps]# ls
jenkins.war
[root@jenkins webapps]# /usr/local/jenkins/bin/catalina.sh start   #开启tomcat也就是jenkins项目
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@jenkins webapps]# ls
jenkins  jenkins.war       #会发现war包自动解压了

进行jenkins访问

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#jenkins国内源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述

全局工具内配置

在这里插入图片描述

maven中pom,jar,war
1.pom是maven依赖文件
2.jar是java普通项目打包文件
3.war是javaweb项目打包文件

系统配置

在这里插入图片描述

在这里插入图片描述


5.jenkins手动部署java项目
版本服务ip
centos8jenkins192.168.136.129
centos8tomcat192.168.136.233
发布java项目的步骤
1.拉取代码并且打包
	git clone xx
	mvn clean package
2.提前做好项目备份	
3.war包传到目标服务器上的webapps目录中(做免密登录)
4.重启目标服务器的tomcat服务(会自动解压包)
5.修改项目的配置
6.重启tomcat服务

5.1jenkins服务开启

#启动jenkins
[root@jenkins ~]# /usr/local/jenkins/bin/catalina.sh start
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@jenkins ~]# ss -antl
State       Recv-Q      Send-Q                Local Address:Port           Peer Address:Port     Process     
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                         0.0.0.0:22                  0.0.0.0:*                    
LISTEN      0           5                             [::1]:631                    [::]:*                    
LISTEN      0           1                [::ffff:127.0.0.1]:8005                      *:*                    
LISTEN      0           128                            [::]:111                    [::]:*                    
LISTEN      0           100                               *:8080                      *:*                    
LISTEN      0           128                            [::]:22                     [::]:*  

浏览器登录到jenkins界面
先来模拟一个自带的hello world小项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.2java开发人员已经把代码放在了gitee仓库,我们第一步应该开始拉代码并且打包

#下载git(拉代码用),maven(打包用)
[root@jenkins ~]# yum -y install git maven
#拉取代码
[root@jenkins src]# 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 | 771.00 KiB/s, 完成.
处理 delta 中: 100% (217/217), 完成.
#进行打包
[root@jenkins src]# cd tomcat-java-demo/
[root@jenkins tomcat-java-demo]# mvn clean package
[root@jenkins tomcat-java-demo]# ls
db  deploy.yaml  Dockerfile  jenkinsfile  LICENSE  pom.xml  README.md  src  target(包在此目录下)
[root@jenkins tomcat-java-demo]# cd target/
[root@jenkins target]# ls
classes            ly-simple-tomcat-0.0.1-SNAPSHOT      maven-archiver
generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-status

#jenkins做免密登录
[root@jenkins target]# 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:q0QOr+cNeRCkbnWDw8AuSG7txPMHh/SwQvgRqFOpz2M root@jenkins
The key's randomart image is:
+---[RSA 3072]----+
|  o+o .          |
| +oo.B .         |
|++=.+ @ o        |
|=o.O.= * .       |
|.+o.B = S        |
|  Eo * + .       |
| . .  B o        |
|     o.=         |
|    .oo .        |
+----[SHA256]-----+
[root@jenkins target]# ssh-copy-id root@192.168.136.233
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.136.233 (192.168.136.233)' can't be established.
ECDSA key fingerprint is SHA256:z1v69UX9NnT1/ikGZRDxB+Yeqgwi2YRfOMJ1t5ZTHtU.
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.136.233's password: 

Number of key(s) added: 1

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

#jenkins服务器上将打包好的war包,传到tomcat服务器上
[root@jenkins ~]# scp /usr/src/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war 192.168.136.233:/usr/local/tomcat/webapps/
ly-simple-tomcat-0.0.1-SNAPSHOT.war                                        100%   17MB 217.8MB/s   00:00  
#tomcat服务器上查看
[root@tomcat ~]# cd /usr/local/tomcat/webapps/
[root@tomcat webapps]# ls
docs  examples  host-manager  ly-simple-tomcat-0.0.1-SNAPSHOT.war  manager  ROOT
#修改包的名字
[root@tomcat webapps]# mv ly-simple-tomcat-0.0.1-SNAPSHOT.war clq.war
#启动tomcat服务
[root@tomcat webapps]# /usr/local/tomcat/bin/catalina.sh start
#再次查看,项目包会自动解压
[root@tomcat webapps]# ls
clq  clq.war  docs  examples  host-manager  manager  ROOT

在这里插入图片描述

6.jenkins自动部署java项目
版本服务ip
centos8jenkins192.168.136.129
centos8tomcat192.168.136.233

配置jenkins中的tests项目
在这里插入图片描述
脚本修改为(公有仓库拉取进行部署)

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"

                // To run Maven on a Windows agent, use
                // bat "mvn -Dmaven.test.failure.ignore=true clean package"
            }

        }
    }
}

如果报Could not initialize class sun.nio.fs.LinuxNativeDispatcher错误
解决方法:重启jenkins服务,再次执行即可
在这里插入图片描述在这里插入图片描述
最终脚本修改

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                // 此处git拉取的是不用输入用户和邮箱的java代码块
                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/app.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.136.233 'tar -Jcf /opt/backup/app-\$(date +%Y%m%d).tar.xz /usr/local/tomcat/webapps/clq'"
                //传war包到目标服务器上
                sh "scp target/app.war root@192.168.136.233:/usr/local/tomcat/webapps/"
                //重启 tomcat
                sh "ssh root@192.168.136.233 '/usr/local/tomcat/bin/catalina.sh stop;sleep 3; /usr/local/tomcat/bin/catalina.sh start'"
            }
        }
    }
}

构建运行
在这里插入图片描述
在这里插入图片描述

以上是拉取的公开的仓库,如果是要拉取私有的仓库呢

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
最后复制生成的连接粘贴到脚本中的git这一行命令就完工了


7.jenkins脚本语法扩展

流水线脚本扩展

简单结构语法:
stages{
	stage(''){
		steps{
			commands
		}
	}
}

#常规命令的写法:
  sh "mvn -Dmaven.test.failure.ignore=true clean package"
  sh "mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/app.war"
#命令3点写法:
  sh '''
  	mvn -Dmaven.test.failure.ignore=true clean package
  	mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/app.war
  '''

#环境变量的使用
environment{
	DISABLE_AUTH = 'true'
	DB_ENGINE = 'sqlite'
}
stages{
	stage('hello'){
	steps{
			echo DISABLE_AUTH
			echo DB_ENGINE
		}
	}
}


#清理和通知
#post部分会在pipeline结束的时候运行,所以可以添加通知去完成步骤清理
#deleteDir是固定写法,可以清理workspace目录下的文件
post{
	always{
	deleteDir()
	}
	success{
		echo '清理成功'
	}
	failure{
		echo '清理失败'
	}
}



#电子邮箱
post{
	failure{
		mail to: '主题',
			subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
			body: "XXX ${env.BUILD_URL}"
	}
}

#部署(重点)
#持续交付肯定会有3个阶段,构建,测试,部署,稳定的构建和测试阶段是任何部署的前提
pipeline{
	agent any
	stages{
		stage('Build'){
			steps{
				echo '命令1'
		}
	}
		stage('Test'){
			steps{
				echo '命令2'
		}
	}
		stage('Deploy') {
			steps{
				echo '命令3'
			}
		}	
	}
}

#input命令会等待你的确认命令
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神慕蔡蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值