CentOS 上部署 Jenkins 实战案例
一 环境准备与版本选择
二 安装与初始化
sudo yum install -y java-11-openjdk-develjava -versionsudo 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/initialAdminPasswordhttp://<服务器IP>:8080,粘贴密码,选择“安装推荐插件”,创建管理员账户。三 实战一 Java Maven 项目自动构建与 Tomcat 部署
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.' }
}
}
四 实战二 接口自动化测试并生成 Allure 报告
pip install -r requirements.txt(含 pytest、allure-pytest 等)。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]]
])
}
}
}
五 运维与安全加固
sudo systemctl edit jenkins 设置 User=jenkins,并确保 /var/lib/jenkins、/var/log/jenkins 属主为 jenkins:jenkins;必要时在 systemd 服务中调整 JAVA_HOME。JENKINS_PORT。sudo systemctl status jenkins、sudo journalctl -u jenkins -f 排查故障。