修改go配置
This commit is contained in:
parent
ab99ae7641
commit
b433e690b6
167
Jenkinsfile
vendored
167
Jenkinsfile
vendored
@ -7,7 +7,9 @@ pipeline {
|
|||||||
timestamps()
|
timestamps()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tools {
|
||||||
|
go 'go' // 使用Jenkins手动配置的Go工具
|
||||||
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
// 目标服务器配置
|
// 目标服务器配置
|
||||||
@ -49,12 +51,15 @@ pipeline {
|
|||||||
echo '🔍 检查构建环境...'
|
echo '🔍 检查构建环境...'
|
||||||
script {
|
script {
|
||||||
sh '''
|
sh '''
|
||||||
|
echo "=== Go版本 ==="
|
||||||
|
go version
|
||||||
|
|
||||||
|
echo "=== Go环境信息 ==="
|
||||||
|
go env
|
||||||
|
|
||||||
echo "=== Docker版本 ==="
|
echo "=== Docker版本 ==="
|
||||||
docker --version
|
docker --version
|
||||||
|
|
||||||
echo "=== Go版本(Docker中) ==="
|
|
||||||
docker run --rm golang:1.21-alpine go version
|
|
||||||
|
|
||||||
echo "=== 工作目录 ==="
|
echo "=== 工作目录 ==="
|
||||||
pwd && ls -la
|
pwd && ls -la
|
||||||
'''
|
'''
|
||||||
@ -68,64 +73,14 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '📦 下载Go依赖...'
|
echo '📦 下载Go依赖...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "工作空间路径: ${WORKSPACE}"
|
echo "下载依赖..."
|
||||||
echo "检查go.mod文件存在性:"
|
go mod download
|
||||||
ls -la go.mod go.sum
|
|
||||||
|
|
||||||
echo "使用Docker容器管理Go依赖..."
|
echo "验证依赖..."
|
||||||
echo "测试Docker挂载是否正常:"
|
go mod verify
|
||||||
docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine sh -c "
|
|
||||||
echo '容器内工作目录:'
|
|
||||||
pwd
|
|
||||||
echo '容器内文件列表:'
|
|
||||||
ls -la
|
|
||||||
echo '检查go.mod文件:'
|
|
||||||
ls -la go.mod go.sum || echo 'go.mod文件未找到'
|
|
||||||
"
|
|
||||||
|
|
||||||
echo "开始Go依赖管理..."
|
echo "整理依赖..."
|
||||||
|
go mod tidy
|
||||||
# 如果直接挂载有问题,使用复制文件的方式
|
|
||||||
if docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine test -f go.mod; then
|
|
||||||
echo "✅ 直接挂载方式可用"
|
|
||||||
docker run --rm -v "${WORKSPACE}":/workspace -w /workspace golang:1.21-alpine sh -c "
|
|
||||||
echo '下载依赖...'
|
|
||||||
go mod download
|
|
||||||
|
|
||||||
echo '验证依赖...'
|
|
||||||
go mod verify
|
|
||||||
|
|
||||||
echo '整理依赖...'
|
|
||||||
go mod tidy
|
|
||||||
"
|
|
||||||
else
|
|
||||||
echo "⚠️ 直接挂载失败,使用容器复制方式"
|
|
||||||
|
|
||||||
# 创建临时容器并复制文件(设置正确的工作目录)
|
|
||||||
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
|
|
||||||
echo '下载依赖...'
|
|
||||||
go mod download
|
|
||||||
|
|
||||||
echo '验证依赖...'
|
|
||||||
go mod verify
|
|
||||||
|
|
||||||
echo '整理依赖...'
|
|
||||||
go mod tidy
|
|
||||||
")
|
|
||||||
|
|
||||||
# 复制所有文件到容器的/app目录
|
|
||||||
docker cp . $CONTAINER_ID:/app
|
|
||||||
|
|
||||||
# 启动容器执行Go命令
|
|
||||||
docker start -a $CONTAINER_ID
|
|
||||||
|
|
||||||
# 复制结果文件回来
|
|
||||||
docker cp $CONTAINER_ID:/app/go.mod . || true
|
|
||||||
docker cp $CONTAINER_ID:/app/go.sum . || true
|
|
||||||
|
|
||||||
# 清理容器
|
|
||||||
docker rm $CONTAINER_ID
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ 依赖管理完成"
|
echo "✅ 依赖管理完成"
|
||||||
'''
|
'''
|
||||||
@ -136,30 +91,15 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '🔍 运行Go代码检查...'
|
echo '🔍 运行Go代码检查...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "使用Docker容器进行代码检查..."
|
echo "运行go vet..."
|
||||||
|
go vet ./...
|
||||||
|
|
||||||
# 创建容器并设置工作目录
|
echo "运行go fmt检查..."
|
||||||
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
|
if [ "$(gofmt -l . | wc -l)" -gt 0 ]; then
|
||||||
echo '运行go vet...'
|
echo "❌ 代码格式不正确,需要运行 go fmt"
|
||||||
go vet ./...
|
gofmt -l .
|
||||||
|
exit 1
|
||||||
echo '运行go fmt检查...'
|
fi
|
||||||
UNFORMATTED=\$(gofmt -l . 2>/dev/null || true)
|
|
||||||
if [ -n \"\$UNFORMATTED\" ]; then
|
|
||||||
echo '❌ 代码格式不正确,需要运行 go fmt'
|
|
||||||
echo \$UNFORMATTED
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
")
|
|
||||||
|
|
||||||
# 复制文件到容器
|
|
||||||
docker cp . $CONTAINER_ID:/app
|
|
||||||
|
|
||||||
# 执行代码检查
|
|
||||||
docker start -a $CONTAINER_ID
|
|
||||||
|
|
||||||
# 清理容器
|
|
||||||
docker rm $CONTAINER_ID
|
|
||||||
|
|
||||||
echo "✅ 代码检查通过"
|
echo "✅ 代码检查通过"
|
||||||
'''
|
'''
|
||||||
@ -170,35 +110,14 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '🧪 运行单元测试...'
|
echo '🧪 运行单元测试...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "使用Docker容器运行测试..."
|
echo "运行测试并生成覆盖率报告..."
|
||||||
|
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
||||||
|
|
||||||
# 创建容器并设置工作目录
|
echo "生成HTML覆盖率报告..."
|
||||||
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
|
go tool cover -html=coverage.out -o coverage.html
|
||||||
echo '运行测试并生成覆盖率报告...'
|
|
||||||
go test -v -race -coverprofile=coverage.out -covermode=atomic ./... || echo '测试执行完成(可能有测试失败)'
|
|
||||||
|
|
||||||
echo '生成HTML覆盖率报告...'
|
|
||||||
if [ -f coverage.out ]; then
|
|
||||||
go tool cover -html=coverage.out -o coverage.html
|
|
||||||
echo '显示覆盖率统计...'
|
|
||||||
go tool cover -func=coverage.out
|
|
||||||
else
|
|
||||||
echo '⚠️ coverage.out文件不存在,跳过覆盖率报告生成'
|
|
||||||
fi
|
|
||||||
")
|
|
||||||
|
|
||||||
# 复制文件到容器
|
echo "显示覆盖率统计..."
|
||||||
docker cp . $CONTAINER_ID:/app
|
go tool cover -func=coverage.out
|
||||||
|
|
||||||
# 执行测试
|
|
||||||
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 {
|
||||||
@ -262,30 +181,10 @@ EOF
|
|||||||
steps {
|
steps {
|
||||||
echo '🔨 编译Go应用程序...'
|
echo '🔨 编译Go应用程序...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "使用Docker容器编译Go应用..."
|
echo "开始编译..."
|
||||||
|
CGO_ENABLED=0 GOOS=linux go build \\
|
||||||
# 创建容器并设置工作目录
|
-ldflags="-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}" \\
|
||||||
CONTAINER_ID=$(docker create -w /app golang:1.21-alpine sh -c "
|
-o golang-demo .
|
||||||
echo '开始编译...'
|
|
||||||
CGO_ENABLED=0 GOOS=linux go build \\
|
|
||||||
-ldflags='-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}' \\
|
|
||||||
-o golang-demo .
|
|
||||||
|
|
||||||
echo '设置二进制文件权限...'
|
|
||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user