家用住宅主机Linux Jenkins
很多人觉得CI/CD流水线是公司服务器才玩得转的东西,其实只要一台能跑Linux的旧电脑,在家也能搭一套自动化发布系统。
这篇教程我会用最直白的方式,带你从零开始把家用机变成Jenkins自动化部署中心。
先看看你需要准备什么
硬件方面,任意一台能装Linux的电脑都行,哪怕是几年前的旧笔记本或低功耗主机(比如树莓派)。
操作系统推荐Ubuntu Server 22.04 LTS,稳定且社区支持好。
你需要确保这台机器能联网,并且有一个本地静态IP(或者你在路由器上做MAC绑定,防止重启后IP变化)。
如果家中有公网IP最好,没有的话用内网局域网也能用,区别只是外部无法直接访问Jenkins面板。
软件方面,你得准备好Git仓库(GitHub/Gitee/GitLab都行)以及目标站点服务器的SSH登录信息。
本站点可以是同一台机器上的Nginx服务,也可以是另一台内网服务器。
在家用机上安装Jenkins(一步都不能省)
登录你的Linux系统,先更新软件包并安装Java(Jenkins依赖Java 11或17):
sudo apt update
sudo apt install openjdk-11-jdk git -y
验证Java版本:java -version。
接着添加Jenkins官方仓库并安装:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins -y
安装完成后,Jenkins会默认监听8080端口。
先确认服务已启动:sudo systemctl status jenkins。
如果没启动,用sudo systemctl start jenkins。
下一步要放行防火墙。
如果你用了ufw(Ubuntu自带),执行:
sudo ufw allow 8080
sudo ufw reload
现在在浏览器里输入http://你的家用机IP:8080,看到“解锁Jenkins”页面说明安装成功。
初始密码用sudo cat /var/lib/jenkins/secrets/initialAdminPassword查看。
复制粘贴进去,按提示安装推荐插件并创建管理员用户。
配置CI/CD任务:从拉代码到自动发布
登录Jenkins后,我们创建一个“自由风格软件项目”。
假设你的代码托管在GitHub,目标站点是一台内网服务器(IP为192.168.1.100),通过SSH部署。
- 源码管理:选“Git”,填写仓库URL,添加注册凭据(用户名/密码或SSH密钥)。如果仓库是私有的,需要先在本机生成SSH密钥并添加到GitHub:
ssh-keygen -t rsa -b 4096,然后把公钥加到GitHub的SSH设置里,私钥路径填入Jenkins凭据管理。 - 构建触发器:勾选“Poll SCM”或“GitHub hook trigger”。家用机没有公网IP的话,只能选轮询(比如每分钟检查一次:
* * * * *)。 - 构建:添加构建步骤“执行shell”,写你的构建命令。比如一个Node.js项目可以写:
npm install
npm run build
如果你的站点是静态文件,构建完成后需要复制到服务器目录。
- 构建后操作:比如通过SSH推送文件到目标服务器。推荐安装“Publish Over SSH”插件,然后在系统设置里配置远程服务器的IP、私钥和目录。构建后操作选择“Send build artifacts over SSH”,设置源文件路径和目标目录。
保存任务后,手动点“立即构建”测试一次。
如果一切正常,下次你往Git仓库推送代码时(或者轮询间隔内),Jenkins就会自动拉取、构建并发布。
家用机必须留意的三个坑
- IP变化:家用宽带上网多是动态IP,内网IP也可能变。推荐在路由器里给这台主机绑定静态内网IP,否则Jenkins地址会变。如果你需要外网访问,必须配合DDNS(如花生壳)和端口转发。
- 端口被运营商封锁:国内家庭宽带的80、443端口几乎不可用,Jenkins的8080端口通常正常。如果公网访问不了,就老老实实走内网或使用反向代理如frp。
- 权限与SSH密钥:Jenkins默认以
jenkins用户运行,该用户的家目录在/var/lib/jenkins。你生成的SSH密钥要放到该目录的.ssh下,并确保权限为600。否则SSH连接会失败。
验证你的自动化流水线是否生效
测试方法很简单:修改你Git仓库里任一文件(比如首页标题),提交并推送到远端。
如果配置了轮询,等一分钟左右(具体取决于轮询间隔),登录Jenkins查看对应任务是否自动触发并构建成功。
然后访问你的站点,确认内容已更新。
如果一切顺利,你的家用住宅主机Jenkins CI/CD自动化发布站点就正式运行了。
高频问题解答
Q:家用机性能太弱,跑Jenkins会卡吗?
A:Jenkins本身对资源要求很低,512MB内存就能跑。如果你的构建任务很重(比如编译大型项目),建议使用主/从架构,家用机只当master。
Q:Jenkins面板中文乱码?
A:安装“Locale”插件,在系统管理里设置语言为“zh_CN”,重启即可。
Q:构建完成后站点没更新
A:先检查构建日志,看部署脚本是否执行成功。SSH到目标服务器手动运行部署命令验证脚本有无错误。常见问题是目标目录权限或路径写错。
如果你正在用自己的家用机折腾自动化发布,建议先按本文步骤完整走一遍,确认网络和SSH连接都没问题再添加复杂构建逻辑。
遇到异常时优先查看构建日志和控制台输出,80%的问题都能靠日志解决。