Jenkins实现CICD之Golang基于SDK源码编译并部署应用
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
目录
一.Jenkins节点安装golang环境
1.基于仓库安装golang环境(不推荐)
apt -y install golang
温馨提示:
版本较低,默认是1.13版本。推荐安装较高版本,生产环境建议Go1.23+版本
视频安装教程:
https://www.bilibili.com/video/BV1aukPYrEVg
2.使用二进制的方式安装(推荐)
视频安装教程:
https://www.bilibili.com/video/BV1aukPYrEVg
参考笔记:
[root@ubuntu12.yinzhengjie.com ~]# mkdir -p /yinzhengjie/go/{GOROOT,GOPATH}
[root@ubuntu12.yinzhengjie.com ~]#
[root@ubuntu12.yinzhengjie.com ~]# tar xf go1.19.4.linux-amd64.tar.gz -C /yinzhengjie/go/GOROOT/
[root@ubuntu12.yinzhengjie.com ~]#
[root@ubuntu12.yinzhengjie.com ~]# cat /etc/profile.d/go.sh
#!/bin/bash
export GOROOT=/yinzhengjie/go/GOROOT/go
export GOPATH=/yinzhengjie/go/GOPATH
export PATH=$PATH:$GOROOT/bin
[root@ubuntu12.yinzhengjie.com ~]#
[root@ubuntu12.yinzhengjie.com ~]# source /etc/profile.d/go.sh
[root@ubuntu12.yinzhengjie.com ~]#
[root@ubuntu12.yinzhengjie.com ~]# go version
go version go1.19.4 linux/amd64
[root@ubuntu12.yinzhengjie.com ~]#
[root@ubuntu12.yinzhengjie.com ~]# go env -w GOPROXY=https://goproxy.cn,direct
[root@ubuntu12.yinzhengjie.com ~]#
二.gitlab创建项目导入golang代码
1 新建项目
如上图所示,点击"新建项目"后,会弹出如下图所示的界面,点击"导入项目"
2 导入项目
如上图所示,填写导入仓库的URL。导入成功就会得到如下图所示的界面哟~
三.编写构建go程序脚本
1.编写shell脚本
[root@ubuntu12.yinzhengjie.com ~]# cat /yinzhengjie/script/jenkins/deploy-go-demo.sh
#!/bin/bash
# 部署服务的名称
APP=go_demo
APP_PATH=/yinzhengjie/data/go
DATE=`date +%F_%H-%M-%S`
HOST_LIST="
10.0.0.13
10.0.0.14
"
# 编译代码
build () {
# go build -o ${APP}
/yinzhengjie/go/GOROOT/go/bin/go build -o ${APP}
}
# 部署服务
deloy () {
for host in $HOST_LIST;do
# 创建程序存放路径
ssh $host "mkdir -p $APP_PATH/${APP}-${DATE}"
# 将编译后的二进制程序拷贝到程序存放路径
scp -r ${APP} $host:$APP_PATH/${APP}-${DATE}/
# 先杀死服务并创建符号链接并启动服务
ssh $host "pkill go_demo; \
rm -f ${APP_PATH}/${APP}; \
ln -vsf ${APP_PATH}/${APP}-${DATE} ${APP_PATH}/${APP}; \
nohup ${APP_PATH}/${APP}/go_demo &>/dev/null &" &
done
}
# 先编译代码在部署服务
build
deloy
[root@ubuntu12.yinzhengjie.com ~]#
2.为启动脚本添加执行权限
[root@ubuntu12.yinzhengjie.com ~]# chmod +x /yinzhengjie/script/jenkins/deploy-go-demo.sh
[root@ubuntu12.yinzhengjie.com ~]#
四.Jenkins部署golang环境
1 创建项目
如上图所示,创建一个自由风格的项目。
2 配置源码管理
如上图所示,我们可以配置源码管理哟。
3 配置Jenkins调用脚本
如上图所示,使用Jenkins调用脚本执行就可以完成配置了。
4 停止tomcat服务(可选操作)
root@web13:~# systemctl disable --now tomcat9
root@web14:~# systemctl disable --now tomcat9
温馨提示:
默认gin框架会占用8080端口哟。建议如果实验的web服务器已经运行了tomcat服务,暂时先停掉,用于测试golang程序。
5 运行Jenkins构建任务
如上图所示,我们可以立即构建golang的程序,其会调用脚本来部署服务。
部署成功就可以访问其webuI,如下图所示。
五.基于标签发布go程序
1 添加git参数
如上图所示,添加一个git参数。
如下图所示,我们定义一个TAG变量,其类型是"标签"。
2 应用git参数变量
如上图所示,我们可以应用自己的标签哟。
3 基于标签构建
如上图所示,选择基于"v0.1"版本的标签进行部署即可。
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/18606132,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。