Ubuntu Jenkins集群搭建指南
Jenkins集群通过**主节点(Master)**负责任务调度与监控、**从节点(Agent/Slave)**执行具体构建任务的架构,提升构建效率与系统弹性。以下是Ubuntu环境下Jenkins集群的详细搭建步骤:
安装Java环境:Jenkins基于Java开发,需提前安装OpenJDK 11(推荐)。
在所有节点(主/从)上执行:
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version # 验证安装(需显示11.x版本)
安装Jenkins:
在所有节点上添加Jenkins官方仓库并安装:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
访问管理界面:
浏览器输入http://<主节点IP>:8080,通过初始密码(查看/var/lib/jenkins/secrets/initialAdminPassword)完成解锁,进入Web界面。
安装必要插件:
进入Manage Jenkins > Manage Plugins,安装以下插件:
配置主节点安全:
进入Manage Jenkins > Configure Global Security,启用安全性,选择Jenkins’ own user database作为安全领域,配置Role-Based Strategy授权策略(如区分管理员与普通用户权限)。
从节点是实际执行构建任务的机器,需通过主节点管理。以下以SSH方式为例(推荐,无需暴露JNLP端口):
主节点添加从节点:
进入Manage Jenkins > Manage Nodes and Clouds > New Node,输入节点名称(如ubuntu-agent-01),选择Permanent Agent,点击OK。
配置以下参数:
/home/ubuntu/jenkins-agent);ubuntu、docker),用于任务定向分配(如docker标签的任务只会分发到带该标签的节点);Use this node as much as possible(尽量使用此节点);Launch agents via SSH,点击Add添加SSH凭据(需输入从节点的用户名(如ubuntu)和私钥,私钥可通过ssh-keygen -t rsa生成并复制到从节点的~/.ssh/authorized_keys中)。从节点准备工作:
在从节点上安装Java(同前置准备)和Jenkins代理(可选,若使用SSH方式无需单独安装):
sudo apt update
sudo apt install -y openjdk-11-jdk
验证从节点连接:
主节点添加节点后,点击Save,Jenkins会自动尝试通过SSH连接从节点。若连接成功,从节点状态会显示为Idle(空闲)。
创建Pipeline任务:
进入New Item,输入任务名称(如docker-build),选择Pipeline,点击OK。
编写Pipeline脚本:
在Pipeline section选择Pipeline script,输入以下脚本(示例:打印节点信息并执行简单构建):
pipeline {
agent {
label 'ubuntu' // 指定带'ubuntu'标签的从节点
}
stages {
stage('Print Node Info') {
steps {
sh 'echo "Running on node: ${NODE_NAME}"'
sh 'uname -a'
}
}
stage('Sample Build') {
steps {
sh 'mkdir -p build && echo "Build successful" > build/result.txt'
}
}
}
post {
always {
archiveArtifacts artifacts: 'build/result.txt', fingerprint: true
}
}
}
运行任务并验证:
点击Build Now,进入任务详情页,查看Console Output,确认任务在指定的从节点上执行(如显示Running on node: ubuntu-agent-01)。
若有多个主节点或从节点,可通过Nginx实现负载均衡,分发请求到多个Jenkins实例:
安装Nginx:
在负载均衡服务器上执行:
sudo apt update
sudo apt install -y nginx
配置Nginx:
编辑/etc/nginx/sites-available/default,添加以下内容(替换<master1-ip>、<master2-ip>为实际IP):
upstream jenkins_cluster {
server <master1-ip>:8080;
server <master2-ip>:8080;
}
server {
listen 80;
server_name jenkins.yourdomain.com;
location / {
proxy_pass http://jenkins_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启Nginx:
sudo systemctl restart nginx
现在可通过http://jenkins.yourdomain.com访问负载均衡后的Jenkins集群。
查看节点列表:
主节点进入Manage Jenkins > Manage Nodes and Clouds,确认所有从节点状态为Idle。
查看任务分配:
创建带标签的任务,运行后进入Manage Jenkins > Manage Nodes and Clouds,点击从节点名称,查看Build History确认任务执行记录。
通过以上步骤,即可完成Ubuntu环境下Jenkins集群的搭建,实现构建任务的分布式执行。可根据实际需求扩展从节点数量、配置更复杂的负载均衡策略(如Keepalived)或集成Kubernetes(实现自动扩缩容)。