Linux下Jenkins配置技巧汇总
在安装Jenkins前,需确保Linux系统为最新状态,并安装必要的依赖包(如wget用于下载、java-1.8.0-openjdk-devel用于Java环境)。通过sudo yum update -y更新系统,使用sudo yum install -y wget java-1.8.0-openjdk-devel安装依赖。安装完成后,通过java -version验证Java是否安装成功(需显示Java版本信息)。
为简化安装流程并确保后续更新便捷,建议通过Yum仓库安装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。安装完成后,启动Jenkins服务并设置为开机自启,确保系统重启后Jenkins自动运行:
sudo systemctl start jenkins;sudo systemctl enable jenkins;sudo systemctl status jenkins(确认状态为“active (running)”)。首次访问Jenkins需通过日志获取初始管理员密码:cat /var/lib/jenkins/secrets/initialAdminPassword。在浏览器中输入http://<服务器IP>:8080,输入密码完成解锁。随后选择“安装推荐插件”(快速搭建基础环境)或“选择插件来安装”(自定义插件),完成初始配置。
Jenkins运行需配置Java环境变量(JAVA_HOME),可通过以下三种方式实现:
JAVA_HOME(值为Java安装路径,如/usr/lib/jvm/java-1.8.0-openjdk)和PATH(值为$JAVA_HOME/bin:$PATH);/etc/profile,在末尾添加上述环境变量,执行source /etc/profile使配置生效;/etc/init.d/jenkins或/usr/lib/systemd/system/jenkins.service),在JAVA_ARGS中添加-Djava.home=$JAVA_HOME,重启服务使配置生效。插件是Jenkins扩展功能的核心,需安装并管理以下关键插件:
Git(代码托管库集成)、Maven Integration(Java项目构建)、Pipeline(流水线编排)、SSH Agent(SSH免密登录)等;/etc/sysconfig/jenkins文件,修改JENKINS_JAVA_OPTIONS参数,设置初始堆大小(-Xms)和最大堆大小(-Xmx),如-Xms1g -Xmx4g(根据服务器内存调整,避免过大导致OOM);Role-Based Strategy插件(需安装),配置用户角色(如管理员、开发者、访客),限制其对Jenkins的访问权限(如开发者仅能创建构建任务,访客仅能查看);firewall-cmd开放Jenkins端口(默认8080),如sudo firewall-cmd --permanent --add-port=8080/tcp,然后sudo firewall-cmd --reload;cron定期备份Jenkins数据(如/var/lib/jenkins目录),例如每天凌晨2点备份:0 2 * * * tar -czvf /var/backup/jenkins_$(date +\%F).tar.gz /var/lib/jenkins。对于大型项目或多节点构建需求,配置分布式构建可将任务分发到多个Slave节点:
slave1),设置节点名称、执行器数量(如2个,同时运行2个任务)、远程工作目录(如/home/jenkins/slave1);~/.ssh/authorized_keys文件中);linux)分配到对应节点执行。使用Jenkinsfile定义流水线(Pipeline),将构建、测试、部署步骤代码化,实现版本控制与复用:
Jenkinsfile,内容示例:pipeline {
agent any
environment {
MAVEN_HOME = '/usr/share/maven' // Maven路径
JAVA_HOME = '/usr/lib/jvm/java-1.8.0-openjdk' // Java路径
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/example/repo.git' // 拉取代码
}
}
stage('Build') {
steps {
sh "${MAVEN_HOME}/bin/mvn clean package" // Maven构建
}
}
stage('Test') {
steps {
junit '**/target/surefire-reports/*.xml' // 运行测试并生成报告
}
}
stage('Deploy') {
steps {
sh 'scp target/*.jar user@server:/opt/app/' // 部署到服务器
}
}
}
post {
always {
echo 'Build completed!' // 构建完成后输出日志
}
}
}
Jenkinsfile提交到代码仓库,Jenkins可通过“流水线”→“从SCM构建”拉取并执行流水线。