修改go环境在docker
This commit is contained in:
parent
60fcec6994
commit
8a94fa8690
98
Jenkinsfile
vendored
98
Jenkinsfile
vendored
@ -7,9 +7,7 @@ pipeline {
|
|||||||
timestamps()
|
timestamps()
|
||||||
}
|
}
|
||||||
|
|
||||||
tools {
|
|
||||||
go 'go' // 使用Jenkins配置的Go工具
|
|
||||||
}
|
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
// 目标服务器配置
|
// 目标服务器配置
|
||||||
@ -51,15 +49,12 @@ 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
|
||||||
'''
|
'''
|
||||||
@ -73,14 +68,17 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '📦 下载Go依赖...'
|
echo '📦 下载Go依赖...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "下载依赖..."
|
echo "使用Docker容器管理Go依赖..."
|
||||||
go mod download
|
docker run --rm -v "$(pwd)":/workspace -w /workspace golang:1.21-alpine sh -c "
|
||||||
|
echo '下载依赖...'
|
||||||
|
go mod download
|
||||||
|
|
||||||
echo "验证依赖..."
|
echo '验证依赖...'
|
||||||
go mod verify
|
go mod verify
|
||||||
|
|
||||||
echo "整理依赖..."
|
echo '整理依赖...'
|
||||||
go mod tidy
|
go mod tidy
|
||||||
|
"
|
||||||
|
|
||||||
echo "✅ 依赖管理完成"
|
echo "✅ 依赖管理完成"
|
||||||
'''
|
'''
|
||||||
@ -91,15 +89,18 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '🔍 运行Go代码检查...'
|
echo '🔍 运行Go代码检查...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "运行go vet..."
|
echo "使用Docker容器进行代码检查..."
|
||||||
go vet ./...
|
docker run --rm -v "$(pwd)":/workspace -w /workspace golang:1.21-alpine sh -c "
|
||||||
|
echo '运行go vet...'
|
||||||
|
go vet ./...
|
||||||
|
|
||||||
echo "运行go fmt检查..."
|
echo '运行go fmt检查...'
|
||||||
if [ "$(gofmt -l . | wc -l)" -gt 0 ]; then
|
if [ \$(gofmt -l . | wc -l) -gt 0 ]; then
|
||||||
echo "❌ 代码格式不正确,需要运行 go fmt"
|
echo '❌ 代码格式不正确,需要运行 go fmt'
|
||||||
gofmt -l .
|
gofmt -l .
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
"
|
||||||
|
|
||||||
echo "✅ 代码检查通过"
|
echo "✅ 代码检查通过"
|
||||||
'''
|
'''
|
||||||
@ -110,14 +111,17 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
echo '🧪 运行单元测试...'
|
echo '🧪 运行单元测试...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "运行测试并生成覆盖率报告..."
|
echo "使用Docker容器运行测试..."
|
||||||
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
docker run --rm -v "$(pwd)":/workspace -w /workspace golang:1.21-alpine sh -c "
|
||||||
|
echo '运行测试并生成覆盖率报告...'
|
||||||
|
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
||||||
|
|
||||||
echo "生成HTML覆盖率报告..."
|
echo '生成HTML覆盖率报告...'
|
||||||
go tool cover -html=coverage.out -o coverage.html
|
go tool cover -html=coverage.out -o coverage.html
|
||||||
|
|
||||||
echo "显示覆盖率统计..."
|
echo '显示覆盖率统计...'
|
||||||
go tool cover -func=coverage.out
|
go tool cover -func=coverage.out
|
||||||
|
"
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
@ -181,10 +185,13 @@ EOF
|
|||||||
steps {
|
steps {
|
||||||
echo '🔨 编译Go应用程序...'
|
echo '🔨 编译Go应用程序...'
|
||||||
sh '''
|
sh '''
|
||||||
echo "开始编译..."
|
echo "使用Docker容器编译Go应用..."
|
||||||
CGO_ENABLED=0 GOOS=linux go build \\
|
docker run --rm -v "$(pwd)":/workspace -w /workspace golang:1.21-alpine sh -c "
|
||||||
-ldflags="-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}" \\
|
echo '开始编译...'
|
||||||
-o golang-demo .
|
CGO_ENABLED=0 GOOS=linux go build \\
|
||||||
|
-ldflags='-w -s -X main.gitCommit=${GIT_COMMIT_SHORT}' \\
|
||||||
|
-o golang-demo .
|
||||||
|
"
|
||||||
|
|
||||||
echo "验证二进制文件..."
|
echo "验证二进制文件..."
|
||||||
ls -lh golang-demo
|
ls -lh golang-demo
|
||||||
@ -404,20 +411,11 @@ EOF
|
|||||||
echo '🧹 清理工作空间...'
|
echo '🧹 清理工作空间...'
|
||||||
try {
|
try {
|
||||||
// 清理Go构建产物
|
// 清理Go构建产物
|
||||||
sh '''
|
sh 'rm -f golang-demo coverage.out coverage.html sonar-project.properties || true'
|
||||||
rm -f golang-demo
|
|
||||||
rm -f coverage.out coverage.html
|
|
||||||
rm -f sonar-project.properties
|
|
||||||
'''
|
|
||||||
|
|
||||||
// 清理Docker资源
|
// 清理Docker资源
|
||||||
sh '''
|
sh 'docker image prune -f || true'
|
||||||
# 清理未使用的镜像
|
sh 'docker builder prune -f || true'
|
||||||
docker image prune -f || true
|
|
||||||
|
|
||||||
# 清理构建缓存
|
|
||||||
docker builder prune -f || true
|
|
||||||
'''
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
echo "⚠️ 清理失败: ${e.getMessage()}"
|
echo "⚠️ 清理失败: ${e.getMessage()}"
|
||||||
}
|
}
|
||||||
@ -428,9 +426,9 @@ EOF
|
|||||||
script {
|
script {
|
||||||
echo '✅ 流水线执行成功!'
|
echo '✅ 流水线执行成功!'
|
||||||
|
|
||||||
def deployPort = '15020'
|
def deployPort = '15021'
|
||||||
if (env.BRANCH_NAME == 'develop' || env.BRANCH_NAME?.startsWith('feature/')) {
|
if (env.BRANCH_NAME == 'develop' || env.BRANCH_NAME?.startsWith('feature/')) {
|
||||||
deployPort = '15021'
|
deployPort = '15022'
|
||||||
}
|
}
|
||||||
|
|
||||||
def message = """
|
def message = """
|
||||||
@ -467,10 +465,8 @@ EOF
|
|||||||
echo message
|
echo message
|
||||||
|
|
||||||
// 清理可能的测试容器
|
// 清理可能的测试容器
|
||||||
sh '''
|
sh "docker stop test-${BUILD_NUMBER} || true"
|
||||||
docker stop test-${BUILD_NUMBER} || true
|
sh "docker rm test-${BUILD_NUMBER} || true"
|
||||||
docker rm test-${BUILD_NUMBER} || true
|
|
||||||
'''
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user