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"版本的标签进行部署即可。

posted @ 2024-12-13 23:52  尹正杰  阅读(255)  评论(0)    收藏  举报