自动化构建一个Go项目
文章目录
承接上文,本文使用jenkins和gitlab来实现Go项目的自动化部署。
安装Go
因为国内网络原因,无法直接通过jenkins从golang.org上直接下载安装go,这里使用自定义下载go安装包。
首先在jenkins安装go插件 Go Plugin
。
然后去全局工具配置,配置go。选择
别名这里选择填go,也可以别的。
标签可以不填。
压缩包(二进制)的下载URL填了:https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz,这是go国内的下载方式。
解压目录选择了默认目录:/var/jenkins_home/tools/org.jenkinsci.plugins.golang.GolangInstallation
最后go会安装在 解压目录/go/别名/
下。
项目配置
配置好之后,新建一个构建一个自由风格的软件项目
然后在源码管理配置git
设置构建触发器,当push事件发生时,gitlab通过webhook触发jenkins进行构建
在构建环境中设置go
在构建中,新建执行shell,用户编译go
执行命令为:
export GOROOT=$JENKINS_HOME/tools/org.jenkinsci.plugins.golang.GolangInstallation/go/go
export GOPATH=$WORKSPACE
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.cn,direct
cd $WORKSPACE/go_test
go build -o ./go_test main.go
export
设置go的环境变量,不然找不到go命令。 GOROOT=$JENKINS_HOME/tools/org.jenkinsci.plugins.golang.GolangInstallation/go/go
为go的安装目录,这里使用了jenkins插件安装go的默认路径,$JENKINS_HOME
为jenkins存储数据的绝对路径,docker中为 /var/jenkins_home
。 $WORKSPACE
为当前的工作目录的绝对路径 /var/jenkins_home/workspace/任务名
在构建中新增一个Send files or execute commands over SSH。将编译好的包发送到部署服务器,并执行命令。
Remote directory填入/root/,表示把编译好的go程序发送到该目录。
在Exec command处填入:
systemctl stop go_test && cd /home/go_test && cp /root/go_test ./ && systemctl start go_test
但是需要注意的是,go编译好的可执行文件需要有可执行的权限,但是从jenkins发送过去的可执行文件是没有可执行的权限,所以如果直接用mv移动覆盖的话,新包会保留自己的权限,所以可以用cp复制的方式,新包就会保留原包的权限。
到此步就配置好了。
参考
文章作者 梧桐碎梦
上次更新 2021-10-11 23:58:53