在Golang项目的日常开发中,自动化部署能够大幅减少手动操作带来的失误,提升代码上线效率,Jenkins Pipeline作为Jenkins的核心功能,支持将部署流程定义为代码,实现全流程的可视化与自动化管理。

环境准备
在开始配置之前,需要先准备好以下基础环境:
- 一台安装了Jenkins的服务器,Jenkins版本建议在2.3以上,同时安装Git、Pipeline相关插件
- 目标部署服务器,需要开启SSH服务,方便Jenkins远程执行部署命令
- Golang开发环境,确保服务器上安装的Golang版本和项目要求的版本一致
- 代码仓库,本文以Git仓库为例,需要提前将Golang项目推送到仓库中
Jenkins基础配置
添加凭据
首先需要添加两个凭据,一个是Git仓库的访问凭据,另一个是目标部署服务器的SSH凭据,方便Jenkins拉取代码和远程执行命令。
创建Pipeline任务
在Jenkins首页点击新建任务,选择Pipeline类型,输入任务名称后点击确定,进入任务配置页面,在Pipeline配置区域选择Pipeline script from SCM,配置好Git仓库地址和对应的凭据,指定脚本路径为Jenkinsfile,保存配置即可。
编写Pipeline脚本
在Golang项目的根目录下创建Jenkinsfile文件,脚本内容需要覆盖代码拉取、编译构建、打包、部署几个核心阶段,以下是完整的示例:
pipeline {
agent any
// 环境变量配置
environment {
// Go相关环境变量
GO111MODULE = 'on'
GOPROXY = 'https://goproxy.cn,direct'
// 项目相关配置
PROJECT_NAME = 'golang-demo'
DEPLOY_SERVER = '192.168.0.100'
DEPLOY_USER = 'root'
DEPLOY_PATH = '/opt/apps/golang-demo'
}
stages {
// 阶段1:拉取代码
stage('拉取代码') {
steps {
git branch: 'main', credentialsId: 'git-credential-id', url: 'https://ipipp.com/golang-demo.git'
}
}
// 阶段2:编译构建
stage('编译Golang项目') {
steps {
sh '''
# 下载项目依赖
go mod tidy
# 编译项目,生成可执行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${PROJECT_NAME} main.go
'''
}
}
// 阶段3:打包文件
stage('打包构建产物') {
steps {
sh '''
# 创建临时打包目录
mkdir -p dist
# 将可执行文件和配置文件复制到打包目录
cp ${PROJECT_NAME} dist/
cp config.yaml dist/
# 打包为tar.gz文件
tar -czf ${PROJECT_NAME}.tar.gz -C dist .
'''
}
}
// 阶段4:部署到目标服务器
stage('部署上线') {
steps {
sshagent(credentials: ['deploy-ssh-credential-id']) {
sh '''
# 将打包文件发送到目标服务器
scp ${PROJECT_NAME}.tar.gz ${DEPLOY_USER}@${DEPLOY_SERVER}:${DEPLOY_PATH}/
# 远程执行部署命令
ssh ${DEPLOY_USER}@${DEPLOY_SERVER} << EOF
cd ${DEPLOY_PATH}
# 停止旧服务
pid=$(ps -ef | grep ${PROJECT_NAME} | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
kill -9 $pid
fi
# 解压新包
tar -xzf ${PROJECT_NAME}.tar.gz
# 启动新服务
nohup ./${PROJECT_NAME} > app.log 2>&1 &
# 清理临时文件
rm -f ${PROJECT_NAME}.tar.gz
EOF
'''
}
}
}
}
// 构建后操作
post {
success {
echo 'Golang项目自动化部署成功'
}
failure {
echo 'Golang项目自动化部署失败,请检查日志'
}
}
}
脚本说明
上述脚本中各个部分的作用如下:
environment部分定义了全局环境变量,包括Go的模块开关、代理地址,以及项目名、部署服务器信息,方便后续步骤复用,修改时只需要调整这部分内容即可stages部分定义了四个核心阶段,每个阶段对应部署流程的一个环节,阶段执行失败会直接终止整个Pipeline- 编译阶段设置了
CGO_ENABLED=0、GOOS=linux、GOARCH=amd64,确保编译出的可执行文件可以在Linux amd64架构的服务器上运行 - 部署阶段使用
sshagent插件管理SSH凭据,避免明文存储密码,远程执行命令时会先停止旧服务,再解压新包启动服务,保证部署过程不中断
执行与验证
保存Jenkinsfile到项目根目录并推送到Git仓库后,回到Jenkins的任务页面,点击立即构建,就可以在Pipeline视图中看到各个阶段的执行进度。如果所有阶段都显示绿色,说明部署成功,此时可以登录目标服务器,检查进程是否存在,访问项目接口验证服务是否正常可用。
如果构建过程中出现错误,可以点击对应阶段查看日志,常见问题包括Go版本不匹配、SSH凭据配置错误、目标服务器路径不存在等,根据日志提示调整配置即可。
Jenkins_PipelineGolang自动化部署CI_CD修改时间:2026-06-11 03:33:33