centos jenkins部署实战案例
导读:CentOS 上部署 Jenkins 实战案例 一 环境准备与版本选择 操作系统建议:CentOS 7/8(本文以 CentOS 7 为例,其他版本命令基本一致)。 Java 版本:新版本 Jenkins LTS 建议使用 OpenJDK...
CentOS 上部署 Jenkins 实战案例
一 环境准备与版本选择
- 操作系统建议:CentOS 7/8(本文以 CentOS 7 为例,其他版本命令基本一致)。
- Java 版本:新版本 Jenkins LTS 建议使用 OpenJDK 11 或更高版本;如必须使用 JDK 8,请选择与之兼容的 Jenkins 2.346.x LTS 等老版本,避免插件不兼容。
- 基础工具:安装 Git、Maven(Java 项目)、必要时准备 Tomcat 8.5+(部署 WAR)。
- 防火墙与端口:开放 8080(Jenkins)、8081(Tomcat 示例)、以及 22(SSH),或临时停用防火墙用于测试。
- 版本匹配要点:Jenkins 与插件生态对 Java 版本较敏感,新版本 Jenkins 对 JDK 11+ 支持更好;若计划集成 SonarQube 7.8+,也建议 JDK 11+。
二 安装与初始化
- 安装 Java(推荐 OpenJDK 11)
- 命令:
sudo yum install -y java-11-openjdk-devel - 验证:
java -version
- 命令:
- 添加 Jenkins 仓库并安装
- 命令:
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
- 命令:
- 防火墙放行
- 命令:
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload
- 命令:
- 初始化解锁
- 获取初始密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 访问:
http://< 服务器IP> :8080,粘贴密码,选择“安装推荐插件”,创建管理员账户。
- 获取初始密码:
三 实战一 Java Maven 项目自动构建与 Tomcat 部署
- 目标:代码提交到 Git → Jenkins 拉取 → Maven 构建 → SonarQube 扫描 → 部署到 Tomcat(远程主机)。
- 前置准备
- 在 Jenkins 安装插件:Git、Maven Integration、SSH Pipeline Steps、SonarQube Scanner(或 Sonar Quality Gates)。
- 全局工具配置:配置 JDK 11、Maven 3.8.x 路径。
- SonarQube:部署 7.8+,创建项目令牌;Jenkins 配置 SonarQube 服务与凭据。
- Tomcat:在目标主机安装 Tomcat 8.5+,开启 manager-script 角色;在 Jenkins 配置 SSH 凭据(私钥)与目标主机信息。
- 示例 Jenkinsfile(Pipeline)
pipeline { agent any tools { maven 'Maven-3.8' jdk 'JDK-11' } environment { SONAR_TOKEN = credentials('sonar-token') TOMCAT_HOST = '192.168.220.173' TOMCAT_USER = 'tomcat' APP_WAR = 'target/app.war' TOMCAT_WEBAPPS = '/opt/tomcat/webapps' } stages { stage('Checkout') { steps { git branch: 'main', url: 'git@your-gitlab:group/project.git' } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('SonarQube Analysis') { steps { withSonarQubeEnv('SonarQube') { sh """ mvn sonar:sonar \ -Dsonar.projectKey=your-project \ -Dsonar.sources=src \ -Dsonar.host.url=http://< sonar-host> :9000 \ -Dsonar.login=$SONAR_TOKEN """ } } } stage('Deploy to Tomcat') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'tomcat-prod', transfers: [ sshTransfer( sourceFiles: "${ APP_WAR} ", removePrefix: 'target', remoteDirectory: "${ TOMCAT_WEBAPPS} " ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true ) ] ) } } } post { success { echo 'Deploy success.' } failure { echo 'Build or deploy failed.' } } } - 要点
- 触发器建议:GitLab Webhook(Push 事件)触发构建;Jenkins 系统配置中设置 CSRF 保护与 Webhook 可信 IP。
- Tomcat 热部署:上传 WAR 到 webapps 目录后自动解压;必要时调用 /manager/text/reload?path=/ 或重启 Tomcat(生产谨慎)。
- 安全建议:SSH 使用密钥、限制 sudo 权限;SonarQube 令牌以 Secret text 类型保存。
四 实战二 接口自动化测试并生成 Allure 报告
- 目标:拉取测试代码 → 安装依赖 → 运行 pytest + Allure → 归档并展示报告。
- 前置准备
- 安装 Python 3.11、pip、Allure 命令行;在 Jenkins 安装 Allure 插件。
- 项目依赖:
pip install -r requirements.txt(含 pytest、allure-pytest 等)。
- 示例 Jenkinsfile
pipeline { agent any environment { PYTHON = '/usr/bin/python3.11' ALLURE_HOME = '/opt/allure-2.21.0' REPORT_DIR = 'allure-report' } stages { stage('Checkout') { steps { git branch: 'main', url: 'git@your-gitlab:group/api-test.git' } } stage('Install deps') { steps { sh "${ PYTHON} -m pip install -r requirements.txt" } } stage('Run tests') { steps { sh "${ PYTHON} -m pytest tests/ --alluredir=${ REPORT_DIR} " } } } post { always { allure([ includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: env.REPORT_DIR]] ]) } } } - 要点
- 报告展示:Jenkins 构建后可在 Allure Report 页面查看趋势与用例详情。
- 环境差异:不同 Linux 发行版/版本与 JDK/Python/Allure 版本需严格匹配,避免命令不可用或插件不兼容。
五 运维与安全加固
- 运行用户与权限
- 建议以 jenkins 用户运行:
sudo systemctl edit jenkins设置User=jenkins,并确保/var/lib/jenkins、/var/log/jenkins属主为 jenkins:jenkins;必要时在 systemd 服务中调整 JAVA_HOME。
- 建议以 jenkins 用户运行:
- 端口与反向代理
- 如需域名与 HTTPS,使用 Nginx 反向代理 8080 → 80/443,配置 Let’s Encrypt 证书;或直接在 /etc/sysconfig/jenkins 调整
JENKINS_PORT。
- 如需域名与 HTTPS,使用 Nginx 反向代理 8080 → 80/443,配置 Let’s Encrypt 证书;或直接在 /etc/sysconfig/jenkins 调整
- 防火墙与服务治理
- 仅开放必要端口(如 8080/8081/22/443),生产环境避免直接关闭防火墙;使用
sudo systemctl status jenkins、sudo journalctl -u jenkins -f排查故障。
- 仅开放必要端口(如 8080/8081/22/443),生产环境避免直接关闭防火墙;使用
- 插件与升级策略
- 定期更新 Jenkins LTS 与插件,先备份 $JENKINS_HOME;插件冲突时回滚或临时使用兼容版本。
- 分布式构建
- 通过 Jenkins Agent 扩展构建能力,分担 Maven/测试 负载,提高稳定性与并发度。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos jenkins部署实战案例
本文地址: https://pptw.com/jishu/758962.html
