1. 程式人生 > >Jenkins實踐基礎:JNLP方式搭建Master-Slave分散式構建環境

Jenkins實踐基礎:JNLP方式搭建Master-Slave分散式構建環境

在這裡插入圖片描述
Jenkins支援多種方式實現分散式構建,主要方式之一為傳統的一主多從(Master/Slave)。Master主要用於作業(job)的分配以及使用者操作的互動等,而slave則用於處理實際構建作業等,在集中化的構建需要較高效能支援以及橫向擴充套件性的時候,Master-Slave方式構建Jenkins持續整合環境是一個常見的選擇。這篇文章主要介紹一下如何使用JNLP方式的Slave與Jenkins的Master進行溝通的環境構建。

Master-Slave構成

Master節點和Slave節點構成如下主從結構,下圖為Master下連線兩個Slave節點的示例圖。
在這裡插入圖片描述

搭建Master/Slave方式的Jenkins環境

Step 1: 啟動Jenkins的Master節點

普通方式啟動Jenkins即可,本文使用Easypack中整合的alpine的Jenkins映象,只需要將JENKINS_MODE設定為master即可,詳細可參看下文:

Step 2: 建立Slave節點

在Jenkins的Master節點上建立Slave節點,選擇Manage Jenkins -> Manage Nodes
在這裡插入圖片描述
選擇New Node,選擇Permanent Agent,設定Node名稱為agent001
在這裡插入圖片描述


設定:
在這裡插入圖片描述
agent必須設定的除了Name還有Remote root direcotry,設定一個路徑與此agent進行關聯,最好是絕對路徑,比如/var/jenkins。此路徑應該是agent機器上的一個目錄,沒有必要在master上可見。
一般來說,agent不會儲存中藥的資料資訊,所有的job配置和構建日誌以及構建結果都儲存在master上,所以此目錄可以使用一個臨時目錄,但是最好保證機器重啟也不會對其產生影響,以避免諸如使用cache的功能產生影響。當然也可以使用相對目錄,這樣需要結合工作目錄來使用。本文示例僅僅設定必須選項,設定後資訊如下所示:
在這裡插入圖片描述
成功建立之後在管理的節點列表中可以看到除了master之外,添加了新的節點agent001,但此時還是不可用狀態。
在這裡插入圖片描述

確認一下agent001的詳細資訊,可以看到支援如下兩種方式啟動slave節點:

  • 方式1: 通過瀏覽器來啟動
  • 方式2: 通過命令列來啟動
    因為後續需要進行進一步的自動化,因此本文此處直接使用命令列的方式來啟動。

在這裡插入圖片描述

Step 3:啟動slave節點

在agent所在機器上建立相關目錄

[[email protected] slave]# ls
docker-compose.yml
[[email protected] slave]# mkdir -p /tmp/agent/jenkins
[[email protected] slave]#

設定啟動引數如下:

[[email protected] slave]# cat docker-compose.yml 
version: '2'

services:
  # jenkins service based on Jenkins LTS version
  jenkins:
    image: liumiaocn/jenkins:2.150.1
    environment:
      - JENKINS_MODE=slave
      - JENKINS_MASTER_URL=http://192.168.163.118:32002/computer/agent001/slave-agent.jnlp
      - JENKINS_SLAVE_SECRET=48de37b3bb2cbf61b2ff7eca62b692a436f54d6bf930e4e6a6f8b1d5f64fa4be
      - JENKINS_SLAVE_WORKDIR=/tmp/agent/jenkins
    volumes:
      - ./data/:/data/jenkins
    restart: "no"
[[email protected] slave]#

啟動jenkins的slave節點

[[email protected] slave]# docker-compose up -d
Creating network "slave_default" with the default driver
Creating slave_jenkins_1 ... 
Creating slave_jenkins_1 ... done
[[email protected] slave]# docker-compose ps
     Name                    Command               State          Ports        
------------------------------------------------------------------------------
slave_jenkins_1   /bin/tini -- /usr/local/bi ...   Up      50000/tcp, 8080/tcp 
[[email protected] slave]# 

結果確認,此時重新整理一下agent001的頁面,即可看到成功連線的資訊
在這裡插入圖片描述
整體管理的節點也被添加了進來,因為預設的ofexecutor是1,所以此節點最大並行度的job為1,可根據cpu的個數進行實際設定。
在這裡插入圖片描述
這樣則可以根據實際需要進行slave節點新增,以適應不斷增大的並行構建的速度需求。

參考文件