记:Jenkins 插件的简单尝试

本文记录了作者使用fir.im进行应用发布过程中遇到的问题及解决方案,包括在MacOS环境下安装Jenkins及其所需Java环境的过程,并介绍了如何安装fir.im上传插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前经常使用的是fir.im的BugHD,和其他平台相比,个人感觉BugHD更快,更人性化。最近闲来无事,想来尝试下fir.im的其它的牛掰的功能想到就去做。

1.直接下载发现Mac OS系统的安装包不能下载,可能因为我这边的网络问题,果断换终端安装了。
2.通过终端安装

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装Jenkins

$ brew install jenkins      

启动jenkins

$ jenkins

这里写图片描述
稍稍等待了一会,终于弄好了。迫不及待的启动jenkins看看到底是什么样子的,请原谅我这个小白~~

但是天不随人愿呀~。系统的Java版本不够,需要安装Java7。经过各种谷歌,百度,终于找到安装Java7的方法

安装Java7的方法。

下载JDK7安装包,[地址]z=(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)直接下载安装就可以打开jenkins了~
这里写图片描述

访问Jenkins

1.浏览器内输入地址:

 http://localhost:8080/
  1. 如果端口冲突,修改端口,xxxx是你的端口号
  defaults write /Library/Preferences/org.jenkins-ci httpPort xxxx

安装fir.im的上传插件

1.下载插件
2.安装插件,详情请看fri.im官方博客

总结

这篇文章只是简单的介绍下fri.im的jenkins中的几个坑。时间有限,以后补充。

