您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Jenkins集群下如何創建pipeline任務的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
整個集群環境一共有三臺電腦,信息如下: | 主機名 | IP地址 | 作用 | |--|--|--| | master | 192.168.133.131 | Jenkins集群的master節點,提供web服務 | | agent1 | 192.168.133.132 | Jenkins集群的一號工作接節點,標簽是<font color="blue">maven</font> | | agent2 | 192.168.133.133 | Jenkins集群的二號工作接節點,標簽是<font color="blue">gradle</font> |
本次實戰要體驗Jenkins集群同時執行兩個任務,都是編譯構建GitHub上的熱門開源項目:
在agent1上編譯和構建spring-cloud-alibaba,再通過scp命令將構建結果傳輸到master電腦的<font color="blue">/usr/local/build_result</font>目錄下;
在agent2編譯和構建spring-framework,再通過scp命令將構建結果傳輸到master電腦的<font color="blue">/usr/local/build_result</font>目錄下;
要做以下準備工作才能順利執行后續的任務:
在master電腦上創建文件夾<font color="blue">/usr/local/build_result</font>
配置maven,在Jenkins網頁上選擇<font color="blue">Global Tool Configuration</font>,如下圖紅框所示:
新增一個maven配置,名為<font color="blue">mvn-3.6.2</font>,然后點擊“保存”按鈕,如下圖:
agent1和agent2上用scp命令傳輸文件到master上的時候,第一次ssh要在控制臺輸入"yes",為了避免執行任務的時候出現這個等待輸入的操作,我們去手動執行一遍,后面就再也不用了,ssh登錄agent1之后,執行以下命令進入容器:
docker exec -it agent /bin/bash
執行命令<font color="blue">ssh root@192.168.133.131</font>,這時候控制臺提示輸入<font color="blue">yes</font>或者<font color="blue">no</font>,請您輸入<font color="blue">yes</font>,再根據提示輸入master的密碼,此時登錄master成功:
[root@agent1 16]# docker exec -it agent /bin/bash root@82eb8cfec0a6:/# ssh root@192.168.133.131 The authenticity of host '192.168.133.131 (192.168.133.131)' can't be established. ECDSA key fingerprint is SHA256:DPE2nldWHiOhC4DB9doy7jPWNZVup6XFZ+sR2i1gqz8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.133.131' (ECDSA) to the list of known hosts. root@192.168.133.131's password: Last login: Sat Nov 16 19:59:42 2019 from 192.168.133.132
此時您是在agent1的容器中ssh登錄了master,所以要連續輸入兩次<font color="blue">exit</font>命令才能返回到agent1的控制臺;
在agent2電腦上也執行相同的操作;
至此,準備完畢,可以創建任務了;
spring-cloud-alibaba是個maven工程,要用maven來編譯構建:
在Jenkins網頁上,點擊下圖紅框位置,創建一個任務:
如下圖,創建名為<font color="blue">spring-clolud-alibaba</font>的pipeline任務:
下圖紅框位置就是輸入pipeline腳本的地方:
在上圖紅框位置輸入以下內容:
pipeline { agent { label 'maven' } tools { maven 'mvn-3.6.2' } stages { stage('Checkout') { steps { echo '從GitHub下載spring-cloud-alibaba工程的源碼(2.1.1.RELEASE歸檔包)' sh 'wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz' echo '下載結束,解壓歸檔包' sh 'tar -zxf v2.1.1.RELEASE.tar.gz' } } stage('Build') { steps { echo '開始編譯構建' sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean package -U -DskipTests' } } stage('Save') { steps { echo '將構建結果傳送到存儲服務器' sh 'cd spring-cloud-alibaba-2.1.1.RELEASE/spring-cloud-alibaba-nacos-discovery/target && sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result' echo '傳送完畢' } } stage('Clean') { steps { echo '清理Maven工程' sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean' echo '清理完畢' } } } }
點擊底部的"保存"按鈕后,點擊下圖紅框中的"立即構建"即可開始任務:
點擊下圖紅框中的紅色圓球,即可跳轉到實時輸出任務信息的頁面:
頁面實時輸出構建信息:
主頁面可以看到是agent1在執行任務,如下圖紅框所示,可見pipeline腳本中的標簽已經生效了,將任務調度到標簽為<font color="blue">maven</font>的節點去執行: 編譯構建spring-cloud-alibaba工程是個費時的操作,我們現在去創建另一個任務:編譯構建spring-framework
spring-framework是個gradle工程,不需要準備gradle環境,在執行編譯命令時會自動下載gradle工具:
創建名為<font color="blue">spring-framework</font>的pipeline任務:
pipeline腳本如下:
pipeline { agent { label 'gradle' } stages { stage('Checkout') { steps { echo '從GitHub下載spring-framework工程的源碼(master分支)' checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/spring-projects/spring-framework.git']]]) } } stage('Build') { steps { echo '開始編譯構建' sh './gradlew build' } } stage('傳送構建結果') { steps { echo '將構建結果傳送到存儲服務器' sh 'cd spring-core/build/libs && sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result && cd ../../..' echo '傳送完畢' } } stage('Clean') { steps { echo '清理gradle工程' sh './gradlew clean' echo '清理完畢' } } } }
立即執行此任務,可見任務已經被調度到agent2上去執行了,此時的agent1和agent2正在同時執行任務,如下圖:
上述兩個任務在構建成功后,都會通過scp命令將構建結果傳送到master的<font color="blue">/usr/local/build_result</font>目錄下:
[root@master build_result]# ls agent.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE-sources.jar spring-objenesis-repack-3.1.jar spring-cglib-repack-3.3.0.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE-javadoc.jar spring-core-5.2.2.BUILD-SNAPSHOT.jar
<br> 至此,Jenkins集群下的pipeline實戰就完成了,借助pipeline的標簽參數可以控制任務的調度節點,實現多任務同時在多節點執行;
感謝各位的閱讀!關于“Jenkins集群下如何創建pipeline任務”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。