云电脑运行持续集成CI,网站自动打包测试
在云电脑上跑持续集成(CI),核心目标是让代码提交后自动触发打包和测试,减少人工操作。
本文以 Jenkins 为例,从零开始带你完成环境搭建、任务配置到结果验证,适合刚接触 CI 的运维或开发人员。
云电脑环境准备与基础依赖安装
云电脑通常指云端提供的虚拟桌面或计算实例,系统多为 Windows 或 Linux。
以下步骤以 Linux 云电脑(Ubuntu 20.04/22.04)为例,Windows 云电脑可参考对应命令调整。
1. 更新系统并安装 Java 环境
Jenkins 依赖 Java,推荐安装 OpenJDK 11 或 17。
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version
如果输出显示 openjdk version "11.0.x",说明安装成功。
2. 安装 Jenkins
添加官方仓库并安装:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install -y jenkins
启动服务并设置开机自启:
sudo systemctl start jenkins
sudo systemctl enable jenkins
3. 开放防火墙端口
Jenkins 默认监听 8080 端口。如果云电脑有安全组或防火墙,需放行 8080。
sudo ufw allow 8080
4. 获取初始管理员密码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
复制输出的密码,后续在浏览器中解锁 Jenkins。
配置 Jenkins 与网站项目自动打包
在浏览器访问 http://云电脑公网IP:8080,输入初始密码。
选择“安装推荐的插件”,等待完成。
创建管理员账号后,进入主界面。
1. 安装必要插件
进入 Manage Jenkins -> Plugins -> Available,搜索并安装:
- Git plugin(拉取代码)
- NodeJS Plugin(如果网站是前端项目)
- Pipeline(流水线)
安装后重启 Jenkins。
2. 配置全局工具
进入 Manage Jenkins -> Global Tool Configuration:
- JDK:指定已安装的 Java 路径,如
/usr/lib/jvm/java-11-openjdk-amd64 - Git:指定
git路径,通常自动检测 - NodeJS:如果前端项目需要,添加 NodeJS 版本(如 16.20.0),并勾选自动安装
3. 创建流水线任务
点击 New Item,输入任务名称(如 website-ci),选择 Pipeline,点击 OK。
在任务配置页,找到 Pipeline 部分:
- Definition 选择
Pipeline script from SCM - SCM 选择
Git - Repository URL 填写你的网站代码仓库地址(如
https://github.com/yourname/website.git) - 凭据按需添加(用户名密码或 SSH 密钥)
- Script Path 默认为
Jenkinsfile
保存后,Jenkins 会从仓库根目录读取 Jenkinsfile 执行流水线。
编写 Jenkinsfile 实现自动打包与测试
在网站项目根目录创建 Jenkinsfile,内容如下(以 Node.js 前端项目为例):
pipeline {
agent any
tools {
nodejs 'NodeJS-16' // 名称需与全局工具配置中一致
}
stages {
stage('拉取代码') {
steps {
checkout scm
}
}
stage('安装依赖') {
steps {
sh 'npm install'
}
}
stage('打包构建') {
steps {
sh 'npm run build'
}
}
stage('运行测试') {
steps {
sh 'npm test'
}
}
}
post {
always {
echo '流水线执行完毕'
}
success {
echo '打包测试成功'
}
failure {
echo '打包测试失败,请检查日志'
}
}
}
关键点说明:
tools中的nodejs 'NodeJS-16'名称必须与全局工具配置中填写的 Name 完全一致。npm run build和npm test需根据项目package.json中的脚本名称调整。- 如果项目使用其他语言(如 Python、Java),将
sh命令替换为对应构建命令即可。
将 Jenkinsfile 提交到代码仓库。
回到 Jenkins 任务页面,点击 Build Now,即可触发第一次自动打包测试。
常见报错与避坑指南
1. 权限不足导致 npm 安装失败
现象:npm ERR! Error: EACCES: permission denied。
解决:在 Jenkins 全局工具配置中,为 NodeJS 安装目录设置可写权限,或改用 npm install --unsafe-perm。
2. 云电脑内存不足导致构建中断
现象:构建过程中进程被 killed。
解决:为云电脑分配至少 2GB 内存,或增加 swap 分区。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
3. 流水线找不到 Jenkinsfile
检查 Script Path 是否填写正确,确保文件已推送到仓库默认分支。
4. 测试脚本未配置导致失败
如果 package.json 中没有 test 脚本,npm test 会报错。可以在 Jenkinsfile 中先注释掉测试阶段,或补充测试脚本。
5. 云电脑重启后 Jenkins 未自动启动
确保已执行 sudo systemctl enable jenkins,否则每次重启需手动启动。
验证自动打包测试是否生效
完成以上配置后,按以下步骤验证:
- 在 Jenkins 任务页面点击
Build Now,观察Build History中出现新的构建记录。 - 点击构建编号,选择
Console Output,查看日志是否依次输出“拉取代码”、“安装依赖”、“打包构建”、“运行测试”。 - 如果所有阶段显示蓝色或绿色,最后输出“打包测试成功”,说明 CI 流程正常运行。
- 修改代码仓库中任意文件并提交,Jenkins 应自动触发新构建(需在任务中勾选
Poll SCM或配置 Webhook)。 - 构建成功后,在云电脑的 Jenkins 工作目录(
/var/lib/jenkins/workspace/任务名称)中检查是否生成了打包产物(如dist目录)。
如果构建失败,根据 Console Output 中的报错信息,回看避坑指南对应条目进行修复。
关于自动触发与通知
默认情况下,Jenkins 不会自动检测代码变更。
可以在任务配置中勾选 Build Triggers -> Poll SCM,设置定时检查(如 H/5 * * * * 表示每 5 分钟检查一次)。
更推荐在代码仓库(GitHub/GitLab)中配置 Webhook,指向 http://云电脑IP:8080/github-webhook/,实现提交后立即触发。
如果希望构建结果通知到邮箱或钉钉,可安装对应插件并配置。
最后提醒:云电脑的 IP 和端口可能因重启而变化,建议使用弹性公网 IP 或内网穿透工具保持访问地址稳定。
生产环境建议将 Jenkins 部署在内网,通过 VPN 或跳板机访问,避免直接暴露在公网。