温馨提示×

如何在Debian上使用Jenkins CI/CD

小樊
37
2025-12-28 16:26:09
栏目: 智能运维

在 Debian 上使用 Jenkins 搭建 CI/CD 的完整步骤

一 环境准备与安装

  • 更新系统并安装 Java 11(Jenkins 常用且稳定),验证版本:
    • 命令:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 添加 Jenkins 官方 APT 仓库 并安装:
    • 导入密钥:wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    • 添加源:echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
    • 安装与启动:sudo apt update && sudo apt install -y jenkins
    • 开机自启:sudo systemctl enable --now jenkins
    • 检查状态:sudo systemctl status jenkins
  • 如启用防火墙(UFW),放行 8080 端口:
    • 命令:sudo ufw allow 8080

二 首次访问与初始化配置

  • 在浏览器访问:http://<服务器IP>:8080
  • 解锁 Jenkins:查看初始管理员密码
    • 命令:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  • 完成安装向导:
    • 选择 Install suggested plugins(或按需自定义)
    • 创建 管理员账户Jenkins URL
  • 进入管理界面后,建议安装常用插件:Pipeline、Git、Docker、Kubernetes CLI、Credentials Binding 等,以便后续 CI/CD 使用

三 全局工具与凭据配置

  • 全局工具(Manage Jenkins → Global Tool Configuration):
    • JDK:取消“Install automatically”,路径示例 /usr/lib/jvm/java-11-openjdk-amd64
    • Git:可自动安装或指定 /usr/bin/git
    • Maven(可选):启用自动安装或设置安装目录
  • 全局环境变量(Manage Jenkins → Configure System):
    • 可设置如 JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64,统一构建环境
  • 凭据管理(Manage Jenkins → Credentials):
    • 添加 SSH 私钥(用于拉取私有仓库)或 GitHub Personal Access Token
    • 在任务中使用“Username with password”或“SSH Username with private key”类型引用凭据

四 创建第一个 CI/CD 流水线

  • 新建任务:选择 Pipeline
  • 定义方式:选择 Pipeline script from SCM,SCM 选 Git
    • 填写仓库 URL(HTTPS 或 SSH)
    • 指定 Jenkinsfile 路径(如根目录)
  • 示例 Jenkinsfile(Node.js,可按需替换为 Maven/Python 等)
    • 说明:拉取代码 → 安装依赖 → 构建 → 测试 → 仅在 main 分支部署到 Kubernetes
    • 参考:
      pipeline {
        agent any
        stages {
          stage('Checkout') {
            steps { git branch: 'main', url: 'https://github.com/your-repo/your-project.git' }
          }
          stage('Build') {
            steps { sh 'npm install'; sh 'npm run build' }
          }
          stage('Test') {
            steps { sh 'npm test -- --ci' }
          }
          stage('Deploy') {
            when { branch 'main' }
            steps {
              sh 'kubectl apply -f k8s/deployment.yaml'
              sh 'kubectl rollout status deployment/myapp'
            }
          }
        }
        post {
          success { echo 'Pipeline succeeded.' }
          failure { echo 'Pipeline failed.' }
        }
      }
      
  • 触发方式:
    • 手动:在任务页面点击 Build Now
    • 自动:在 GitHub 仓库 Settings → Webhooks → Add webhook
      • Payload URL:http://<服务器IP>:8080/github-webhook/
      • 事件:选择 Just the push event

五 安全与运维最佳实践

  • 安全加固:
    • 启用 CSRF 保护RBAC(最小权限模型)
    • Git 使用 SSH 密钥PAT,凭据统一托管在 Jenkins
    • 限制代理/节点启动权限,隔离构建环境
  • 性能与扩展:
    • 构建多且耗时较长时,引入 Jenkins Agent 分布式构建
  • 维护与可用性:
    • 定期 更新 Jenkins 与插件,及时修复安全漏洞
    • 定期 备份 $JENKINS_HOME(/var/lib/jenkins)
    • 按需更换 插件更新站点镜像 提升下载速度

0