家庭NAS:Docker 部署 Jenkins 持续集成环境

2021-01-31

介绍

NAS 搭建起来之后,接下来想开发一些后端服务运行在上面。对于后端应用来说,持续集成是一个很麻烦的东西,需要由自动化工具来解决。因此自然想到了 Jenkins,本文介绍如何在 OpenMediaVault 上通过 Docker 部署 Jenkins。

镜像

社区中有多个 Jenkins 镜像可供选择。最终选择了下载量排名第二的 jenkins/jenkins

之所以没选排名第一的 jenkins 镜像,是因为这个镜像是一个废弃镜像,已经两年多没有维护了。

我选择 jenkins/jenkins 镜像,GitHub 首页位于这里

最简单的运行方法是:

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

Jenkins 数据默认会存在 /var/jenkins_home 下,但是不会持久化。

下面命令把数据保存在磁盘上:

docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

在文档中还提到了数据备份,即只要备份 jenkins_home 所对应的目录即可。

实践

好,理论知识学完了,下面开始实践。

首先 ssh 登录到 NAS,进行镜像下载。

docker pull jenkins/jenkins

接下来去 NAS 的 SSD 硬盘创建 jenkins_home 目录:

/srv/dev-disk-by-uuid-1b9c0013-e50e-4ba5-9f16-2e8be704b742/ssd3_bk/jenkins_home

创建容器:

docker run -d --name jenkins -p 8081:8080 -p 50000:50000 -v /srv/dev-disk-by-uuid-1b9c0013-e50e-4ba5-9f16-2e8be704b742/ssd3_bk/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

遇到了一个问题,是容器没有挂载目录的权限。根据 Permission denied - /var/jenkins_home/copy_reference_file.log #177,解决方法是修改挂载目录的权限:

sudo chown 1000 volume_dir

之后重启容器就能跑起来了。

Jenkins 配置

解锁 Jenkins:

初始密码存在图中目录下,直接去 SSD 中寻找。

安装插件,选择推荐的就行,后续需要什么自己再装:

插件安装过程中:

创建完管理员账号后,进入 Jenkins 首页:

可选插件为空

在【插件管理】中我遇到一个问题,即可选插件为空,刷不出来:

还是网络的问题,有三种解决方法,一种是解决网络问题,一种是更换为国内源,一种是手动上传插件。

由于我对 Jenkins 插件暂时需求不强烈,先用手动上传临时对付一段时间。

小结

在 NAS 上部署 Jenkins 完成了,下一步思考的是如何将它真正用起来。

参考资源