签入版本
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
pipeline {
|
||||
agent any
|
||||
options {
|
||||
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '2', numToKeepStr: '2'))
|
||||
}
|
||||
stages {
|
||||
stage('Setup Parameters & ENV') {
|
||||
steps {
|
||||
configFileProvider([configFile(fileId: 'xiaomayi-web', variable: 'settingsFile')]) {
|
||||
script {
|
||||
def config = readJSON file:"$settingsFile"
|
||||
def jobNameStr = JOB_NAME.tokenize('/') as String[]
|
||||
def jobName = jobNameStr[0]
|
||||
def branchConfig = config."branchConfig"."${env.BRANCH_NAME}"
|
||||
def serviceConfig = config."serviceConfig"."${jobName}"
|
||||
|
||||
MAVEN_SET = branchConfig.MAVEN_SET
|
||||
registry = branchConfig.registry
|
||||
registryCredential = branchConfig.registryCredential
|
||||
namespace = branchConfig.namespace
|
||||
jenkinsAgent = branchConfig.jenkinsAgent
|
||||
serverPort = branchConfig.serverPort
|
||||
|
||||
echo "jobName: ${jobName}"
|
||||
echo "The Maven Set XML for the ${env.BRANCH_NAME} branch is: ${MAVEN_SET}"
|
||||
|
||||
projectName = serviceConfig.containerName
|
||||
servicePath = serviceConfig.servicePath
|
||||
jarPackageName = serviceConfig.jarPackageName
|
||||
baseImage = "${registry}/xiaomayi-base/jdk:17.0.16-rocky8-dos"
|
||||
port = serviceConfig."port"
|
||||
jarFile = "${jarPackageName}"
|
||||
jarFilePath = "${servicePath}/target"
|
||||
|
||||
serverHost01= serviceConfig.serverHost01
|
||||
|
||||
echo "jarFile: ${jarFile}"
|
||||
echo "jarFilePath: ${jarFilePath}"
|
||||
echo "serverHost01: ${serverHost01}"
|
||||
echo "serverPort:${serverPort}"
|
||||
|
||||
if ("${env.BRANCH_NAME}" == "dev") {
|
||||
serverIP01 = branchConfig."${serverHost01}"
|
||||
echo "serverIP01: ${serverIP01}"
|
||||
properties([
|
||||
parameters([
|
||||
string(
|
||||
defaultValue: 'dev',
|
||||
description: '编译参数',
|
||||
name: 'PROFILES',
|
||||
trim: true
|
||||
)
|
||||
])
|
||||
])
|
||||
} else if ("${env.BRANCH_NAME}" == "test"){
|
||||
serverIP01 = branchConfig."${serverHost01}"
|
||||
echo "serverIP01: ${serverIP01}"
|
||||
properties([
|
||||
parameters([
|
||||
string(
|
||||
defaultValue: 'test',
|
||||
description: '编译参数',
|
||||
name: 'PROFILES',
|
||||
trim: true
|
||||
)
|
||||
])
|
||||
])
|
||||
} else if ("${env.BRANCH_NAME}" == "master") {
|
||||
properties([
|
||||
parameters([
|
||||
string(
|
||||
defaultValue: 'prod',
|
||||
description: '编译参数',
|
||||
name: 'PROFILES',
|
||||
trim: true
|
||||
)
|
||||
])
|
||||
])
|
||||
serverIP01 = branchConfig."${serverHost01}"
|
||||
echo "serverIP01: ${serverIP01}"
|
||||
} else {
|
||||
error("Build failed because failed to fetch settings for branch")
|
||||
}
|
||||
echo "The serverIP for the branch: ${env.BRANCH_NAME}, profile: ${PROFILES} is: ${serverIP01}"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
stage('Build') {
|
||||
agent {
|
||||
// docker {
|
||||
// image "maven:3.8.6-openjdk-8"
|
||||
// args '-v /etc/hosts:/etc/hosts:ro'
|
||||
// label jenkinsAgent
|
||||
// }
|
||||
label {
|
||||
label jenkinsAgent
|
||||
}
|
||||
}
|
||||
steps {
|
||||
configFileProvider([configFile(fileId: MAVEN_SET, variable: 'MAVEN_SETTINGS_XML')]) {
|
||||
sh "/usr/local/maven/bin/mvn --settings ${MAVEN_SETTINGS_XML} dependency:purge-local-repository -Dinclude=com.xiaomayi -fpom.xml clean package -P${PROFILES} -Dmaven.test.skip=true"
|
||||
sh "ls -lsh ${jarFilePath}/${jarFile}"
|
||||
sh "md5sum ${jarFilePath}/${jarFile}"
|
||||
// echo "MD5 ${jarFile}: `md5sum ${jarFilePath}/${jarFile}`"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
stage('Container Build') {
|
||||
options {
|
||||
skipDefaultCheckout()
|
||||
}
|
||||
agent {
|
||||
label {
|
||||
label jenkinsAgent
|
||||
}
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
echo "VAR_BASE_IMAGE: ${baseImage}"
|
||||
echo "VAR_PORT: ${port}"
|
||||
echo "VAR_JARFILE: ${jarFile}"
|
||||
echo "VAR_JARFILE_PATH: ${jarFilePath}"
|
||||
|
||||
docker.withRegistry("https://"+registry, registryCredential) {
|
||||
dockerImage = docker.build("${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}", "--build-arg VAR_PROFILES=${PROFILES} --build-arg VAR_BASE_IMAGE=${baseImage} --build-arg VAR_PORT=${port} --build-arg VAR_JARFILE=${jarFile} --build-arg VAR_JARFILE_PATH=${jarFilePath} -f .jenkinsfile/Dockerfile ./")
|
||||
dockerImage.push()
|
||||
// dockerImage.push('latest')
|
||||
}
|
||||
sh "docker rmi -f ${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}"
|
||||
sh "docker rmi -f ${registry}/${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}"
|
||||
}
|
||||
// cleanWs()
|
||||
}
|
||||
|
||||
}
|
||||
stage("Deploy") {
|
||||
options {
|
||||
skipDefaultCheckout()
|
||||
}
|
||||
agent {
|
||||
label {
|
||||
label jenkinsAgent
|
||||
}
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
sh "ssh -o StrictHostKeyChecking=no esxi@${serverIP01} -p ${serverPort} 'cd /usr/local/docker/xiaomayi-web/; ./deploy.sh deploy ${projectName} ${PROFILES}-${env.BUILD_ID}'"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user