Jenkins 安装使用

Jenkins CD&CI

Posted by gomyck on December 16, 2019

CentOS安装 Jenkins, 并自动部署maven微服务项目

jenkins 介绍

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

CI&CD介绍

continuous integration & continuous delivery (持续集成与持续交付), 与字面意思相同, 指在软件工程中, 一种项目实践, 其生命周期为

1
2
3
编码 > 构建 > 测试 > 发布 > 部署 > 运行 > 监测 > 迭代 > 编码 .....

jenkins 安装

1.进入 https://jenkins.io/zh/download/ 选择对应的操作系统, 下载具体的 jenkins 包, 本文以 CentOS 为例, 使用 yum 进行安装(无需下载 rpm 包)

2.输入以下内容(为 jenkins yum 源仓库文件)

1
2
3
4
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

3.确保当前服务器有jdk, 一般来说 jdk8 满足大部分版本的 jenkins 运行时要求

4.使用 yum 安装

1
2
$ yum -y install jenkins

5.进入 jenkins 运行文件目录, 运行 jenkins war 包

1
2
3
4
5
6
7
# 进入应用程序根目录
$ cd /usr/lib/jenkins
# 启动 jenkins
$ nohup java -jar jenkins.war --httpPort=8088 >gomyck.log 2>&1 &
# 查看运行情况
$ tail -f ck.log

6.使用浏览器访问: http://host:8088 来访问 jenkins

7.按照 jenkins 提示, 进行初始化安装, 并在提示指定位置(服务器磁盘位置, 使用 cat 命令查看该文件即可)找到初始化管理员秘钥, 输入后, 进入重置密码界面, 重置管理员密码

8.安装 jdk 工具, 进入主页面后, 点击左侧导航栏 > Manage jenkins > Global Tool Configuration > 找到 JDK 配置

1
2
3
添加别名(随意): jdk_gomyck
JAVA_HOME(不能是 jre): /usr/share/java-1.8.0/jdk1.8.0_191

9.在同级页面 > 找到 maven 配置 > 点击新增安装

1
2
3
4
选择从 apache 安装, 选择版本: 3.6.2 (根据自己的项目 maven 版本选择)
添加别名(随意): maven-gomyck
勾选自动安装

10.点击保存

配置简单的 CI&CD 环境

配置好构建工具后, 点击左侧菜单 > 新建 item > 输入一个构建项目名称: gomyck-demo(名字最好统一前缀, 按照项目名起后缀), 项目类型选择: freestyle project, 点击确定

进入配置界面, 按照以下操作顺序配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1.通用模块> 勾选: 丢弃旧的构建, 策略为log rotation, 保持构建的天数为: 1, 保持构建的最大个数: 2 (以实际项目需求为准, 确保无回滚风险即可)

2.源码管理模块> 勾选 subversion
  --|Repository URL 为代码仓库绝对路径 exp: http://192.168.1.1/svn/repo/xxxx/my_demo
  --|Credentials 点击添加, 输入对此仓库具有读权限的 svn 账号密码
  --|Local module directory 在~/.jenkins/workspace 下, 会同步创建 item 名称的文件夹, 这个选项会在 item 文件夹下再建立一层文件夹
  --|Repository depth 选择 infinity 即可, 即下载仓库的所有文件
  --|Check-out Strategy 根据自己实际需求选择, 我选的最后一个, 每次更新都还原本地的版本, 然后在更新, 避免冲突
  --|勾选 Quiet check-out
  --|源码库浏览器选择自动

3.构建触发器(如果需要)> 在身份令牌里输入你自己生成的令牌, 然后输入JENKINS_URL/job/holystar/build?token=TOKEN_NAME 即可触发构建

4.构建环境> 勾选 Delete workspace before build starts

5.构建> 添加调用 maven 顶层目标, maven 版本里选择: maven-gomyck, 目标: install

6.构建> 添加执行shell, 在命令中填入:
  echo '开始部署...'
  cp -f -r ./xxxx/target/xxxx.jar /usr/share/gomyck/xxxx
  cd /usr/share/gomyck/xxxx
  sudo ./startup
  echo '部署结束...'

starup 为启动脚本

点击保存后, 即可在 my views 中找到刚才添加的 item, 点击构建, 然后在左侧执行状态中可以查看构建日志

检查服务可用性, 如有疑问, 请在右下角给我留言

2020-05-08更新

jenkins 与 gitlab 集成使用

1.点击gitlab右上角头像, 选择 setting > access Tokens > 生成一个可用的授权 token, 留着给 jenkins 用

2.安装 jenkins, 安装时一并安装 git 插件, gitlab 插件, 后面要用

3.这里默认 jenkins 环境已经安装完毕, 具体可参照本篇文章环境配置部分

4.选择manage jenkins > configure system > 找到 gitlab 配置, 按照下述配置填写, 并点击 test connection 测试是否成功

1
2
3
4
5
Connection name	 随便写

Gitlab host URL	你的 gitlab 仓库位置

Credentials	点击添加, 添加一个 token 类型的 key, 这个 token, 就是第一步生成的

5.新建 ITEM > name: gomyck-demo > 选择 freestyle project

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
GENERAL :
  gitlab connection : 选中配置的连接

源码管理:
  选择 git, 按照提示, 输入即可, 一定要指定分支

构建触发器:
  选择 gitlab webhook
    1. 所有默认选项都不要动, 只点高级: 在 Allowed branches 中选择 Filter branches by name
    2. 在 include 中输入你想要过滤的分支, 也就是说, 只有这个分支提交代码时, 才会触发构建
    (所有分支提交都会触发钩子, 但是 jenkins 要判断这个钩子是哪个分支触发的, gitlab 在调用 jenkins 时, 会传个参数, 告诉 jenkins 是哪个分支触发的钩子)
    3. 在 Secret token 这项后面点 generate, 生成个 secret token, 后面要用

构建环境:
  勾选第一项: 删除工作空间 before starts

构建:
  选 maven 构建, 目标是 install
  新增 shell, 具体看下面

构建后操作:
  Publish build status to GitLab (此操作会把构建结果同步到 gitlab, 具体去 gitlab 工程分支下, 看 commit 记录, 后面会有 对号 或者 叉叉)

构建的 shell

1
2
3
4
5
$ cp -f $WORKSPACE/target/xx.jar /usr/share/gomyck/xx/
$ sshpass -p xxxx ssh [email protected] "mv -f /usr/share/gomyck/xx/xx.jar /usr/share/gomyck/xx/backup/xx.jar.`date "+%Y-%m-%d-%l-%M-%s"`"
$ sshpass -p xxxx scp /usr/share/gomyck/xx/xx.jar  [email protected]:/usr/share/gomyck/xx/
$ mv /usr/share/gomyck/xx/xx.jar /usr/share/gomyck/xx/xx.jar.`date "+%Y-%m-%d-%l-%M-%s"`
$ sshpass -p xxxx ssh [email protected] "cd /usr/share/gomyck/xx/; sh startup"

6.回到 gitlab 选择工程, 点击左侧 setting > integration > 在 url 中填写 构建触发器 时, jenkins 提示的通知地址, 在 secret token 中填写, 在 jenkins 中生成的 secret token

7.保存之后, 点击 test 测试一下, 如果 200, 说明调用成功 (这里有个坑, test 通知传输的分支是 master, 如果与 jenkins filter 的分支不一致是不会触发构建的, 必须使用 git 提交对应的分支才会触发)