Debian系统Jenkins如何集成CI/CD
导读:在 Debian 上集成 Jenkins 的 CI/CD 实践指南 一 环境准备与安装 安装 Java 11(Jenkins 推荐版本): 执行:sudo apt update && sudo apt install -...
在 Debian 上集成 Jenkins 的 CI/CD 实践指南
一 环境准备与安装
- 安装 Java 11(Jenkins 推荐版本):
- 执行:
sudo apt update & & sudo apt install -y openjdk-11-jdk - 验证:
java -version
- 执行:
- 添加 Jenkins 官方仓库 并安装:
- 导入密钥:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /devref - 写入源:
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
- 导入密钥:
- 访问与解锁:
- 打开:
http://< 服务器IP> :8080 - 初始密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 打开:
- 防火墙放行(如使用 UFW):
sudo ufw allow 8080/tcpsudo ufw allow 50000/tcp(JNLP Agent 通信)sudo ufw reload
- 建议资源配置(生产):8 核 CPU / 16GB 内存 / 100GB SSD;测试:4 核 / 8GB / 50GB。
二 初始化与安全配置
- 插件安装(精简够用):
- 进入 Manage Jenkins → Plugin Manager,安装:Pipeline、Git、Maven Integration、Docker Pipeline、Credentials Binding、Blue Ocean、Kubernetes(按需)。
- 可选加速:在 Manage Jenkins → Plugin Manager → Advanced 将 Update Site 替换为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json。
- 安全与权限:
- 启用安全:Manage Jenkins → Security → Enable security,选择 Logged-in users can do anything,创建管理员账户,禁用匿名访问。
- 系统配置:设置 Jenkins URL、时区;仅开放必要端口,限制来源 IP。
三 代码托管与触发配置
- SSH 连接 Git(推荐):
- 生成密钥:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jenkins_github - 将公钥(如
jenkins_github.pub)添加到代码托管(GitHub/GitLab)Deploy Keys 或用户 SSH Keys。 - 在 Jenkins 添加凭据:Manage Jenkins → Credentials → System → Global credentials,类型选 SSH Username with private key,ID 设为 github-ssh。
- 生成密钥:
- Webhook 触发(Push 即构建):
- GitHub/GitLab 项目设置 Webhook:
http://< JENKINS_URL> /github-webhook/(或/gitlab-webhook/)。 - Jenkins 任务启用触发器:GitHub hook trigger for GITScm polling(GitHub)或 Build when a change is pushed to a branch(GitLab)。
- GitHub/GitLab 项目设置 Webhook:
- 备选轮询(无公网或无法开放 Webhook 时):
- 在任务配置 Build Triggers → Poll SCM,如:
H/5 * * * *(每 5 分钟检查一次)。
- 在任务配置 Build Triggers → Poll SCM,如:
四 流水线示例与多语言实践
- Java + Maven 示例(声明式 Pipeline)
- 在代码根目录创建 Jenkinsfile:
pipeline { agent any tools { maven 'Maven 3.8' } // 需在 Global Tool Configuration 配置 Maven stages { stage('Checkout') { steps { git url: 'git@github.com:org/repo.git', branch: 'main', credentialsId: 'github-ssh' } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Test') { steps { sh 'mvn test' } post { always { junit '**/target/surefire-reports/*.xml' } } } stage('Deploy Dev') { when { branch 'main' } steps { sshPublisher(publishers: [sshPublisherDesc( configName: 'prod-ssh', transfers: [sshTransfer( sourceFiles: 'target/*.jar', removePrefix: 'target', remoteDirectory: '/opt/app' )], verbose: true )]) } } } } - 任务创建:新建 Pipeline,选择 Pipeline script from SCM,指定仓库与凭据;在 Manage Jenkins → Configure System → Publish over SSH 配置目标服务器(名称如 prod-ssh)。
- 在代码根目录创建 Jenkinsfile:
- Python 示例(声明式 Pipeline)
pipeline { agent any stages { stage('Checkout') { steps { git url: 'git@github.com:org/pyapp.git', branch: 'main', credentialsId: 'github-ssh' } } stage('Install') { steps { sh 'python -m pip install --upgrade pip & & pip install -r requirements.txt' } } stage('Test') { steps { sh 'pytest --junitxml=reports/results.xml' } post { always { junit 'reports/results.xml' } } } stage('Deploy') { when { branch 'main' } steps { sh './deploy.sh' } } } } - 说明:
- Java 任务依赖 Maven Integration 与 Publish Over SSH 插件;Python 任务可按需集成 Docker 或 Ansible 执行部署。
五 扩展与运维最佳实践
- 架构与扩展:
- 采用 Master–Agent 分布式架构,Master 负责调度,Agent 执行构建,提升并发与隔离性;可按需横向扩展 Kubernetes Pod Agent 或静态 SSH Agent。
- 配置即代码与一致性:
- 使用 JCasC(Configuration as Code) 管理 Jenkins 全局配置、工具与插件版本,保证环境可重建与一致性。
- 可观测性与度量:
- 暴露 Prometheus 指标(
/prometheus),用 Grafana 构建构建时长、成功率、队列等仪表盘,持续优化流水线性能。
- 暴露 Prometheus 指标(
- 安全与合规:
- 最小权限原则、凭据托管(SSH/用户名密码/Secret 文本)、定期升级 Jenkins 与插件、备份 JENKINS_HOME。
- 资源与性能:
- 并发构建与缓存策略(如 Maven ~/.m2 缓存)、构建产物归档与清理策略,避免磁盘膨胀。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian系统Jenkins如何集成CI/CD
本文地址: https://pptw.com/jishu/764631.html
