- 項目摘要:
本文基於文檔https://blog.csdn.net/qq_25337221/article/details/106160024和
https://blog.csdn.net/qq_25337221/article/details/106185232編寫。
主要是在之前的基礎上添加prometheus-service項目。本實例仍然是入門項目。
- 項目具體實施:
- 自由風格方式
- 修改build前shell
echo "Stopping SpringBoot Application"
pids=$(ps -ef | grep 0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
if [ -n "$pids" ]; then
echo $pids
for pid in $pids; do
echo $pid
kill -9 $pid
done
fi
2. 修改build後shell
#!/bin/bash -ile
userServiceProject=user-service-0.0.1-SNAPSHOT.jar
prometheusServiceProject=prometheus-service-0.0.1-SNAPSHOT.jar
userServicePath=springboot-demo-freestyle/user-service
prometheusServicePath=springboot-demo-freestyle/prometheus-service
echo "拷貝文件"
rm -rf /usr/local/src/java/*
cp /var/lib/jenkins/workspace/$userServicePath/target/$userServiceProject /usr/local/src/java/
cp /var/lib/jenkins/workspace/$prometheusServicePath/target/$prometheusServiceProject /usr/local/src/java/
echo "切換路徑"
cd /usr/local/src/java/
BUILD_ID=dontKillMe
echo "執行"
nohup java -jar $userServiceProject &
nohup java -jar $prometheusServiceProject &
echo "啓動成功!"
2.pipline方式
- Pipline腳本
pipeline{
agent any
tools {
maven 'maven3.6.3'
jdk 'jdk1.8'
}
environment{
TASK_NAME="springboot-demo-pipline"
ROOT_PROJECT_PATH="user-system"
USER_SERVICE_PROJECT="user-service-0.0.1-SNAPSHOT.jar"
USER_SERVICE_PROJECT_NAME="user-service"
PROMETHEUS_SERVICE_PROJECT="prometheus-service-0.0.1-SNAPSHOT.jar"
PROMETHEUS_SERVICE_PROJECT_NAME="prometheus-service"
}
options{
buildDiscarder(logRotator(numToKeepStr: '10'))
timestamps()
}
triggers{
pollSCM('H/1 * * * *')
}
stages{
stage('Preparation'){
steps{
echo 'pulling code'
/*git code*/
}
}
stage('Build'){
steps{
script{
echo 'Stopping SpringBoot Application'
sh "ps -ef | grep 0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print \$2}' | xargs -i kill -9 {}"
echo 'starting build'
sh 'mvn -f $ROOT_PROJECT_PATH clean install -Dmaven.test.skip=true'
echo 'deleteing old project'
sh 'rm -rf /usr/local/src/java/*'
echo 'copy new project'
sh 'cp /var/lib/jenkins/workspace/$TASK_NAME/$USER_SERVICE_PROJECT_NAME/target/$USER_SERVICE_PROJECT /usr/local/src/java/'
sh 'cp /var/lib/jenkins/workspace/$TASK_NAME/$PROMETHEUS_SERVICE_PROJECT_NAME/target/$PROMETHEUS_SERVICE_PROJECT /usr/local/src/java/'
echo "starting project"
sh 'JENKINS_NODE_COOKIE=dontKillMe nohup java -jar /usr/local/src/java/$USER_SERVICE_PROJECT >log.txt 2>&1 &'
sh 'JENKINS_NODE_COOKIE=dontKillMe nohup java -jar /usr/local/src/java/$PROMETHEUS_SERVICE_PROJECT >log.txt 2>&1 &'
echo "startup success!"
}
}
}
}
post {
success {
emailext (
subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
to: "[email protected],[email protected]",
from: "[email protected]"
)
slackSend channel: "#test-jenkins", message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
}
failure {
emailext (
subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
to: "[email protected],[email protected]",
from: "[email protected]"
)
slackSend channel: "#test-jenkins", message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
}
}
}
- 參考鏈接:
本內容由安康學院“雨季”原創。