BZPT.JKFZJC_FrontEnd/Jenkinsfile

97 lines
3.9 KiB
Plaintext
Raw Normal View History

2025-07-07 14:14:38 +08:00
// Jenkinsfile for Project A
pipeline {
agent any
parameters {
// <20><>Ŀ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
string(name: 'GIT_REPO_URL', defaultValue: 'https://your-git-server.com/project-a.git', description: 'Git<69>ֿ<EFBFBD>URL')
string(name: 'GIT_BRANCH', defaultValue: 'main', description: 'Ҫ<><D2AA>ȡ<EFBFBD><C8A1>Git<69><74>֧')
credentials(name: 'GIT_CREDENTIALS_ID', defaultValue: 'your-git-credentials-id', description: 'Gitƾ֤ID', required: false)
string(name: 'BUILD_COMMAND', defaultValue: 'mvn clean package -DskipTests', description: '<27><>ĿA<C4BF><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') // project-a <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string(name: 'DOCKER_REGISTRY_URL', defaultValue: 'your-docker-registry.com', description: 'Docker<65><72><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>URL')
string(name: 'DOCKER_IMAGE_NAME', defaultValue: 'project-a-app', description: 'Docker<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') // project-a <20>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD>
string(name: 'IMAGE_BASE_TAG', defaultValue: '1.0', description: '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ')
credentials(name: 'DOCKER_CREDENTIALS_ID', defaultValue: 'your-docker-registry-credentials-id', description: 'Docker<65><72><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>ƾ֤ID', required: true)
booleanParam(name: 'PUSH_LATEST_TAG', defaultValue: true, description: '<27>Ƿ<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD> latest <20><>ǩ?')
}
environment {
FULL_IMAGE_NAME = "${params.DOCKER_REGISTRY_URL}/${params.DOCKER_IMAGE_NAME}"
IMAGE_TAG = "" // <20><><EFBFBD><EFBFBD> Checkout <20><><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
}
// tools { ... } // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ
stages {
stage('1. Checkout Code') {
steps {
echo "<22><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ${params.GIT_REPO_URL}, <20><>֧: ${params.GIT_BRANCH}"
cleanWs()
checkout([
$class: 'GitSCM',
branches: [[name: params.GIT_BRANCH]],
userRemoteConfigs: [[
url: params.GIT_REPO_URL,
credentialsId: params.GIT_CREDENTIALS_ID
]],
extensions: [
[$class: 'CloneOption', shallow: true, noTags: true, depth: 1, timeout: 20],
[$class: 'PruneStaleBranch']
]
])
script {
def shortCommit = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
env.IMAGE_TAG = "${params.IMAGE_BASE_TAG}-${BUILD_NUMBER}-${shortCommit}"
echo "<22><><EFBFBD>ɵľ<C9B5><C4BE><EFBFBD>TAG: ${env.IMAGE_TAG}"
}
}
}
stage('2. Build and Package Application') {
steps {
echo "<22><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>: ${params.BUILD_COMMAND}"
sh "${params.BUILD_COMMAND}"
echo "Ӧ<>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
}
}
stage('3. Build Docker Image') {
steps {
echo "<22><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Docker<65><72><EFBFBD><EFBFBD>: ${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
script {
docker.build("${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG}", "-f Dockerfile .") // <20><><EFBFBD><EFBFBD> Dockerfile <20>ڸ<EFBFBD>Ŀ¼
}
echo "Docker<65><72><EFBFBD>񹹽<EFBFBD><F1B9B9BD><EFBFBD><EFBFBD><EFBFBD>: ${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG}"
}
}
stage('4. Push Docker Image') {
steps {
echo "<22><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Docker<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ${params.DOCKER_REGISTRY_URL}"
script {
docker.withRegistry(params.DOCKER_REGISTRY_URL, params.DOCKER_CREDENTIALS_ID) {
docker.image("${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG}").push()
echo "<22><><EFBFBD><EFBFBD> ${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG} <20><><EFBFBD>ͳɹ<CDB3>."
if (params.PUSH_LATEST_TAG) {
docker.image("${env.FULL_IMAGE_NAME}:${env.IMAGE_TAG}").push('latest')
echo "<22><><EFBFBD><EFBFBD> ${env.FULL_IMAGE_NAME}:latest <20><><EFBFBD>ͳɹ<CDB3>."
}
}
}
}
}
}
post {
always {
echo 'Pipeline <20><><EFBFBD><EFBFBD>.'
cleanWs()
}
// success { ... }
// failure { ... }
}
}