修改报错

This commit is contained in:
wangtianqi 2025-06-25 14:20:36 +08:00
parent c68d63959c
commit ab99ae7641

60
Jenkinsfile vendored
View File

@ -101,8 +101,8 @@ pipeline {
else else
echo "⚠️ 直接挂载失败,使用容器复制方式" echo "⚠️ 直接挂载失败,使用容器复制方式"
# 创建临时容器并复制文件 # 创建临时容器并复制文件(设置正确的工作目录)
CONTAINER_ID=$(docker create golang:1.21-alpine sh -c " CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
echo '下载依赖...' echo '下载依赖...'
go mod download go mod download
@ -113,10 +113,10 @@ pipeline {
go mod tidy go mod tidy
") ")
# 复制所有文件到容器 # 复制所有文件到容器的/app目录
docker cp . $CONTAINER_ID:/app docker cp . $CONTAINER_ID:/app
# 设置工作目录并运行 # 启动容器执行Go命令
docker start -a $CONTAINER_ID docker start -a $CONTAINER_ID
# 复制结果文件回来 # 复制结果文件回来
@ -138,8 +138,8 @@ pipeline {
sh ''' sh '''
echo "使用Docker容器进行代码检查..." echo "使用Docker容器进行代码检查..."
# 使用简化的挂载方式 # 创建容器并设置工作目录
docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine sh -c " CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
echo '运行go vet...' echo '运行go vet...'
go vet ./... go vet ./...
@ -150,7 +150,16 @@ pipeline {
echo \$UNFORMATTED echo \$UNFORMATTED
exit 1 exit 1
fi fi
" ")
# 复制文件到容器
docker cp . $CONTAINER_ID:/app
# 执行代码检查
docker start -a $CONTAINER_ID
# 清理容器
docker rm $CONTAINER_ID
echo "✅ 代码检查通过" echo "✅ 代码检查通过"
''' '''
@ -162,7 +171,9 @@ pipeline {
echo '🧪 运行单元测试...' echo '🧪 运行单元测试...'
sh ''' sh '''
echo "使用Docker容器运行测试..." echo "使用Docker容器运行测试..."
docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine sh -c "
# 创建容器并设置工作目录
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
echo '运行测试并生成覆盖率报告...' echo '运行测试并生成覆盖率报告...'
go test -v -race -coverprofile=coverage.out -covermode=atomic ./... || echo '测试执行完成(可能有测试失败)' go test -v -race -coverprofile=coverage.out -covermode=atomic ./... || echo '测试执行完成(可能有测试失败)'
@ -174,7 +185,20 @@ pipeline {
else else
echo '⚠️ coverage.out文件不存在跳过覆盖率报告生成' echo '⚠️ coverage.out文件不存在跳过覆盖率报告生成'
fi fi
" ")
# 复制文件到容器
docker cp . $CONTAINER_ID:/app
# 执行测试
docker start -a $CONTAINER_ID
# 复制测试结果文件回来
docker cp $CONTAINER_ID:/app/coverage.out . || true
docker cp $CONTAINER_ID:/app/coverage.html . || true
# 清理容器
docker rm $CONTAINER_ID
''' '''
} }
post { post {
@ -239,7 +263,9 @@ EOF
echo '🔨 编译Go应用程序...' echo '🔨 编译Go应用程序...'
sh ''' sh '''
echo "使用Docker容器编译Go应用..." echo "使用Docker容器编译Go应用..."
docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine sh -c "
# 创建容器并设置工作目录
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
echo '开始编译...' echo '开始编译...'
CGO_ENABLED=0 GOOS=linux go build \\ CGO_ENABLED=0 GOOS=linux go build \\
-ldflags='-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}' \\ -ldflags='-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}' \\
@ -247,7 +273,19 @@ EOF
echo '设置二进制文件权限...' echo '设置二进制文件权限...'
chmod +x golang-demo chmod +x golang-demo
" ")
# 复制文件到容器
docker cp . $CONTAINER_ID:/app
# 执行编译
docker start -a $CONTAINER_ID
# 复制编译结果回来
docker cp $CONTAINER_ID:/app/golang-demo .
# 清理容器
docker rm $CONTAINER_ID
echo "验证二进制文件..." echo "验证二进制文件..."
ls -lh golang-demo ls -lh golang-demo