<think>由于这是一个涉及Jenkins迁移和Docker化的问题,我将分步骤解释如何将Jenkins主节点从主机迁移到Docker容器中运行,并使用原有的数据目录。同时,我们将构建一个包含所有依赖的Ubuntu镜像。 步骤概述: 1. 备份现有的Jenkins数据(非常重要)。 2. 构建一个包含所需依赖的Docker镜像(基于Ubuntu)。 3. 将现有的Jenkins数据目录挂载到新的容器中。 4. 启动容器进行测试。 5. 测试无误后,替换线上Jenkins主节点(停止原服务,启动新容器)。 详细步骤: 1. 备份现有的Jenkins数据 在主机上,Jenkins数据通常存储在`/var/jenkins_home`(如果是默认安装)或自定义目录。请确保备份该目录。 2. 构建Docker镜像 我们需要创建一个Dockerfile,基于Ubuntu安装Jenkins所需的依赖。这里假设你已经在主机上安装了Java、Maven、Git等工具,并且希望将这些环境打包进镜像。 例如,一个简单的Dockerfile可能如下(根据实际依赖调整): ```Dockerfile # 使用官方Ubuntu镜像 FROM ubuntu:20.04 # 设置环境变量以避免交互式安装(如tzdata) ENV DEBIAN_FRONTEND=noninteractive # 更新包索引并安装必要的软件 RUN apt-get update && apt-get install -y \ openjdk-11-jdk \ maven \ git \ curl \ gnupg \ # 其他你需要的工具 && rm -rf /var/lib/apt/lists/* # 安装Jenkins(可选,但通常我们直接挂载原有数据,所以可以不安装Jenkins包,因为数据中已有) # 但为了确保环境一致,我们可以安装与原来相同版本的Jenkins # 注意:如果原有Jenkins是war包运行,则不需要安装包,只需安装Java即可。 # 例如,下载Jenkins的war包(这里以2.303.1为例) ARG JENKINS_VERSION=2.303.1 RUN curl -fsSL https://get.jenkins.io/war-stable/${JENKINS_VERSION}/jenkins.war -o /usr/share/jenkins/jenkins.war # 创建Jenkins主目录(注意,我们将从主机挂载,所以这里创建目录只是备用) RUN mkdir /var/jenkins_home # 暴露Jenkins默认端口 EXPOSE 8080 # 设置挂载卷(虽然我们启动时会挂载,但这里定义卷可以方便备份等) VOLUME /var/jenkins_home # 设置工作目录 WORKDIR /var/jenkins_home # 设置启动命令(使用java运行war包) CMD ["java", "-jar", "/usr/share/jenkins/jenkins.war"] ``` 构建镜像: ```bash docker build -t my-jenkins:latest . ``` 3. 启动容器进行测试 使用以下命令启动容器,并将原有Jenkins数据目录挂载到容器中: ```bash docker run -d --name jenkins-test -p 8080:8080 -v /path/to/your/jenkins_home:/var/jenkins_home my-jenkins:latest ``` 注意:将`/path/to/your/jenkins_home`替换为你的Jenkins数据目录的实际路径。 4. 测试 访问宿主机的8080端口(如http://localhost:8080)查看Jenkins是否正常启动,并检查原有数据是否正常。 注意:由于迁移到新的环境,可能需要重新配置一些路径(如JDK、Maven等工具的位置)。如果原有配置中使用了绝对路径(指向主机上的路径),那么在容器中可能会找不到。因此,建议在Jenkins系统配置中,使用容器内的路径重新配置这些工具。 5. 替换线上Jenkins 测试无误后,可以停止原来的Jenkins服务(如果是直接运行在主机上,使用systemctl或service停止),然后使用上述docker命令启动新的容器(注意使用相同的端口和数据目录)。为了持久化运行,建议使用restart策略,例如: ```bash docker run -d --restart unless-stopped --name jenkins -p 8080:8080 -v /path/to/your/jenkins_home:/var/jenkins_home my-jenkins:latest ``` 注意事项: - 确保容器内的用户有权限访问挂载的数据目录。如果原有目录的权限是特定用户(如jenkins用户),而容器内默认以root运行,则可能会遇到权限问题。解决方法: a) 在Dockerfile中创建jenkins用户,并指定以该用户运行(需要确保该用户的UID与主机上的jenkins用户UID一致)。 b) 或者,在启动容器时使用`-u`参数指定用户(如`-u 1000`,其中1000是主机上jenkins用户的UID)。 - 如果原有Jenkins使用了一些主机特有的设置(如挂载的NFS目录、Docker socket等),需要在启动容器时通过`-v`或`--device`等参数进行相应的挂载。 示例Dockerfile中添加用户并切换用户(如果原有主机jenkins用户的UID是1000): ```Dockerfile # ... 之前的步骤 # 创建jenkins用户(使用固定的UID 1000) RUN useradd -d "/var/jenkins_home" -u 1000 -m -s /bin/bash jenkins # 切换用户(注意:切换用户后,VOLUME挂载的目录权限可能还是root,所以需要在启动时确保挂载目录的权限) USER jenkins # 设置启动命令 CMD ["java", "-jar", "/usr/share/jenkins/jenkins.war"] ``` 或者,启动容器时指定用户: ```bash docker run -d --name jenkins-test -u 1000 -p 8080:8080 -v /path/to/your/jenkins_home:/var/jenkins_home my-jenkins:latest ``` 如果遇到权限问题,也可以尝试在主机上修改数据目录的权限(确保1000用户可访问),或者使用`chown -R 1000:1000 /path/to/your/jenkins_home`。 另外,如果原有Jenkins使用了插件(如Docker插件)需要访问宿主机的Docker,可以挂载Docker socket: ```bash -v /var/run/docker.sock:/var/run/docker.sock ``` 以上步骤完成后,即可完成Jenkins主节点的迁移。 §§相关问题§§: 1. 如何备份和恢复Jenkins数据? 2. 在Docker容器中运行Jenkins时,如何管理插件和配置? 3. 如何优化Jenkins Docker镜像的大小? 4. 在容器中运行Jenkins时,如何设置定时备份?</think>### 解决方案:将 Jenkins 主节点迁移到 Docker 容器 #### 核心步骤 1. **备份原数据** 2. **构建包含依赖的 Ubuntu 镜像** 3. **挂载原数据目录启动容器** 4. **验证后替换线上节点** --- ### 1. 备份原 Jenkins 数据 ```bash # 停止 Jenkins 服务 sudo systemctl stop jenkins # 备份数据目录(默认路径 /var/lib/jenkins) sudo tar -czvf jenkins_backup.tar.gz /var/lib/jenkins ``` --- ### 2. 构建 Docker 镜像 创建 `Dockerfile` 安装所需依赖(示例): ```dockerfile # Dockerfile FROM ubuntu:22.04 # 安装基础依赖 RUN apt-get update && apt-get install -y \ openjdk-11-jdk \ git \ maven \ python3 \ docker.io \ # 如需在容器内执行 Docker 命令 curl # 安装 Jenkins ARG JENKINS_VERSION=2.414.3 RUN curl -L https://get.jenkins.io/war-stable/${JENKINS_VERSION}/jenkins.war -o /usr/share/jenkins/jenkins.war # 暴露端口 EXPOSE 8080 50000 # 入口点 ENTRYPOINT ["java", "-jar", "/usr/share/jenkins/jenkins.war"] ``` 构建镜像: ```bash docker build -t my-jenkins:1.0 . ``` --- ### 3. 启动测试容器(挂载原数据) ```bash docker run -d \ --name jenkins-test \ -p 8080:8080 \ -p 50000:50000 \ -v /var/lib/jenkins:/var/jenkins_home \ # 关键:挂载原数据 -v /var/run/docker.sock:/var/run/docker.sock \ # 允许容器内使用 Docker my-jenkins:1.0 ``` #### 关键参数说明: | 参数 | 作用 | |------|------| | `-v /var/lib/jenkins:/var/jenkins_home` | 挂载原数据目录到容器标准路径 | | `-v /var/run/docker.sock:/var/run/docker.sock` | 允许容器内操作 Docker(需安装 docker.io) | | `-p 8080:8080` | 暴露 Web 界面端口 | | `-p 50000:50000` | 暴露 Agent 通信端口 | --- ### 4. 验证迁移 1. 访问 `http://服务器IP:8080` 检查 Jenkins 是否正常 2. 验证: - 作业配置是否完整 - 构建历史是否保留 - 插件是否正常工作 - Agent 连接是否正常 --- ### 5. 替换线上节点 ```bash # 停止原 Jenkins 服务 sudo systemctl stop jenkins sudo systemctl disable jenkins # 禁止开机启动 # 启动新容器(使用相同数据目录) docker run -d \ --name jenkins-prod \ --restart=always \ # 自动重启 -p 8080:8080 \ -p 50000:50000 \ -v /var/lib/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ my-jenkins:1.0 ``` --- ### 6. 权限问题处理 若遇到文件权限错误(容器用户 vs 宿主机用户): ```bash # 方法1:启动时指定 UID(推荐) docker run -u $(id -u jenkins):$(id -g jenkins) ... # 方法2:修改宿主机目录权限 sudo chown -R 1000:1000 /var/lib/jenkins # 容器默认使用 UID 1000 ``` --- ### 迁移验证清单 | 检查项 | 验证方式 | |--------|----------| | 作业配置 | 查看任意项目的配置页面 | | 构建历史 | 检查历史构建录 | | 插件状态 | 管理界面 > 插件管理 | | 凭据系统 | 检查密钥是否可正常使用 | | Agent 连接 | 创建测试 Agent 连接 | | 存储空间 | `df -h` 检查挂载情况 | --- ### 常见问题解决 1. **插件兼容性** - 检查 `jenkins_home/plugins/` 目录是否完整迁移 - 删除 `jenkins_home/plugins/*.jpi.pinned` 文件解除锁定 2. **Java 版本冲突** 确保 Dockerfile 中的 JDK 版本与原环境一致(检查 `java -version`) 3. **文件权限问题** 使用 `docker exec -it jenkins-test ls -l /var/jenkins_home` 检查容器内文件权限 --- ### 最终架构图 ```mermaid graph LR A[Docker容器] --> |挂载| B[/var/lib/jenkins] A --> |连接| C[Docker Socket] D[浏览器] --> |8080端口| A E[Jenkins Agent] --> |50000端口| A ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值