Files
Work-configuration-file/jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf
dxin fb361c2854 +1
2025-10-17 22:11:23 +08:00

120 lines
4.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pipeline {
agent any
environment {
REGISTRY = "uswccr.ccs.tencentyun.com" // 镜像仓库地址
NAMESPACE = "lessietest" // 命名空间
IMAGE_NAME = "lessie-sourcing-agents" // 镜像名(固定前缀)
CREDENTIALS_ID = "dxin_img_hub_auth" // 容器仓库凭证ID
}
stages {
stage('拉取代码') {
steps {
// 拉取指定分支代码(通过参数 params.Code_branch 动态指定)
git branch: "${params.Code_branch}",
credentialsId: 'fly_gitlab_auth',
url: 'http://106.53.194.199/python/lessie-sourcing-agents.git'
}
}
stage('获取提交信息') {
steps {
script {
// 获取最近一次提交的哈希值短格式前8位
env.GIT_COMMIT_SHORT = sh(
script: 'git rev-parse --short HEAD',
returnStdout: true
).trim()
// 获取最近一次提交的作者
env.GIT_AUTHOR = sh(
script: 'git log -1 --pretty=format:%an',
returnStdout: true
).trim()
// 获取最近一次提交的时间(格式化)
env.GIT_COMMIT_TIME = sh(
script: 'git log -1 --pretty=format:%ct | xargs -I {} date -d @{} +%Y%m%d-%H%M%S',
returnStdout: true
).trim()
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
env.GIT_COMMIT_MSG = sh(
script: 'git log -1 --pretty=format:%s', // 转义双引号
returnStdout: true
).trim()
// 生成唯一 Tag时间戳 + 短哈希(确保唯一性)
env.IMAGE_TAG = "${GIT_COMMIT_TIME}-${GIT_COMMIT_SHORT}"
}
}
}
stage('登录容器仓库') {
steps {
withCredentials([usernamePassword(
credentialsId: env.CREDENTIALS_ID,
usernameVariable: 'REGISTRY_USER',
passwordVariable: 'REGISTRY_PWD'
)]) {
sh '''
echo "$REGISTRY_PWD" | docker login ${REGISTRY} -u ${REGISTRY_USER} --password-stdin
'''
}
}
}
stage('构建容器镜像') {
steps {
script {
// 构建镜像,添加标签信息
sh """
docker build -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
--label "git-branch='${params.Code_branch}'" \
--label "git-commit='${GIT_COMMIT_SHORT}'" \
--label "git-author='${GIT_AUTHOR}'" \
--label "git-message='${GIT_COMMIT_MSG}'" \
--label "build-time='${GIT_COMMIT_TIME}'" \
.
"""
}
}
}
stage('推送镜像到仓库') {
steps {
script {
// 推送主镜像(带唯一 Tag
sh "docker push ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG}"
// 推送 latest 标签(修正路径,包含命名空间)
sh "docker tag ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:latest"
sh "docker push ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:latest"
// 登出仓库
sh "docker logout ${REGISTRY}"
}
}
}
}
post {
always {
// 无论成败都登出,清理凭证
sh "docker logout ${REGISTRY}"
echo "容器仓库已登出,本地凭证已清理"
// 清理工作(可选,避免节点磁盘占用过高)
//sh "docker system prune -f"
}
success {
// 输出构建结果
echo "镜像构建成功!"
echo "镜像地址:${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG}"
echo "latest 标签地址:${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:latest"
echo "对应代码提交:${GIT_COMMIT_SHORT}${GIT_COMMIT_MSG}"
}
}
}