前言
需要先安装好jenkins,配置好工作空间,然后本人是将jenkins部署到一个tomcat服务器上。
启动时执行sh脚本,脚本通过java运行war包
nohup /usr/lib/jvm/java-11/bin/java -Xms1024m -Xmx2048m -jar 你的jenkins的war目录/jenkins.war > ./logs/jenkins.log 2>&1 &
echo start jenkins
直接执行./自定义sh.sh即可
需要安装插件,这里可能包含了一些不必要的插件,但是一定全,插件列表放在最后
我们的思路是在git中拉取项目到jenkins的工作空间,然后根据脚本将项目部署。
一、后端java项目
java项目使用的是springboot技术,思路是使用springboot自带的tomcat打包成一个可执行的jar包,然后将这个jar包覆盖原来的旧jar包,最后运行脚本重启服务。
前置准备是需要修改pom文件,实现输入maven命令将java项目部署成一个完整的jar包,可以参考这篇文章 请查看第二点和第三点即可
首先登录jenkins,点击左上角的新建item
先输入任务名,选中pipeline,然后点击确定
点击确定后接着输入描述
输入完描述后,先不要保存,此时是重头戏,需要复制部署用的脚本,滚动条拉到最下面,将流水线里复制以下脚本
pipeline {
agent any
environment {
def model = "ipas-server"
def DATE = sh(script: 'date +%Y%m%d_%H%M%S', returnStdout:true)
def JAR_NAME= "ipas.jar" // 打出来的jar包名字
def BASEPATH = "/opt/AppData"
def JOB_NAME = "ipas"
// jenkins的工作空间,项目从git拉取后会放在此处
def workspace='/opt/jenkins-server/workspace/ipas-new'
def project='ipas'
}
stages {
stage('拉取代码') {
steps {
// 从git仓库中拉取代码
// get branch是git分支,
// credentialsId可查看下面的Jenkins 添加配置Git账号密码凭据
// url是git的项目地址
git branch: 'dev-cll2', credentialsId: '你的credentialsId', url: 'http://你的git地址/ipas-new.git'
}
}
stage('打包') {
steps {
// 此处使用运行项目根目录下的pom-test.xml的方式
sh "cd $workspace && mvn clean package -f pom-test.xml"
}
}
stage('移动项目') {
steps {
// 将jenkins工作空间中打包的jar包移动到要部署的文件夹中
sh '''mv /opt/jenkins-server/workspace/ipas-new/servers/servers-admin/target/servers-admin.jar /opt/AppData/ipas-new-server/admin/servers-ipas-admin.jar'''
}
}
stage('运行') {
steps {
// 运行关闭脚本,然后运行启动脚本重启
sh '''cd /opt/AppData/ipas-new-server/admin
./shutdown.sh servers-ipas-admin
./start.sh servers-ipas-admin'''
}
}
}
}
最后一步的shutdown.sh和start.sh是根据以上前置准备进行配置的
然后点击保存,回到首页,找到右边的开始按钮,点击
如果运行成功,左边会显示绿色勾勾,否则,会显示红色的叉叉。
这里假设我们的项目部署失败了,我们需要查看日志
点击项目名
鼠标移动到报错的地方,然后点击logs
可以看到此处git代码拉取没有成功,是由于验证没有通过
此处看到是因为这个credentialsId没有验证通过,这玩意是用来对应你的git账号和密码的。设置可以查看这篇文章 Jenkins 添加配置Git账号密码凭据 配置成功后复制此处的即可
设置完后重新修改脚本中拉取部分的credentialsId,重新按启动按钮即可
前端项目部署
同样重复上述步骤,只不过脚本变了而已。
部署思路是从git中拉取vue的项目,然后运行npm的打包命令,将项目打包到jenkins工作空间下之后再复制替换到要部署的文件夹里
此处由于项目中需要安装npm,有两种思路,一种就是每次都安装,此时新建item的时候需要以下这段设置
脚本如下
pipeline {
agent any
environment {
def DATE = sh(script: 'date +%Y%m%d_%H%M%S', returnStdout:true)
// jenkins的工作空间,项目从git拉取后会放在此处
def workspace='/opt/jenkins-server/workspace/ipas-bms'
}
stages {
stage('拉取代码') {
steps {
// 从git仓库中拉取代码
// get branch是git分支,
// credentialsId可查看下面的Jenkins 添加配置Git账号密码凭据
// url是git的项目地址
git branch: 'release-test', credentialsId: '你的git账号密码生成的credentialsId', url: 'http://项目的git地址/IPAS.git'
}
}
stage('打包后台') {
steps {
script {
if(npminstall=="false"){
// 运行npm打包前端项目命令
sh "cd $workspace/ipas-clients && npm run build"
}
else{
sh "cd $workspace/ipas-clients && npm install && npm run build"
}
}
}
}
stage('移动项目') {
steps {
// 将工作空间中打包的vue项目移动到要部署的文件夹里
sh '''\\cp -rf /opt/jenkins-server/workspace/ipas-bms/ipas-clients/dist/* /opt/AppData/ipas-client'''
}
}
}
}
第二种就是仅仅执行一次npm install,不会每次部署都执行。
此时只需要进入jenkins工作空间里执行npm install即可
然后把打包脚本修改下,修改成不需要npm install。只需打包
// 修改后,只需要执行npm run build打包即可不再执行安装
// if(npminstall=="false"){
// 运行npm打包前端项目命令
sh "cd $workspace/ipas-clients && npm run build"
// }
// else{
// sh "cd $workspace/ipas-clients && npm install && npm run build"
//}
完成后点击启动按钮即可
查看日志
有时候会有一些莫名奇妙的原因没有报错,但实际上是有错的,此时需要看日志
点击红框处,两个都可以,然后点击最左边的console output,即可看到日志
插件列表