2026-04-24 21:50:28 +08:00

128 lines
5.5 KiB
Plaintext

pipeline {
agent any
options {
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '2', numToKeepStr: '2'))
}
stages {
stage('Setup Parameters & ENV') {
steps {
configFileProvider([configFile(fileId: 'xiaomayi-cloud-nacos', 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}"
GOMOD_SET = branchConfig.GOMOD_SET
registry = branchConfig.registry
registryCredential = branchConfig.registryCredential
namespace = branchConfig.namespace
jenkinsAgent = branchConfig.jenkinsAgent
echo "jobName: ${jobName}"
echo "The Maven Set XML for the ${env.BRANCH_NAME} branch is: ${GOMOD_SET}"
projectName = serviceConfig.projectName
packageName = serviceConfig.packageName
serverHost01= serviceConfig.serverHost01
servicePath = serviceConfig.servicePath
filePath = "${servicePath}"
echo "projectName: ${projectName}"
echo "packageName: ${packageName}"
echo "serverHost01: ${serverHost01}"
if ("${env.BRANCH_NAME}" == "dev") {
serverIP01 = branchConfig."${serverHost01}"
echo "dev serverIP01: ${serverIP01}"
properties([
parameters([
string(
defaultValue: 'dev',
description: '编译参数',
name: 'PROFILES',
trim: true
)
])
])
} else if ("${env.BRANCH_NAME}" == "test"){
serverIP01 = branchConfig."${serverHost01}"
echo "test 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 "prod 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 {
label {
label jenkinsAgent
}
}
steps {
sh """
node -v
cd ${filePath}
yarn install
yarn run build:${PROFILES}
"""
}
}
stage("Deploy") {
options {
skipDefaultCheckout()
}
when {
expression {
return params.PROFILES != "uat"
}
}
agent {
label {
label jenkinsAgent
}
}
steps {
script {
sh 'echo "#### MD5 HASH ####"'
sh "cd ${filePath}; ls -lsh; rm -rf ${projectName} ${packageName}; mv dist ${projectName} && tar zcf ${packageName} ${projectName}; md5sum ${packageName}"
sh 'echo "#### scp and restart ####"'
sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/xiaomayi-nacos-elevue; rm -rf ${projectName}; rm -f ${packageName}'"
sh "cd ${filePath}; scp ${packageName} ${serverIP01}:/usr/local/docker/nginx/html/xiaomayi-nacos-elevue/${packageName}"
sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/xiaomayi-nacos-elevue; tar zxf ${packageName}; ls -l'"
}
}
}
}
}