Jenkins 部署Go工程编译流水线

安装起步

试验环境:

  • 操作系统 CentOS 7.6
  • 安装 jdk 8 环境
  • Jenkins包
1
2
3
4
5
6
7
8
9
10
11
# 安装 jdk 8 环境
yum install java-1.8.0-openjdk-debug.x86_64


cd /usr/local/src # 本次操作我们将jenkins包放在该目录下

# 下载 Jenkins.war
curl -O http://mirrors.jenkins.io/war-stable/latest/jenkins.war

# 指定运行端口 8080 并启动
java -jar jenkins.war --httpPort=8080

之后jenkins的后台管理服务启动完成之后,访问CentOS主机地址的8080端口即可看到管理页面,按照操作流程走,选择安装推荐插件即可完成配置。

Tips:此处安装插件可能会有一些小问题


配置Go环境

jenkins功能强大,可以完成各种功能。主要是因为jenkins社区中有许多插件,通过不通插件的。所以在构建Go的编译环境时首先要下载一些插件。

  • Go Plugin(有的可能直接叫 Go)

插件可以在插件官网,或者直接在后台面板安装。这里推荐直接在后台面板安装。

安装完成后到 Manage Jenkins(系统配置) => Global Tool Configuration(全局工具配置) 页面下,找到Go一栏。

这里是配置Go的编译环境,支持多版本。点击安装Go环境选项,选择Go的版本,填写一个别名,建议带版本号,后续编译的时候,选择的版本更清晰。(这里也有其他的安装方式,如压缩包等等)

填写完成后保存,该环境会在第一个构建项目时,加载到.jenkins/tool/ 文件夹下。

创建 Job

回到首页,点击 new item(新建任务)。创建一个自由风格的项目(freestyle project)。

进入配置页面,在 Source Code Management(源码管理),一栏选择代码管理方式。由于我们使用的是git,所以本文主讲git配置

  • Repository URL 填写项目地址

  • Credentials 如果需要认证,则可以点击旁边的add按钮,添加一组账号密码,用于访问仓库,也可以通过直接添加 ssh 公钥直接访问。jenkins 会有直接提示,如果无法访问仓库,会在 Repository URL 一栏下报错

  • Branches to build 则是代码分支,jenkins会根据这里填写的参数,去拉取相关分支代码来构建。

  • Additional Behaviours 一栏中添加一个
    Check out to a sub-directory 这个可以指定代码拉取到服务器的指定文件地址。这里我使用/home/code/go/src/project_name

1
2
3
4
5
6
7
# /home/code/go 文件夹下目录结构
.
├── bin
├── pkg
└── src

# 编译过Go的知道,为什么要这个目录结构-_-
  • Build Triggers(构建触发器),该选项则是确定何时出发jenkins构建任务。这里我们选择 GitHub hook trigger for GITScm polling, 代表每次git提交,都会执行一次构建

  • Build Environment(构建环境),由于我们是 Go 的编译所以选择 Set up Go programming language tools项。选中后弹出一个 Go version 选择。这里出现的选项,是之前在配置 Go 环境的时候新增的别名。

  • Build(构建),这里点击Add Build step,添加一个 Excute shell 步骤。这样我们可以直接在弹出的框里面写shell脚本来操作编译

1
2
3
4
5
export GOPATH=/home/kilii/code/go

go version

cd $GOPATH/src/project_name && go get -d -v ./... && (go install || go build)

然后保存结果,到这里整个构建脚本就写好了。

执行构建

回到首页,点击条目中最右侧的小闹钟,即可手动开始构建。


总结

经过上面一套流程,如果还是有点混乱不明白的朋友,我们可以重新梳理一下。根据上文描述,我们可以大致分为四个步骤

  • 编译环境
  • 设置代码仓库
  • 设置触发机制
  • 编写构建步骤

其中编译环境有两种方式构建,一是自己在机器上安装搭建,二是使用相关插件。

设置代码仓库和触发机制没啥可说的。基本上按提示来就可以了。

最后编写构建步骤,其实就是写 shell脚本。而且,整体下来其实就是可以看作是写shell,这样想来是不是简单了很多呢?

如果这一块还不是太懂的同学,得好好补补linuxshell 相关的知识了。这是非常重要知识,所有做后端,做服务器,运维的人,需要了解的并掌握东西。