Files
Work-configuration-file/jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf
dxin 6e766fd4cc +
2025-10-15 18:01:30 +08:00

109 lines
4.4 KiB
Plaintext
Raw 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 = "lessie.s2" // 命名空间
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://172.24.16.20/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:%cd --date=format:"%Y%m%d-%H%M%S"',
returnStdout: true
).trim()
// 获取最近一次提交的备注信息(转义特殊字符,避免构建失败)
env.GIT_COMMIT_MSG = sh(
script: 'git log -1 --pretty=format:%s | sed "s/\"/\\\\\"/g"', // 转义双引号
returnStdout: true
).trim()
// 生成唯一 Tag时间戳 + 短哈希(确保唯一性)
env.IMAGE_TAG = "${GIT_COMMIT_TIME}-${GIT_COMMIT_SHORT}"
}
}
}
stage('构建容器镜像') {
steps {
script {
// 构建镜像,修复 NAMESPACE 变量引用,添加标签信息
sh """
docker build -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG} \
--label "git-commit=${GIT_COMMIT_SHORT}" \
--label "git-author=${GIT_AUTHOR}" \
--label "git-message=${GIT_COMMIT_MSG}" \
--label "build-time=${GIT_COMMIT_TIME}" \
. # Dockerfile 所在目录(当前目录)
"""
}
}
}
stage('推送镜像到仓库') {
steps {
script {
// 登录容器仓库
withCredentials([usernamePassword(
credentialsId: env.CREDENTIALS_ID,
usernameVariable: 'REGISTRY_USER',
passwordVariable: 'REGISTRY_PWD'
)]) {
sh "docker login ${REGISTRY} -u ${REGISTRY_USER} -p ${REGISTRY_PWD}"
}
// 推送主镜像(带唯一 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 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}"
}
}
}