文章目录[隐藏]
上篇文章通过 Docker 在树莓派上搭建 Jenkins,解决官方镜像无法在树莓派上运行的问题 部署好了 Jenkins,那么在使用上,我们还需要进行一些简单配置。
节点配置
用 Docker 安装的 Jenkins,如何不配置节点的话,所有新建的 job 都会在 Docker 环境执行,这时候会出现很多限制,比如你想运行一个NodeJS
脚本, Docker 环境下没有Node
环境,这时候你总不能再去 Jenkins 的 Docker 里安装 NodeJS
吧,如果还需要 Java
、PHP
等一堆的环境等着你。这些道是还好说,如果你想用树莓派上的 Jenkins 编译iOS
的程序,那么就基本不可能了,因为 Xocde
可不能在树莓派上安装。
上面这些问题,其实只需要在 Jenkins 上增加节点,就可以解决。
Jenkins 的节点是指可在 Jenkins 中配置的独立计算机,它可以在这个独立计算机上构建、测试和部署项目。
将宿主机添加为节点
Jenkins 在 docker 中运行,那么运行 Docker 的机器,对于 Jenkins 来说,也是完全隔离的环境,我们可以将当前的宿主机器添加为节点。
1. 新建节点
在系统管理
中,找到节点管理
然后新建节点
,填写你机器的名字
按如下提示,填写信息
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.pub
将id_rsa.pub
的内容复制,然后粘贴到树莓派(目标机器)的 ~/.ssh/authorized_keys
文件中,这样SSH
登录的时候,会免密登录。
4. 在 Jenkins 的镜像内部,SSH 登录目标机器一次
执行 sudo docker-compose exec jenkins bash
(需要在 docker-compose.yml
目录执行)会进入到 Jenkins 镜像中,此时用 ssh 登录一次目标机器。
ssh [email protected]
此时会弹出下面的提示,填写 yes
最后exit
退出镜像
5. 继续第 1 步,配置节点
配置可以按下图所示进行。
上图箭头的位置,需要添加一个验证方式。
点击保存
6. 启动节点
回到节点列表,点击新添加的节点进去,有启动和断开的按钮(一般是启动了才有断开,第一次是启动)
启动的时候报错了,错误如下:
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. 节点启动完成
启动完成之后,可以在节点列表看
启动的过程中会有日志,可以根据日志排查错误。
定期备份
在树莓派上,总感觉如果某一天 SD
坏了,或者树莓派坏了,Jenkins 就没了,我们要做好备份。
GitHub - sue445/jenkins-backup-script: archive jenkins setting and plugins 这里有一个专门备份 Jenkins 的项目,我们可以利用这个项目。
1. 新建一个 自由风格的项目
名称叫jenkins-backup-script
2. job 节点 配置
节点项目运行节点选择为上面添加的树莓派
因为我们使用 Docker-compose 部署 Jenkins 的时候,通过volumes
的方式,将Jenkins 的目录挂载到了./app/jenkins
目录,所以我们备份的时候,只需要备份这个目录即可。
3. git配置
将https://github.com/sue445/jenkins-backup-script.git
配置到 git 部分,Jenkins 在执行的时候,会自动将这个项目拉到 workspace。为了保持稳定,将分支指定为 最近的0.1.10
,具体如下图所示。
4. 定时构建
按如下配置,会在每天晚上3 点多
执行一次。
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 服务
6. 执行 job
点击立即构建
,失败了,看控制台日志,发现有一些目录权限的错误存在。
对这些目录修改权限:
sudo chmod -R 777 /mnt/data/jenkins_backup
再次执行立即构建
,成功了
可以在/mnt/data/jenkins_backup
目录查看,有了一个备份文件
这样就可以保证在每天晚上 3 点多自动备份依次。
发表回复