diff --git a/Jenkinsfile b/Jenkinsfile index 26155a7..b48fff0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,9 +1,10 @@ pipeline { - agent any - - // 声明使用Jenkins配置的Go工具 - tools { - go 'go' // 修正:使用小写的'go',与Jenkins配置的工具名称一致 + // 使用Docker代理来提供稳定的Go环境,避免网络下载问题 + agent { + docker { + image 'golang:1.21-alpine' + args '-v /var/run/docker.sock:/var/run/docker.sock' + } } options { @@ -32,6 +33,22 @@ pipeline { } stages { + stage('环境准备') { + steps { + echo '🔧 准备Docker环境...' + sh ''' + # 安装Docker客户端和其他必要工具 + apk add --no-cache docker-cli curl wget git ca-certificates tzdata + + # 验证Go和Docker环境 + go version + docker --version + + echo "✅ 环境准备完成" + ''' + } + } + stage('Checkout') { steps { echo '🔄 开始检出代码...' @@ -226,6 +243,7 @@ EOF stage('构建Docker镜像') { steps { echo '🐳 构建Docker镜像...' + echo '💡 提示:通过Docker socket在容器内访问主机Docker守护进程' script { try { // 清理旧镜像 @@ -422,26 +440,28 @@ EOF post { always { - script { - echo '🧹 清理工作空间...' - try { - // 清理Go构建产物 - sh ''' - rm -f golang-demo - rm -f coverage.out coverage.html - rm -f sonar-project.properties - ''' - - // 清理Docker资源 - sh ''' - # 清理未使用的镜像 - docker image prune -f || true + node { + script { + echo '🧹 清理工作空间...' + try { + // 清理Go构建产物 + sh ''' + rm -f golang-demo + rm -f coverage.out coverage.html + rm -f sonar-project.properties + ''' - # 清理构建缓存 - docker builder prune -f || true - ''' - } catch (Exception e) { - echo "⚠️ 清理失败: ${e.getMessage()}" + // 清理Docker资源 + sh ''' + # 清理未使用的镜像 + docker image prune -f || true + + # 清理构建缓存 + docker builder prune -f || true + ''' + } catch (Exception e) { + echo "⚠️ 清理失败: ${e.getMessage()}" + } } } } @@ -475,9 +495,10 @@ EOF } failure { - script { - echo '❌ 流水线执行失败!' - def message = """ + node { + script { + echo '❌ 流水线执行失败!' + def message = """ 💥 Jenkins构建失败! 📋 项目: ${env.JOB_NAME} @@ -488,26 +509,29 @@ EOF ⏱️ 持续时间: ${currentBuild.durationString} 🔗 构建链接: ${env.BUILD_URL} 📄 查看日志: ${env.BUILD_URL}console - """ - - echo message - - // 清理可能的测试容器 - sh ''' - docker stop test-${BUILD_NUMBER} || true - docker rm test-${BUILD_NUMBER} || true - ''' + """ + + echo message + + // 清理可能的测试容器 + sh ''' + docker stop test-${BUILD_NUMBER} || true + docker rm test-${BUILD_NUMBER} || true + ''' + } } } cleanup { - script { - try { - // 清理工作空间 - cleanWs() - echo "✅ 清理完成" - } catch (Exception e) { - echo "⚠️ 清理失败: ${e.getMessage()}" + node { + script { + try { + // 清理工作空间 + cleanWs() + echo "✅ 清理完成" + } catch (Exception e) { + echo "⚠️ 清理失败: ${e.getMessage()}" + } } } }