上次使用了脚本来进行项目构建和发布;
这次使用Jenkins来干同样一件事。
直接上代码,具体含义请查询相关文档:
try {
node {
stage('Environment') {
env.JAVA_HOME="${tool 'Java'}"
env.PATH="${env.PATH}:${JAVA_HOME}/bin:${tool 'Gradle'}/bin"
echo "PATH=${PATH}"
echo "USER_HOME=${USER_HOME}"
}
stage('Source') {
git branch: 'master', credentialsId: '9e133113-0dda-4072-8d4a-2477e5fc9bf1', url: 'https://github.com/ohmmx/testproject.git'
}
stage('Build') {
sh "gradle :prj-tomcat:war :prj-springboot:bootJar"
sh "cp -f ${JENKINS_HOME}/workspace/jenkins-project/prj-tomcat/build/libs/prj-tomcat.war ${USER_HOME}/deploy/tomcat/webapps/ROOT.war"
sh "cp -f ${JENKINS_HOME}/workspace/jenkins-project/prj-springboot/build/libs/prj-springboot.jar ${USER_HOME}/deploy/prj-springboot.jar"
}
}
} catch (err) {
currentBuild.result = "FAILURE"
echo err
} finally {
node {
stage('Stop') {
sh "fuser -k 8080/tcp || true"
sh "fuser -k 9080/tcp || true"
}
stage('Start') {
parallel (
tomcat: {
echo "Ready to start prj-tomcat ......"
sh "JENKINS_NODE_COOKIE=dontKillMe ${USER_HOME}/deploy/tomcat/bin/startup.sh"
},
springboot: {
echo "Ready to start prj-springboot ......"
sh "JENKINS_NODE_COOKIE=dontKillMe nohup java -Dprofile=dev -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=29080 -Dserver.port=9080 -jar ${USER_HOME}/deploy/prj-springboot.jar &"
}
)
}
}
}
其中:
credentialsId 是在 Jenkins 里配置 Git 的用户名密码后,由 Jenkins 生成的用户ID。
JENKINS_HOME 路径默认为 /var/lib/jenkins/
jenkins-project 为 Jenkins 任务的名称(建议不要使用中文)