温馨提示×

Debian版Jenkins部署实战教程

小樊
31
2025-12-20 21:22:44
栏目: 智能运维

Debian版 Jenkins 部署实战教程

一 环境准备与安装

  • 准备一台 Debian 服务器,建议至少 2–4 核 CPU、4–8GB 内存、20GB+ SSD;生产环境推荐 8 核/16GB/100GB+ 并考虑 Master/Agent 分离。安装 OpenJDK 11(Jenkins 2.x 常用版本为 Java 8/11)。
  • 安装与启动命令(Debian 11/12 通用):
    sudo apt update && sudo apt install -y openjdk-11-jdk
    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
    
    如使用 UFW,放行端口:
    sudo ufw allow 8080/tcp
    sudo ufw allow 50000/tcp
    sudo ufw reload
    
    以上步骤完成后,Jenkins 将以服务方式运行并监听 8080 端口。

二 初始化与安全加固

  • 获取并输入解锁密码:
    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    
    访问 http://<服务器IP>:8080,完成解锁向导。
  • 插件与更新源优化:在 Manage Jenkins → Plugin Manager → Advanced 将 Update Site 替换为国内镜像(如清华源)以加速插件安装:
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    建议首批安装:Pipeline、GitHub Integration、Docker、Kubernetes CLI、Credentials Binding
  • 安全配置要点:启用安全、禁用匿名访问、创建管理员账户;按需集成 LDAP 或企业 SSO;如需中文界面与 Asia/Shanghai 时区,可在 /etc/default/jenkins 增加:
    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Duser.timezone=Asia/Shanghai"
    
    修改后重启服务生效:sudo systemctl restart jenkins
  • 常用目录与日志路径(便于排错与备份):
    • 主目录:/var/lib/jenkins
    • 日志:/var/log/jenkins/jenkins.log
    • 配置文件:/etc/default/jenkins
      以上初始化、插件、安全与目录信息为 Debian 上部署的通用实践。

三 构建与流水线实战

  • 准备 Git 凭据:生成 SSH 密钥对并添加公钥到代码仓库(如 GitHub Deploy Keys)。在 Jenkins 中 Manage Jenkins → Credentials → System → Global credentials 添加 SSH Username with private key 类型的凭据(如 ID:github-ssh)。
  • 创建声明式流水线(SCM 驱动):新建任务 → 选择 Pipeline → 选择 Pipeline script from SCM → 配置仓库 URL 与上一步凭据。示例 Jenkinsfile
    pipeline {
      agent any
      stages {
        stage('拉取代码') {
          steps { git 'git@github.com:your-org/your-repo.git', branch: 'main' }
        }
        stage('运行测试') {
          steps { sh './gradlew test' }
        }
        stage('构建打包') {
          steps { sh './gradlew build' }
        }
        stage('部署') {
          when { branch 'main' }
          steps { sh './deploy.sh' }
        }
      }
      post {
        always {
          echo "构建完成:${currentBuild.fullDisplayName}"
        }
      }
    }
    
    该流程覆盖拉取、测试、构建、条件部署与构建后通知等常见环节。

四 可选 Docker 部署

  • 快速启动(LTS 镜像,数据卷持久化,挂载宿主 Docker 套接字用于容器内构建/部署):
    docker pull jenkins/jenkins:lts
    docker run -d \
      --name jenkins \
      -p 8080:8080 -p 50000:50000 \
      -v jenkins-data:/var/jenkins_home \
      -v /var/run/docker.sock:/var/run/docker.sock \
      jenkins/jenkins:lts
    
    首次登录同样通过 /var/lib/jenkins/secrets/initialAdminPassword 获取解锁密码(可在宿主机执行 docker exec jenkins cat /var/lib/jenkins/secrets/initialAdminPassword 查看)。
  • 注意:挂载 /var/run/docker.sock 会带来安全边界变化,生产环境建议结合 代理节点(Agent) 或精细的权限控制。

五 性能优化与维护

  • 资源与 JVM:根据节点内存合理设置堆大小(如在 /etc/default/jenkinsJAVA_ARGS 中调整 -Xms/-Xmx),避免频繁 Full GC;限制并发构建数,减少资源争用。
  • 存储与 I/O:优先 SSD,定期清理工作空间与旧构建产物,避免磁盘膨胀。
  • 插件与系统:定期更新 Jenkins 与插件,移除未使用插件;按需启用 TCP BBR 等网络优化以降低构建拉取与制品传输时延。
  • 架构扩展:将构建任务下沉到 Agent,保持 Master 轻量;可按需扩展为 Kubernetes 动态代理池,提升弹性与资源利用率。
  • 备份与监控:定期备份 JENKINS_HOME(如每日快照/离线拷贝),结合 日志轮转 与监控告警,保障稳定性与可恢复性。

0