温馨提示×

如何在Debian上配置Jenkins持续集成

小樊
31
2025-12-14 22:47:42
栏目: 智能运维

在 Debian 上配置 Jenkins 持续集成

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 11OpenJDK 17):
    • sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 添加 Jenkins 官方 APT 仓库(使用签名密钥环方式,更现代且安全):
    • 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
  • 安装并启动 Jenkins:
    • sudo apt update && sudo apt install -y jenkins
    • sudo systemctl enable --now jenkins
    • 检查状态:sudo systemctl status jenkins(应为 active (running)
  • 防火墙放行端口(如使用 UFW):
    • sudo ufw allow 8080/tcp
    • 如使用代理或分布式构建,放行 50000/tcp
  • 说明:Jenkins 2.357+ 版本建议使用 Java 11+;如计划使用容器/代理功能,请一并放行 50000/tcp

二 初始化与安全加固

  • 完成 Web 初始化向导:
    • 访问:http://<服务器IP或域名>:8080
    • 解锁:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    • 选择“安装推荐插件”,创建管理员账户,确认 Jenkins URL
  • 安全与权限:
    • 进入 Manage Jenkins → Configure Global Security:启用安全、选择登录用户授权策略(如“Logged-in users can do anything”),禁用匿名访问
    • 使用 Credentials 管理 SSH 私钥、用户名/密码、令牌等敏感信息
    • 插件与更新:仅安装必要插件;定期更新 Jenkins 与插件;可更换插件更新站点为国内镜像(如清华源)提升速度
  • 配置文件与目录要点:
    • 主目录:/var/lib/jenkins(包含 jobs、plugins、workspace 等)
    • 启动参数:/etc/default/jenkins(如 JENKINS_HOME、JVM 参数、端口等)

三 创建第一个 CI 流水线

  • 准备代码与凭据:
    • 在代码仓库配置 Deploy Keys(SSH)或 Personal Access Token(HTTPS)
    • 在 Jenkins 的 Manage Jenkins → Credentials → System → Global credentials 添加对应凭据(如 SSH 私钥或用户名+令牌)
  • 方式一 Freestyle 任务(适合入门):
    • 新建任务 → 选择 Freestyle project
    • 源码管理:选择 Git,填写仓库 URL,选择上一步的凭据
    • 构建触发器:如 Poll SCM(例如 H/5 * * * * 表示每 5 分钟检查一次)
    • 构建步骤:根据项目类型执行命令(如 mvn clean package、npm install、./gradlew build)
    • 构建后操作:归档产物、发布 JUnit 报告、发送通知等
  • 方式二 Pipeline(推荐,基于 Jenkinsfile):
    • 新建任务 → 选择 Pipeline
    • 定义方式:选择 Pipeline script from SCM,指定仓库与分支,Jenkins 会自动读取 Jenkinsfile
    • 示例 Jenkinsfile(可按需裁剪):
      pipeline {
        agent any
        tools { jdk 'openjdk-11' } // 需在“全局工具配置”中预先配置 JDK
        stages {
          stage('Checkout') {
            steps { git url: 'git@github.com:your-org/your-repo.git', branch: 'main' }
          }
          stage('Build') {
            steps { sh 'mvn -B -DskipTests clean package' }
          }
          stage('Test') {
            steps { sh 'mvn test' }
            post { always { junit '**/target/surefire-reports/*.xml' } }
          }
          stage('Deploy') {
            when { branch 'main' }
            steps { sh './deploy.sh' }
          }
        }
      }
      
    • 说明:常用插件包括 GitPipelineMaven IntegrationJUnit 等。

四 常见问题与优化

  • 权限问题(Permission denied):
    • 构建或部署目标路径对 jenkins 用户不可写时,调整属主/权限:
      • sudo chown -R jenkins:jenkins /path/to/project
      • 或 sudo chmod -R 775 /path/to/project
    • 如需操作 Docker,可将 jenkins 加入 docker 组(谨慎评估安全影响):sudo usermod -aG docker jenkins
  • Java 版本与 JAVA_HOME:
    • 多版本并存时使用 update-alternatives 切换默认 java,并在 Jenkins 的 全局工具配置 指定 JAVA_HOME
  • 构建性能与扩展:
    • 调整 执行器数量(Executors)JVM 参数(在 /etc/default/jenkins 的 JAVA_OPTS)
    • 采用 分布式构建(Master-Agent)提升并行度与资源隔离
  • 备份与恢复:
    • 定期备份 /var/lib/jenkins(配置、任务、插件、工作空间),可使用脚本或插件实现自动化备份
  • 可选 使用 Docker 运行 Jenkins(便于迁移与隔离):
    • docker run -d -p 8080:8080 -p 50000:50000
      -v jenkins-data:/var/jenkins_home
      -v /var/run/docker.sock:/var/run/docker.sock
      jenkins/jenkins:lts

0