/etc/passwd
识别并锁定或移除),设置高强度用户密码(包含大小写字母、数字及特殊字符,长度≥10位);使用chattr +i
命令将/etc/passwd
、/etc/shadow
、/etc/group
、/etc/gshadow
设为不可修改,防止未经授权的更改。firewall-cmd
开放Jenkins默认端口(8080)及代理端口(50000),并重载防火墙规则:sudo firewall-cmd --permanent --add-port=8080/tcp --add-port=50000/tcp
sudo firewall-cmd --reload
system.setProperty("hudson.model.directorybrowser.csp", "")
/etc/sysconfig/jenkins
),调整堆内存大小(避免频繁Full GC):JAVA_OPTS="-Xms3g -Xmx6g -XX:MaxRAM=6g"
或直接通过命令行启动(临时生效):nohup /usr/bin/java -Xms3g -Xmx6g -jar /usr/share/jenkins/jenkins.war --httpPort=8080 &
rsync
同步配置文件至备用服务器),当Master故障时,备用服务器可快速接管服务。ssh-keygen -t rsa -b 4096
),将公钥添加至GitHub/GitLab的Deploy Keys;在Jenkins“系统管理→凭据”中添加SSH私钥。Jenkinsfile
(置于代码仓库根目录),定义CI/CD流程(以Java项目为例):pipeline {
agent any
stages {
stage('Checkout') {
steps {
git url: 'git@github.com:your-repo/your-project.git', branch: 'master', credentialsId: 'your-ssh-credentials-id'
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
when {
branch 'master' // 仅master分支触发部署
}
steps {
sh 'mvn deploy'
}
}
}
post {
success {
echo 'Pipeline executed successfully!'
}
failure {
echo 'Pipeline failed!'
}
}
}
stage('Code Quality') {
steps {
withSonarQubeEnv('SonarQube-Server') {
sh 'mvn sonar:sonar'
}
}
}
stage('Push Image') {
steps {
sh 'docker build -t your-harbor-repo/your-image:latest .'
sh 'docker login your-harbor-repo -u admin -p password'
sh 'docker push your-harbor-repo/your-image:latest'
}
}
JENKINS_HOME
(默认路径/var/lib/jenkins
),包含配置文件、构建产物、插件等;创建备份目录/var/backup/jenkins
。cron
定时任务(每天凌晨2点执行),打包备份JENKINS_HOME
:sudo crontab -e
添加以下内容:0 2 * * * tar -czvf /var/backup/jenkins_$(date +\%F).tar.gz /var/lib/jenkins
sudo systemctl stop jenkins
sudo tar -xzvf /var/backup/jenkins_2025-09-30.tar.gz -C /
sudo systemctl start jenkins
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
。