修改jenkinsfile
This commit is contained in:
parent
0f52893ddf
commit
9caa5c3b58
110
Jenkinsfile
vendored
110
Jenkinsfile
vendored
@ -1,9 +1,10 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
// 使用Docker代理来提供稳定的Go环境,避免网络下载问题
|
||||||
|
agent {
|
||||||
// 声明使用Jenkins配置的Go工具
|
docker {
|
||||||
tools {
|
image 'golang:1.21-alpine'
|
||||||
go 'go' // 修正:使用小写的'go',与Jenkins配置的工具名称一致
|
args '-v /var/run/docker.sock:/var/run/docker.sock'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
options {
|
options {
|
||||||
@ -32,6 +33,22 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
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') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
echo '🔄 开始检出代码...'
|
echo '🔄 开始检出代码...'
|
||||||
@ -226,6 +243,7 @@ EOF
|
|||||||
stage('构建Docker镜像') {
|
stage('构建Docker镜像') {
|
||||||
steps {
|
steps {
|
||||||
echo '🐳 构建Docker镜像...'
|
echo '🐳 构建Docker镜像...'
|
||||||
|
echo '💡 提示:通过Docker socket在容器内访问主机Docker守护进程'
|
||||||
script {
|
script {
|
||||||
try {
|
try {
|
||||||
// 清理旧镜像
|
// 清理旧镜像
|
||||||
@ -422,26 +440,28 @@ EOF
|
|||||||
|
|
||||||
post {
|
post {
|
||||||
always {
|
always {
|
||||||
script {
|
node {
|
||||||
echo '🧹 清理工作空间...'
|
script {
|
||||||
try {
|
echo '🧹 清理工作空间...'
|
||||||
// 清理Go构建产物
|
try {
|
||||||
sh '''
|
// 清理Go构建产物
|
||||||
rm -f golang-demo
|
sh '''
|
||||||
rm -f coverage.out coverage.html
|
rm -f golang-demo
|
||||||
rm -f sonar-project.properties
|
rm -f coverage.out coverage.html
|
||||||
'''
|
rm -f sonar-project.properties
|
||||||
|
'''
|
||||||
// 清理Docker资源
|
|
||||||
sh '''
|
|
||||||
# 清理未使用的镜像
|
|
||||||
docker image prune -f || true
|
|
||||||
|
|
||||||
# 清理构建缓存
|
// 清理Docker资源
|
||||||
docker builder prune -f || true
|
sh '''
|
||||||
'''
|
# 清理未使用的镜像
|
||||||
} catch (Exception e) {
|
docker image prune -f || true
|
||||||
echo "⚠️ 清理失败: ${e.getMessage()}"
|
|
||||||
|
# 清理构建缓存
|
||||||
|
docker builder prune -f || true
|
||||||
|
'''
|
||||||
|
} catch (Exception e) {
|
||||||
|
echo "⚠️ 清理失败: ${e.getMessage()}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -475,9 +495,10 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
failure {
|
failure {
|
||||||
script {
|
node {
|
||||||
echo '❌ 流水线执行失败!'
|
script {
|
||||||
def message = """
|
echo '❌ 流水线执行失败!'
|
||||||
|
def message = """
|
||||||
💥 Jenkins构建失败!
|
💥 Jenkins构建失败!
|
||||||
|
|
||||||
📋 项目: ${env.JOB_NAME}
|
📋 项目: ${env.JOB_NAME}
|
||||||
@ -488,26 +509,29 @@ EOF
|
|||||||
⏱️ 持续时间: ${currentBuild.durationString}
|
⏱️ 持续时间: ${currentBuild.durationString}
|
||||||
🔗 构建链接: ${env.BUILD_URL}
|
🔗 构建链接: ${env.BUILD_URL}
|
||||||
📄 查看日志: ${env.BUILD_URL}console
|
📄 查看日志: ${env.BUILD_URL}console
|
||||||
"""
|
"""
|
||||||
|
|
||||||
echo message
|
echo message
|
||||||
|
|
||||||
// 清理可能的测试容器
|
// 清理可能的测试容器
|
||||||
sh '''
|
sh '''
|
||||||
docker stop test-${BUILD_NUMBER} || true
|
docker stop test-${BUILD_NUMBER} || true
|
||||||
docker rm test-${BUILD_NUMBER} || true
|
docker rm test-${BUILD_NUMBER} || true
|
||||||
'''
|
'''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup {
|
cleanup {
|
||||||
script {
|
node {
|
||||||
try {
|
script {
|
||||||
// 清理工作空间
|
try {
|
||||||
cleanWs()
|
// 清理工作空间
|
||||||
echo "✅ 清理完成"
|
cleanWs()
|
||||||
} catch (Exception e) {
|
echo "✅ 清理完成"
|
||||||
echo "⚠️ 清理失败: ${e.getMessage()}"
|
} catch (Exception e) {
|
||||||
|
echo "⚠️ 清理失败: ${e.getMessage()}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user