温馨提示×

Debian Jenkins如何部署应用

小樊
34
2025-11-29 05:19:42
栏目: 智能运维

在 Debian 上使用 Jenkins 部署应用的实操指南

一 环境准备与安装

  • 安装 Java 11(Jenkins 2.x 常用版本):
    • 执行: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
  • 防火墙放行端口(如使用 UFW):
    • sudo ufw allow 8080/tcp
    • 如启用 JNLP 代理还需放行 50000/tcpsudo ufw allow 50000/tcp

二 初始化与安全配置

  • 解锁 Jenkins:
    • 访问:http://<服务器IP>:8080
    • 初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  • 插件与更新源:
    • 首次可安装“推荐插件”,或手动安装:Pipeline、GitHub Integration、Docker、Kubernetes CLI、Credentials Binding
    • 国内可加速插件更新:进入 Manage Jenkins → Plugin Manager → Advanced,将 Update Site URL 替换为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • 安全设置:
    • 启用安全:进入 Manage Jenkins → Security → Enable security
    • 选择 Logged-in users can do anything,创建管理员账户,禁用匿名访问

三 创建部署流水线

  • 准备代码仓库与凭据:
    • 生成 SSH 密钥ssh-keygen -t rsa -b 4096 -f ~/.ssh/jenkins_github
    • 将公钥添加到代码托管(如 GitHub Deploy Keys
    • 在 Jenkins 中添加凭据:Manage Jenkins → Credentials → System → Global credentials,类型选 SSH Username with private key,ID 设为 github-ssh
  • 新建任务:
    • 选择 Pipeline,在 Pipeline 配置中选择 Pipeline script from SCM,配置 Git 仓库地址与凭据
  • 示例声明式流水线(可按需扩展测试与部署阶段):
    • pipeline { agent any stages { stage(‘拉取代码’) { steps { git ‘git@github.com:your-org/your-repo.git’ } } stage(‘运行测试’) { steps { sh ‘python -m pytest tests/’ } } stage(‘构建打包’) { steps { sh ‘python setup.py build’ } } stage(‘部署’) { steps { sh ‘./deploy.sh’ } } } post { always { mail to: ‘team@example.com’, subject: “构建完成: ${currentBuild.fullDisplayName}”, body: “构建结果:${currentBuild.result}” } } }
  • 触发与验证:
    • 提交代码触发构建,查看 Console Output构建状态,确认部署脚本执行成功

四 部署方式选择

  • 直接在 Jenkins Agent 主机部署(简单、直接)
    • 适合单机或小规模环境;在部署阶段使用 SSHSCP 将制品复制到目标主机并重启服务
  • 使用 Docker 构建与运行(环境一致性更好)
    • 在流水线中执行 docker build -t your-app:${BUILD_NUMBER} .
    • 推送到镜像仓库:docker push your-registry/your-app:${BUILD_NUMBER}
    • 在目标主机拉取并运行:docker run -d --name app -p 8080:8080 your-registry/your-app:${BUILD_NUMBER}
  • 在容器内运行 Jenkins 并复用宿主机 Docker(便于在流水线内构建镜像)
    • 运行容器(挂载 Docker 套接字与数据卷):
      • docker run -d --name jenkins-blueocean -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
    • 注意权限与安全性(容器内以合适用户运行,谨慎挂载宿主 Docker 套接字)

五 常见问题与优化

  • 插件安装慢:更换 Update Site 为清华镜像源,显著提升下载速度
  • 构建/部署权限不足:
    • 在目标主机为 Jenkins 用户配置 SSH 免密登录,或使用 sudo 并配置免密(谨慎评估安全影响)
  • 端口与连通性:
    • 确保 8080/50000 已放行;云服务器需检查 安全组/防火墙策略
  • 日志与排错:
    • Jenkins 日志:sudo journalctl -u jenkins -f
    • 构建日志:在任务页面查看 Console Output
  • 资源与扩展:
    • 生产建议 8 核 CPU / 16GB 内存 / 100GB SSD,必要时分离 Master/Agent 架构,提高稳定性与扩展性

0