Jenkins 节点配置,为了安全性进行定期备份

上篇文章通过 Docker 在树莓派上搭建 Jenkins,解决官方镜像无法在树莓派上运行的问题 部署好了 Jenkins,那么在使用上,我们还需要进行一些简单配置。

节点配置

用 Docker 安装的 Jenkins,如何不配置节点的话,所有新建的 job 都会在 Docker 环境执行,这时候会出现很多限制,比如你想运行一个NodeJS脚本, Docker 环境下没有Node环境,这时候你总不能再去 Jenkins 的 Docker 里安装 NodeJS吧,如果还需要 JavaPHP等一堆的环境等着你。这些道是还好说,如果你想用树莓派上的 Jenkins 编译iOS的程序,那么就基本不可能了,因为 Xocde可不能在树莓派上安装。

上面这些问题,其实只需要在 Jenkins 上增加节点,就可以解决。

Jenkins 的节点是指可在 Jenkins 中配置的独立计算机,它可以在这个独立计算机上构建、测试和部署项目。

将宿主机添加为节点

Jenkins 在 docker 中运行,那么运行 Docker 的机器,对于 Jenkins 来说,也是完全隔离的环境,我们可以将当前的宿主机器添加为节点。

1. 新建节点

系统管理中,找到节点管理
image.png
然后新建节点,填写你机器的名字
image.png

按如下提示,填写信息
image.png

2. 生成 ssh证书

从上图的最后一行可以看出,添加方式是 SSH, 用到 SSH,那么公钥和私钥证书是必须的
为了生成证书,首先我们在树莓派生成 SSH key, 用以下命令:

ssh-keygen -t rsa -C "[email protected]"

会在~/.ssh目录下生成id_rsa, 和id_rsa.pub文件。

3. 将id_rsa.pub内容复制到目标机器

然后我们通过cat id_rsa.pubid_rsa.pub 的内容复制,然后粘贴到树莓派(目标机器)的 ~/.ssh/authorized_keys文件中,这样SSH登录的时候,会免密登录。

4. 在 Jenkins 的镜像内部,SSH 登录目标机器一次

执行 sudo docker-compose exec jenkins bash(需要在 docker-compose.yml 目录执行)会进入到 Jenkins 镜像中,此时用 ssh 登录一次目标机器。

ssh [email protected]

此时会弹出下面的提示,填写 yes
image.png

最后exit退出镜像

5. 继续第 1 步,配置节点

配置可以按下图所示进行。
image.png

上图箭头的位置,需要添加一个验证方式。
image.png
image.png
点击保存

6. 启动节点

回到节点列表,点击新添加的节点进去,有启动和断开的按钮(一般是启动了才有断开,第一次是启动)
image.png
启动的时候报错了,错误如下:

java.io.IOException: Java not found on hudson.slaves.SlaveComputer@1630274. Install Java 8 or Java 11 on the Agent. at hudson.plugins.sshslaves.JavaVersionChecker.resolveJava(JavaVersionChecker.java:83) at hudson.plugins.sshslaves.SSHLauncher.lambda$launch$0(SSHLauncher.java:453) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) [04/13/23 11:14:37] Launch failed - cleaning up connection [04/13/23 11:14:37] [SSH] Connection closed.

看来是没有安装 目标机器Java 导致的。

7. 在树莓派上安装 Java

(1)更新 Raspberry Pi 软件包列表和已安装的软件包,使用以下命令:

sudo apt-get update
sudo apt-get upgrade

(2)安装 OpenJDK,使用以下命令:

sudo apt-get install openjdk-11-jdk

这里很慢,我用了两三个小时。你可以选别的快的方式。

安装完成之后,再次启动节点。

8. 节点启动完成

启动完成之后,可以在节点列表看
image.png

启动的过程中会有日志,可以根据日志排查错误。

定期备份

在树莓派上,总感觉如果某一天 SD 坏了,或者树莓派坏了,Jenkins 就没了,我们要做好备份。
GitHub - sue445/jenkins-backup-script: archive jenkins setting and plugins 这里有一个专门备份 Jenkins 的项目,我们可以利用这个项目。

1. 新建一个 自由风格的项目

名称叫jenkins-backup-script
image.png

2. job 节点 配置

节点项目运行节点选择为上面添加的树莓派
image.png

因为我们使用 Docker-compose 部署 Jenkins 的时候,通过volumes 的方式,将Jenkins 的目录挂载到了./app/jenkins 目录,所以我们备份的时候,只需要备份这个目录即可。

3. git配置

https://github.com/sue445/jenkins-backup-script.git配置到 git 部分,Jenkins 在执行的时候,会自动将这个项目拉到 workspace。为了保持稳定,将分支指定为 最近的0.1.10,具体如下图所示。
image.png

4. 定时构建

按如下配置,会在每天晚上3 点多执行一次。
image.png

5. 配置 shell

构建部分,添加 shell

./jenkins-backup.sh /home/pi/docker-compose/app/jenkins /mnt/data/jenkins_backup/backup_`date +"%Y%m%d%H%M%S"`.tar.gz

/home/pi/docker-compose/app/jenkins这是 Jenkins 的挂载目录
/mnt/data/jenkins_backup这个是挂载的一块硬盘,之前文章有提到如何挂载。 树莓派挂载硬盘,并且搭建 smb 服务
image.png

6. 执行 job

点击立即构建,失败了,看控制台日志,发现有一些目录权限的错误存在。
image.png
对这些目录修改权限:

sudo chmod -R 777 /mnt/data/jenkins_backup

再次执行立即构建,成功了
可以在/mnt/data/jenkins_backup 目录查看,有了一个备份文件
image.png

这样就可以保证在每天晚上 3 点多自动备份依次。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注