97 lines
3.9 KiB
Plaintext
97 lines
3.9 KiB
Plaintext
|
// 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 { ... }
|
|||
|
}
|
|||
|
}
|