记录一下初次部署成功的经验
jenkins的介绍和安装、以及插件配置我就不说了,很多文章都说了。我只记录一下亲测有效的部署操作。
假设你的jenkins中,maven、git、jdk都已经配置好:
项目目录是这样色儿的:
helloworld
|--src
|--main
|--java
|--resource
|--target
-
新建一个pipeline项目
-
新建后什么都不用管,直接翻到构建触发器,会有一些构建脚本demo给你使用,选择Github + Maven( 脚本是在git项目根目录,即前述helloworld,下执行)
pipeline {
agent any
tools {
// Install the Maven version configured as "M3" and add it to the path.
maven "M3"
}
stages {
stage('Build') {
steps {
// Get some code from a GitHub repository
git 'https://github.com/jglick/simple-maven-project-with-tests.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"
}
post {
// If Maven was able to run the tests, even if some of the test
// failed, record the test results and archive the jar file.
success {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
}
}
}
上面是默认脚本,依葫芦画瓢,做些定制化改动。
下面这个我最后使用的脚本:
pipeline {
agent any
tools {
//前述配置mavne的时候配置的maven名称
maven "maven"
}
stages {
stage('Build') {
steps {
//如果是私有仓库,需要提供凭证(账号密码),参见文末凭证配置
git branch: 'master', credentialsId: 'gitlab', url: '项目git地址'
sh "mvn -Dmaven.test.failure.ignore=true clean package"
//复制jar到jenkins外的目录(这一步可凭自己喜好选择做与不做,只是将jar放哪儿的问题,如果目录不存在,则先创建为妙)
sh "cp target/xxx.jar /home/piao/jenkins/workspace/helloworld/"
// Windows
// bat "mvn -Dmaven.test.failure.ignore=true clean package"
}
//运行JAR包
stage('Run') {
steps {
//sh "if (ps -ef| grep java|grep ${project_name})then (ps -ef| grep java|grep ${project_name}| awk '{print \$2}'|xargs kill -9) fi"
//withEnv能解决部署success后,进程直接消失,即拉取代码、项目编译、项目启动都成功,可应用就是起不来的问题。感兴趣的可以先去掉withEvn函数,直接使用里面的指令
withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
sh """
/home/piao/jenkins/workspace/helloworld/startHelloworld.sh
"""
}
}
}
}
}
startHelloworld.sh
#!/bin/bash
workspace=/usr/xxx/jenkins/workspace/
#pid=$(lsof -i :80 -t)
pid=`ps -ef|grep helloworld.jar|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ]; then
echo "Stopping existed process : "$pid
kill -TERM $pid
kill -KILL $pid
fi
#export BUILD_ID=dontKillMe
curtime=`date +"%Y%m%d%H%M%S"`
echo $curtime" Starting helloworld..."
nohup java -Xms64m -Xmx256m -jar $workspace/helloworld/helloworld.jar --spring.profiles.active=test >> $workspace/helloworld/helloworld.log &
配置完成后,点击立刻构建-构建计划,任务就开始了。可以点击构建计划查看日志
凭证配置:
为什么要配置凭证?其实如果你没有配置git凭证的话,jenkins也会在控制台问你要密码,可是——且不说我们搞自动化部署,不可能手动去输什么指令——就算你愿意动手,你输入,它还要你输,你一直输,它还一直要你输。。。。。。乜屎啦你
还有可能遇到的坑:
第一次从一个仓库拉取数据的时候,jenkins可能会在控制台问你是否接受指纹,呵呵
如果你碰到了,手动先git clone一次,问题不大