linux

Jenkins在Linux中怎样实现分布式构建

小樊
38
2025-11-08 14:54:39
栏目: 智能运维

Jenkins在Linux中实现分布式构建的完整步骤

一、前置准备

  1. 环境要求

    • 所有节点(主控节点Master、工作节点Slave)需安装相同版本的Jenkins(避免兼容性问题);
    • 所有节点需安装Java运行时环境(JRE)(推荐OpenJDK 11,可通过java -version验证);
    • 节点间网络互通(无防火墙拦截Jenkins通信端口,默认SSH端口22、JNLP端口随机)。
  2. 安装Jenkins

    • 主控节点:通过官方仓库安装(以Ubuntu为例):
      sudo apt update
      sudo apt install openjdk-11-jdk  # 安装Java
      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 jenkins  # 安装Jenkins
      sudo systemctl start jenkins && sudo systemctl enable jenkins  # 启动并设为开机自启
      
    • 工作节点:安装步骤与主控节点一致(需与主控节点同版本)。

二、配置Jenkins主控节点

  1. 进入节点管理界面
    登录Jenkins Web界面(http://<master-ip>:8080),依次点击Manage JenkinsManage Nodes and CloudsNew Node

  2. 创建工作节点

    • 名称:自定义(如linux-node-01);
    • 类型:选择Permanent Agent(常驻代理,推荐用于生产环境);
    • 配置详情
      • 并发构建数(Executors):设置同时执行的构建任务数(如2,根据节点硬件资源调整);
      • 远程工作目录:指定节点上的绝对路径(如/var/lib/jenkins,需提前创建并赋权chmod 755 /var/lib/jenkins);
      • 标签(Labels):为节点打上标识(如linuxdocker),用于后续任务定向分配(如linux表示该节点用于Linux环境构建);
      • 用法(Usage):选择Only build jobs with label expression matching this node(仅执行匹配标签的任务,避免主控节点抢占资源);
      • 启动方法(Launch Method):选择Launch agent via SSH(推荐,安全且自动化)。
  3. 配置SSH连接

    • 若未安装SSH插件,需先进入Manage JenkinsManage PluginsAvailable,搜索并安装SSH Slaves插件;
    • Credentials中添加SSH私钥(主控节点需能通过SSH免密登录工作节点):
      • 工作节点生成SSH密钥:ssh-keygen -t rsa(默认路径~/.ssh/id_rsa);
      • 将公钥(id_rsa.pub)复制到主控节点的~/.ssh/authorized_keys中;
      • 在Jenkins中添加SSH Username with private key凭证(选择“Enter directly”,粘贴私钥内容)。

三、配置Jenkins工作节点

  1. 启动Jenkins代理
    在工作节点终端执行以下命令(替换<master-ip><node-name><credentials-id>):

    java -jar agent.jar -jnlpUrl http://<master-ip>:8080/computer/<node-name>/slave-agent.jnlp -secret <credentials-id> -workDir "/var/lib/jenkins"
    
    • -jnlpUrl:主控节点的工作节点JNLP地址(可在Manage Nodes页面复制);
    • -secret:节点的认证密钥(可在Manage Nodes节点名称ConfigureCredentials中查看);
    • -workDir:远程工作目录(需与主控节点配置一致)。
  2. 验证节点状态
    返回Jenkins Web界面的Manage Nodes页面,若节点状态显示为Idle(空闲),则表示连接成功。

四、分配分布式构建任务

  1. 创建流水线任务
    在Jenkins中点击New ItemPipelineOK,进入任务配置页面。

  2. 配置节点标签
    Pipeline部分,选择Pipeline script from SCM(从SCM获取脚本)或Pipeline script(直接编写脚本),并在agent部分指定标签:

    pipeline {
        agent {
            node {
                label 'linux'  // 匹配工作节点的标签
            }
        }
        stages {
            stage('Test') {
                steps {
                    echo 'Running on Linux node'
                    sh 'uname -a'  // 打印节点系统信息(验证是否为Linux)
                }
            }
        }
    }
    

    或直接在GeneralRestrict where this project can be run中输入标签(如linux)。

  3. 运行任务并验证
    点击Build Now,进入Build History查看任务状态,点击构建记录→Console Output,若输出包含工作节点的系统信息(如Linux node203 5.4.0-110-generic #124-Ubuntu SMP),则表示分布式构建成功。

五、高级配置(可选)

  1. 环境变量配置
    在工作节点的ConfigureEnvironment variables中添加自定义变量(如JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64),供构建任务使用。

  2. 限制任务类型
    在工作节点的ConfigureUsage中选择Only build jobs with label expression matching this node,并设置标签表达式(如linux && docker),确保仅执行匹配标签的任务。

  3. 监控节点状态
    通过Manage JenkinsManage Nodes查看节点的CPU使用率内存占用构建队列等信息,及时调整节点配置。

通过以上步骤,即可在Linux环境中实现Jenkins的分布式构建,充分利用多台Linux节点的资源,提升构建效率。

0
看了该问题的人还看了