From fb361c2854600d53bb46206a40197fee1e824290 Mon Sep 17 00:00:00 2001 From: dxin Date: Fri, 17 Oct 2025 22:11:23 +0800 Subject: [PATCH] +1 --- jenkins/构建镜像配置/docker.conf | 29 +++++ .../python_s2_lessie_sourcing_agents.conf | 119 ++++++++++++++++++ 容器化相关文件/java的/Dockerfile | 33 +++++ 容器化相关文件/手动测试实验/相关命令.bash | 7 +- 容器化相关文件/说明文档等/1、容器镜像仓库.md | 33 +++++ 5 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 jenkins/构建镜像配置/docker.conf create mode 100644 jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf create mode 100644 容器化相关文件/java的/Dockerfile create mode 100644 容器化相关文件/说明文档等/1、容器镜像仓库.md diff --git a/jenkins/构建镜像配置/docker.conf b/jenkins/构建镜像配置/docker.conf new file mode 100644 index 0000000..e1c4719 --- /dev/null +++ b/jenkins/构建镜像配置/docker.conf @@ -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 "这是部署步骤" + } + } + } +} \ No newline at end of file diff --git a/jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf b/jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf new file mode 100644 index 0000000..e14bc42 --- /dev/null +++ b/jenkins/构建镜像配置/python_s2_lessie_sourcing_agents.conf @@ -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})" + } + } +} diff --git a/容器化相关文件/java的/Dockerfile b/容器化相关文件/java的/Dockerfile new file mode 100644 index 0000000..fdec8bd --- /dev/null +++ b/容器化相关文件/java的/Dockerfile @@ -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 + diff --git a/容器化相关文件/手动测试实验/相关命令.bash b/容器化相关文件/手动测试实验/相关命令.bash index 973d178..968bc5d 100644 --- a/容器化相关文件/手动测试实验/相关命令.bash +++ b/容器化相关文件/手动测试实验/相关命令.bash @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/容器化相关文件/说明文档等/1、容器镜像仓库.md b/容器化相关文件/说明文档等/1、容器镜像仓库.md new file mode 100644 index 0000000..e9f46cf --- /dev/null +++ b/容器化相关文件/说明文档等/1、容器镜像仓库.md @@ -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 \ No newline at end of file