在 Debian 上,Jenkins 通常作为 CI/CD 控制平面运行,负责拉取代码、执行构建与测试、打包制品,并通过 SSH、SCP、rsync 或部署脚本把产物发布到目标 Debian 主机,实现从代码提交到上线的自动化闭环。
部署与网络准备
- 安装 Java 11/17(Jenkins 运行依赖),例如:sudo apt update && sudo apt install -y openjdk-11-jdk;验证:java -version。
- 添加 Jenkins 官方 APT 仓库(推荐签名方式):
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.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 -y jenkins。
- 启动与自启:sudo systemctl enable --now jenkins;检查状态:sudo systemctl status jenkins。
- 访问与初始化:浏览器打开 http://<服务器IP>:8080,初始管理员密码在 /var/lib/jenkins/secrets/initialAdminPassword。
- 防火墙放行:sudo ufw allow 8080/tcp;如使用 JNLP Agent 或分布式构建,放行 50000/tcp。
- 插件与更新源:在插件管理器中更换更新站点为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 以加速;常用插件包括 Pipeline、Git、Credentials Binding、Docker、Kubernetes CLI。
安全与权限配置
- 启用安全:进入 Manage Jenkins → Security → Enable security,选择 Logged-in users can do anything,创建管理员用户,禁用匿名访问。
- 凭据管理:在 Manage Jenkins → Credentials → System → Global credentials 添加 SSH 私钥(类型:SSH Username with private key,ID 例如 github-ssh),用于与 Git 仓库和目标主机免密交互。
- 代码托管认证:为 GitHub/GitLab 添加 Deploy Keys 或个人访问令牌(PAT),在 Jenkins 任务中以凭据方式引用,避免明文密码。
构建与部署流水线
- 创建任务:新建 Pipeline 项目,选择 Pipeline script from SCM,配置 Git 仓库与凭据;在构建阶段执行单元测试、打包(如 mvn/ npm/ go build),在构建后阶段归档产物、发布报告。
- 触发方式:
- 轮询:在任务中配置 Poll SCM(如 H/5 * * * *)。
- Webhook:在 GitHub 仓库 Settings → Webhooks 添加 http:///github-webhook/,事件选 push;Jenkins 任务勾选 GitHub hook trigger for GITScm polling。
- 示例声明式流水线(可按需裁剪):
pipeline {
agent any
stages {
stage(‘拉取代码’) { steps { git ‘git@github.com:org/repo.git’ } }
stage(‘单元测试’) { steps { sh ‘mvn test’ } }
stage(‘打包’) { steps { sh ‘mvn -DskipTests package’ } }
stage(‘部署到测试’) {
steps {
sh ‘rsync -avz target/app.jar user@test-host:/opt/app/’
sh ‘ssh user@test-host “sudo systemctl restart myapp”’
}
}
}
post { always { echo “构建完成:${currentBuild.fullDisplayName}” } }
}
- 发布到生产:建议基于 标签(git tag) 或 手动审批 执行,结合 Jenkinsfile 中的 when 条件与 input 步骤,降低风险。
扩展与运维建议
- 分布式构建:引入 Jenkins Agent(在 Manage Nodes 添加)分担构建负载,Master 负责调度,Agent 负责执行,提高并行度与稳定性。
- 性能与资源:生产建议 4–8 核 CPU、8–16GB 内存、50–100GB 磁盘(按并发与制品规模调整),并定期清理工作空间与旧构建产物。
- 监控与备份:使用 监控插件 观察队列与节点负载;定期备份 $JENKINS_HOME(含 jobs、plugins、credentials 等),保障可恢复性。
- 自动化运维:用 Ansible 标准化安装与配置(安装包、systemd、防火墙、Jenkins 配置等),减少人为差异与重复劳动。