Jenkins安装配置

Jenkins 是一个开源免费的持续集成和持续部署的工具,也就是 CI/CD,是Java语言编写。通过流水线(Pipeline)语法,可以定义构建步骤和操作发布。可以很好的节省开发人员的编译安装部署所浪费的时间。下面简单的介绍下我是如何安装部署这个工具的。

概念

系统更新通常是流程如下:

  • 拉取代码
  • 安装编译
  • 测试结果
  • 打包发布

传统运维通常是通过 shell 脚本进行处理的,Jenkins 则是对这个流程进行了封装简化。使得语法更简单,更好管理。处理失败时还可以触发邮件通知,让相关人员及时发现问题所在。设置完成后就几乎不需要人去处理发布过程了,减少人力成本且高效。

打包发布的方式有很多种,常见的有文件覆盖、发布镜像、更新容器等。线上的容器架构打包发布可以直接推送到镜像仓库中,类似 Docker Hub 中。再通过 K8S 更新线上容器等,感兴趣的可自行扩展。

安装配置

前置要求

  • 安装 Docker
  • 具备 Docker 和 Docker compose 的使用经验

启动

官方文档-安装Jenkins 里使用了 Docker 命令的方式安装。但是我深入学习过 Docker 觉得命令管理并不符合我的胃口,所以使用 docker-compose 来管理 Jenkins 容器。 原启动命令如下:

1
2
3
4
5
6
7
8
9
docker run \
-u root \ #1
--rm \
-d \
-p 8080:8080 \ #2
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \ #3
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean #4

注意:

行尾的 #1、#2、#3、#4 是为了方便与 docker-compose.yml 里的设置对应,使用时需要去除。

转化成 docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3.8'

services:
jenkinsci:
image: jenkinsci/blueocean:1.25.3 #4
container_name: jenkinsci
user: root #1
ports: #2
- "8080:8080"
- "50000:50000"
volumes: #3
- jenkins-data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock

volumes:
jenkins-data:
external: true

知识点:

  1. external 参数可以去除默认的前缀
  2. window 下 Docker Desktop 指定 /var/run/docker.sock 会直接使用 wsl 里的目录
  3. window 下 Docker Desktop 默认支持 docker-compose

启动 & 日常管理

1
2
3
4
5
6
7
8
9
# 初次启动,变动 docker-compose.yml 里更新时
docker-compose up -d

# 启动
docker-compose start
# 重启
docker-compose restart
# 关闭
docker-compose stop

设置

完成启动后,可以通过 http://localhost:8080 访问到 Jenkins。接下来是比较简单的安装向导。请直接操作或对照官方文档进行设置。

访问 http://localhost:8080

获取访问密码

安装推荐插件
安装推荐插件

设置管理员

配置访问域名

完成配置,重启

注意:

这里需要手动重启 Jenkins 容器,界面操作无法按预期重启。

登录Jenkins后台

更新 & 安装插件

我当前最新的 Jenkins 镜像是 1.25.3。引导时使用推荐插件安装,进入后还是有需要进行安全升级插件。操作步骤如下:

  1. 初次启动,查看相着告警
    警告信息

  2. Manage Jenkins -> Manage Plugins -> Updates 标签

  3. 黄色提示的勾选,但推荐全部勾选(包含弃用、可升级的说明)
    可更新插件列表

  4. Download now and install after restart 安装
    更新插件
    完成更新

图中有报错,但是看插件名,影响不大

  1. 重启 Jenkins Docker 容器

安装必要的插件,在 Manage Jenkins -> Manage Plugins -> Available 标签里查找以下插件:

  • Docker Pipeline:
  • SSH Pipeline Steps:ssh 流水线命令

语法缺失会报类型以下的错误信息:

这里是缺失了 sshPut 的语法。直接搜索错误解决,也可尝试安装相关的 ssh pipeline 来解决,推荐前者,因为调整插件需要重启 jenkins。

1
java.lang.NoSuchMethodError: No such DSL method 'sshPut' found among steps

小结

当前已经把 Jenkins 的环境已经准备好了,下一篇我将为大家带来 Jenkins 的日常使用,以示例为主。