温馨提示×

centos jenkins自动化构建流程

小樊
43
2025-12-29 12:00:33
栏目: 智能运维

CentOS 上搭建 Jenkins 自动化构建流程

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 11):sudo yum install -y java-11-openjdk-devel
  • 添加 Jenkins 官方 YUM 源 并安装:
    • sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    • sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    • sudo yum install -y jenkins
  • 启动并设置开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins
  • 开放防火墙端口(默认 8080):sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload
  • 首次访问:浏览器打开 http://<服务器IP>:8080,初始管理员密码在 /var/lib/jenkins/secrets/initialAdminPassword

二 基础配置

  • 插件安装:进入 Manage Jenkins → Manage Plugins,安装核心插件如 Git PluginMaven Integration PluginPipeline PluginEmail Extension Plugin
  • 全局工具配置:进入 Manage Jenkins → Global Tool Configuration,配置 JDK(如 /usr/lib/jvm/java-11-openjdk)、Maven(如 /usr/share/maven)、Git(如 /usr/bin/git),便于任务直接引用。
  • 安全与网络:建议启用 HTTPS、创建管理员账户;如使用云服务器,确保安全组/防火墙放行 8080

三 创建任务与触发器

  • 新建任务:New Item → 选择 Freestyle projectPipeline
  • 源码管理:选择 Git,填写仓库 URL;私有仓库在 Credentials 中添加 SSH KeyUsername with password
  • 构建触发器:
    • 定时触发:Build periodically,示例 **H/5 * * * ***(每 5 分钟检查一次变更)
    • 代码提交触发:使用 GitLab webhook,Payload URL 形如 http://<Jenkins服务器IP>:8080/project/<任务名>
  • 构建步骤:
    • Freestyle:Add build step → Invoke top-level Maven targets(如 clean package),或 Execute shell(自定义脚本)
    • Pipeline:在 Pipeline 配置中选择 Pipeline script from SCM,指定仓库与 Jenkinsfile 路径
  • 构建后操作:
    • Archive the artifacts(如 target/*.jar
    • 使用 Email Extension 发送通知(需配置 SMTP

四 Pipeline 示例与关键实践

  • 声明式 Pipeline 示例(Java + Maven) pipeline { agent any tools { maven ‘Maven 3.6.3’ // 与全局工具配置中的名称一致 jdk ‘JDK 11’ } environment { MAVEN_OPTS = “-Dmaven.repo.local=${env.WORKSPACE}/.m2” DEPLOY_ENV = ‘staging’ } stages { stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘https://github.com/user/repo.git’ } } stage(‘Build’) { steps { sh ‘mvn -B clean package’ } post { success { archiveArtifacts ‘target/.jar’ } } } stage(‘Test’) { steps { sh ‘mvn test’ } post { always { junit '**/target/surefire-reports/.xml’ } } } stage(‘Deploy’) { when { branch ‘develop’ } steps { sshagent([‘staging-key’]) { sh ‘scp target/*.jar user@staging-server:/opt/app’ } } } } post { always { cleanWs() } success { emailext body: ‘Build succeeded: ${BUILD_URL}’, subject: ‘Jenkins Build Success’, to: ‘dev@example.com’ } failure { emailext body: ‘Build failed: ${BUILD_URL}’, subject: ‘Jenkins Build Failed’, to: ‘dev@example.com’ } } }
  • 关键实践
    • 使用 Jenkinsfile 将流程纳入版本控制(Pipeline as Code)
    • 通过 sshagent 管理部署凭据,避免明文密码
    • post 阶段统一做清理与通知,提升可观测性
    • 使用 when 控制部署阶段仅在特定分支触发

五 常见问题与优化

  • 插件安装慢或失败:可临时使用国内镜像源更新 updates/default.json 的下载地址后重启 Jenkins(注意仅用于网络受限场景)。
  • 构建并发与资源:合理设置 JVM 堆大小(-Xms/-Xmx)、限制并发构建数,必要时使用 分布式构建 扩展节点。
  • 稳定性与升级:定期更新 Jenkins 与插件、清理旧构建与工作空间,避免磁盘与性能问题。

0