使用ubuntu+jenkins+gitlab+supervisor部署Go应用

准备工作

1、ubuntu安装go环境
2、ubuntu安装supervisor进程管理工具
3、安装jenkins
4、在jenkins安装go plugin、gitlab plugin

一、安装go运行环境

参考:ubuntu配置golang环境_wanghao3616的博客-CSDN博客_ubuntu配置golang

注意:记住里go解压的路径和运行路径(即:GOROOT路径和GOPATH路径),在jenkins中添加go运行环境时用

二、supervisor安装

参考:ubuntu环境使用supervisor部署Go应用_wanghao3616的博客-CSDN博客

小知识:supervisor支持common多行命令

# /bin/bash -c "common1 && common2"
command = /bin/bash -c "cd /gopath/src/demo &&./demo"

三、安装Jenkins

安装java

sudo apt-get install openjdk-8-jre

查看java版本

 java -version

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第1张图片

安装Jenkins

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

打开jenkins 

在浏览器中访问 http://192.168.1.100:8080  你的服务器ip
首次进入会要求输入初始密码如下图, 
初始密码在:/var/lib/jenkins/secrets/initialAdminPassword 

选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。 

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第2张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第3张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第4张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第5张图片

小知识: Jenkins执行sudo权限的设置

Jenkins系统中添加执行脚本的时候,有一些命令是需要sudo权限和来执行的,可以在root权限下添加一下Jenkins账号的权限

1、添加不需要密码可sudo执行指定命令的权限

cd /etc

chmod u+w /etc/sudoers

vi /etc/sudoers

##########################################

jenkins ALL=NOPASSWD: /usr/bin/supervisorctl

//即允许jenkins用户使用sudo执行supervisorctl的命令,且执行时不需要输入密码

2、解决:sudo: no tty present and no askpass program specified(sudo版本较低的可以先升级一下sudo)

vi /etc/sudoers

##########################################

#
#Defaults    requiretty
Defaults:jenkins !requiretty
#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   visiblepw

四、jenkins安装go plugin、git plugin

jenkins默认访问地址

进入【系统管理】->【插件管理】->【可选插件】或者在【系统管理】->【插件管理】右上方进行搜索安装即可

添加 go插件

在“系统管理”-“插件管理”-“可选插件”。
这里我们添加Go插件Go-Plugin-Jenkins

å¨è¿éæå¥å¾çæè¿°

点击最下边 “直接安装” 即可完成安装。
安装完成勾选最下面重启jenkins选项。

该插件主要完成以下几个功能:

提供各预编译版本 GO 安装包,方便 Jenkins 所在机器执行安装。
配置 GOROOT 环境变量,并指向安装的 Go 工具。
添加 $GOROOT/bin 到系统 PATH 中,以方便构建时使用 GO 工具时可以直接使用。
说明一下,我们知道 GO 项目执行编译,需要指定好 GOROOT 以及配置 GOPATH 到环境变量中,这里插件直接帮我们配置好了。当然如果用默认配置不合适,也可以不用自动安装,这个随后会讲。
安装GitLab Plugin插件
在”系统管理->管理插件”-“已安装插件”位置检查此插件是否已经安装。如果没有,先安装,这个插件在随后的触发构建的时候会用。


在“系统管理”-“全局工具配置”-“go”,点击"新增Go"。默认情况下,插件自动安装 。


这里输入别名“go1.12.4”
由于国内网路原因,无法直接访问golang.org(所以学会科学上网很重要!)。那么我们可不用自动安装,直接在jenkins的容器上安装 Go,然后在这里指定 Go 安装目录即可。例如,这里我提前在机器 /var/jenkins_home/go 目录安装好了系统对应版本的 Go-1.12 版本的安装包,直接配置即可。Go 环境详细安装过程,或参考https://segmentfault.com/a/1190000014788819

五、jenkins添加gitlab用户

进入【凭据】->【系统】->【全局凭据】->【添加凭据】,如下图

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第6张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第7张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第8张图片

六、添加go path

进入【系统管理】->【全局工具设置】->【新增Go】,设置在centOS中GOROOT路径即可,我的go在/usr/local/go,具体路径以自己安装路径为准,如图:

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第9张图片

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第10张图片

七、jenkins部署go

点击“新建任务”,输入任务名称(这里我们输入demo),同时我们选择“构建一个自由风格的软件项目”

å¨è¿éæå¥å¾çæè¿°

添加源码
填写git仓库地址,然后选择前面配置的gitlab用户认证。点击“添加”按钮。

å¨è¿éæå¥å¾çæè¿°

配置“Additional Behaviours”

å¨è¿éæå¥å¾çæè¿°

  1. “Check out to a sub-directory ”:配置GOPATH路径,默认情况下为$GOROOT/src,自定义路径好处是1、每个 Job 拥有自己工作空间下独立的构建路径,跟其他 Job隔离开,避免不同项目对同一插件依赖的版本不一致导致的问题。2、每个 Job 在自己工作空间下,可以通过 Web页面直接查看文件,方便排查问题。当然坏处就是:一旦我们清理了该 Job 的工作空间,那么下次执行时会重新拉取各个插件依赖,会耗时久一些。
  2. “Check out to a specific local branch”:设置为master主分支。


构建环境

å¨è¿éæå¥å¾çæè¿°

勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来。
勾选“Set up Go programming language tools”,选择运行go版本。
构建触发器配置
选择如下

å¨è¿éæå¥å¾çæè¿°

选择“高级”,再点击“generate”,生成 Secret token(用gitlab之间的认证)。

å¨è¿éæå¥å¾çæè¿°

配置构建

使用ubuntu+jenkins+gitlab+supervisor部署Go应用_第11张图片

#配置GOPATH
export GOPATH=$WORKSPACE
export PATH=$GOPATH:$PATH

go env
echo "GOPATH: ${GOPATH}"
#执行go get & build命令
cd $GOPATH/src/demo && env GOOS=linux GOARCH=amd64 go build -o demo main.go 
sudo supervisorctl restart demo

配置完之后保存。

八、jenkins构建demo

å¨è¿éæå¥å¾çæè¿°

左下角红方框,是构建历史,红球表示不成功,篮球表示成功。
打开“工作区”,这里看到main.go证明构建成功。

å¨è¿éæå¥å¾çæè¿°

参考:

centos7下部署Docker+Jenkins+Gitlab+Golang持续集成环境_无风的雨的博客-CSDN博客

Jenkins部署Golang(centOS)_Keson丶的博客-CSDN博客_golang jenkins

你可能感兴趣的:(Golang学习,Ubuntu,golang)