This commit is contained in:
dxin
2025-10-17 22:11:23 +08:00
parent 7546bfe2d6
commit fb361c2854
5 changed files with 219 additions and 2 deletions

View File

@@ -0,0 +1,29 @@
pipeline {
agent any
stages {
stage('拉取镜像') {
steps {
// 登录镜像仓库
withCredentials([usernamePassword(credentialsId: 'dxin_img_hub_auth', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh '''
echo "$REGISTRY_PWD" | docker login ${REGISTRY} -u ${REGISTRY_USER} --password-stdin
'''
}
// 拉取镜像
sh "docker pull uswccr.ccs.tencentyun.com/lessietest/lessie-sourcing-agents:${IMAGE_TAG}"
}
}
stage('展示镜像Label信息') {
steps {
sh "docker inspect --format='{{json .Config.Labels}}' uswccr.ccs.tencentyun.com/lessie.s2/lessie-sourcing-agents:${IMAGE_TAG}"
}
}
stage('部署镜像') {
steps {
// 这里可以添加具体的部署逻辑例如使用docker-compose或kubectl进行部署
echo "这是部署步骤"
}
}
}
}

View File

@@ -0,0 +1,119 @@
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}"
}
}
}

View File

@@ -0,0 +1,33 @@
# ===== 阶段 1: 构建 jar =====
FROM maven:3.5.3-jdk-21 AS builder
# 设置工作目录
WORKDIR /app
# 复制 Maven 配置文件和源码
COPY pom.xml .
COPY src ./src
# 使用 Maven 构建 jar
RUN mvn clean package -DskipTests
# ===== 阶段 2: 运行 jar =====
FROM eclipse-temurin:21-jdk
# 设置工作目录
WORKDIR /app
# 创建日志目录
RUN mkdir -p /app/logs
# 从构建阶段复制 jar 文件
COPY --from=builder /app/target/*.jar app.jar
# 容器启动后运行 Java 应用
# 注意:日志写入 ./logs/,可通过卷映射到宿主机
ENTRYPOINT ["java", "-jar", "app.jar"]
# 暴露服务端口(按你的应用配置修改)
EXPOSE 8080

View File

@@ -1,5 +1,5 @@
# 构建Docker镜像 -t 标志用于指定镜像名称和标签 | . 表示当前目录作为构建上下文(即 Dockerfile 和代码所在目录)
docker build -t uswccr.ccs.tencentyun.com/lessie/lessie-sourcing-agents:v0.1 .
docker build -t uswccr.ccs.tencentyun.com/lessie/lessie-sourcing-agents:v0.0.1 .
# 查看镜像
@@ -20,4 +20,7 @@ docker login uswccr.ccs.tencentyun.com -u 100038894437 回车后输出
docker tag lessie/python:3.12.9-base uswccr.ccs.tencentyun.com/lessie/python:3.12.9-base
# 推送
docker push uswccr.ccs.tencentyun.com/lessie/python:3.12.9-base
docker push uswccr.ccs.tencentyun.com/lessie/python:3.12.9-base
docker tag uswccr.ccs.tencentyun.com/lessie.s2/lessie-sourcing-agents:20251017-172349-1626a720 uswccr.ccs.tencentyun.com/lessietest/lessie-sourcing-agents:20251017-172349-1626a720

View File

@@ -0,0 +1,33 @@
### 腾讯云个人版镜像仓库
仓库地址uswccr.ccs.tencentyun.com
用户名100038894437
密码h8H1o6Fd!HLXn
### 命名空间
<!-- 通用的工具基础镜像 -->
通用的
common/base-jdk (基础 JDK 镜像,如 common/base-jdk:17-slim
common/base-python
common/base-go
业务的
lessie-agent/dev
lessie-agent/test
lessie-agent/prod
go-api/dev
go-api/test
go-api/prod
java-agent/dev
java-agent/test
java-agent/prod
lessie-web/dev
lessie-web/test
lessie-web/prod
lessie-official/dev
lessie-official/test
lessie-official/prod