什麼是Jenkins的分佈式構建和部署?
Jenkins的分佈式構建,在Jenkins的配置中叫作節點,分佈式構建可以讓同一套代碼或項目在不一樣的環境(如:Windows和Linux系統)中編譯、部署等java
何時使用節點和做用?
當咱們使用多臺服務器時,而且配置了tomcat或jboss集羣服務,可經過jenkins的節點配置,將jenkins項目發佈在不一樣服務器上(分佈jenkins工做空間,部署項目到不一樣服務器的tomcat或jboss),這就造成了jenkins的分佈式。節點服務器不須要安裝jenkins(只須要運行一個slave節點服務),構建事件的分發由master端(jenkins主服務)來執行。node
節點服務器的要求
注意:若是節點主機上不存在JDK,Jenkins會去自動下載,但Oracle對程序自動下載作了限制,會致使下載失敗,而後一直循環這個問題
建議:全部Linux或者Windows機器的環境路徑統一(如:JDK、Maven),安裝位置和jenkins所在服務器的JDK和maven必須一致,也就是說jenkins所在服務器和各個節點服務器中的JDK和Maven目錄和文件名都是同樣的。以便於管理、不容易出現問題tomcat
節點管理
一般的狀況下在咱們的一個項目當中,項目會有多個分支系統,而咱們不可能爲每一個分支系統都配置一個jenkins服務,這樣既浪費資源,也增長構建部署的難度,爲了解決這個問題jenkins給使用者提供了很是強大的分佈式部署功能,也就是節點的管理,咱們只須要在master節點配置好jenkins服務,經過指定slave節點來進行對應的系統進行部署就能夠達到分佈式部署。服務器
[root@caosm ~]# java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) [root@caosm ~]# vi /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_144 export JRE_HOME=/usr/java/jdk1.8.0_144/jre export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar:JRE_HOME/lib:CLASSPATH export PATH=JAVA_HOME/bin:PATH
[root@caosm ~]# mkdir node-1
節點 agent { node { label 'labelName' } }行爲相同 agent { label 'labelName' },但node容許其餘選項(如customWorkspace) 標籤 使用提供的標籤在Jenkins環境中可用的代理上執行管道或階段。例如:agent { label 'my-defined-label' }
pipeline { agent { node { label 'node-1' } } stages { stage('make node-1'){ steps { echo "make script : make node-1" sh 'mkdir -p /usr/local/node-1' } } } }
[root@caosm ~]# ls /usr/local/ bin etc games include java lib lib64 libexec node-1 sbin share src
pipeline { agent { label 'node-4' } stages { stage('make node-4'){ steps { echo "make script : make node-4" sh 'mkdir -p /usr/local/node-4' } } } }
注意:label 這裏寫的是標籤的名稱maven
[root@caosm ~]# ls /usr/local/ bin etc games include java lib lib64 libexec node-1 node-2 node-4 sbin share src