這篇文章給大家分享的是有關(guān)Jenkins集群下如何創(chuàng)建pipeline任務(wù)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供宜春網(wǎng)站建設(shè)、宜春做網(wǎng)站、宜春網(wǎng)站設(shè)計(jì)、宜春網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、宜春企業(yè)網(wǎng)站模板建站服務(wù),10多年宜春做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
整個(gè)集群環(huán)境一共有三臺電腦,信息如下: | 主機(jī)名 | IP地址 | 作用 | |--|--|--| | master | 192.168.133.131 | Jenkins集群的master節(jié)點(diǎn),提供web服務(wù) | | agent1 | 192.168.133.132 | Jenkins集群的一號工作接節(jié)點(diǎn),標(biāo)簽是maven | | agent2 | 192.168.133.133 | Jenkins集群的二號工作接節(jié)點(diǎn),標(biāo)簽是gradle |
本次實(shí)戰(zhàn)要體驗(yàn)Jenkins集群同時(shí)執(zhí)行兩個(gè)任務(wù),都是編譯構(gòu)建GitHub上的熱門開源項(xiàng)目:
在agent1上編譯和構(gòu)建spring-cloud-alibaba,再通過scp命令將構(gòu)建結(jié)果傳輸?shù)絤aster電腦的/usr/local/build_result目錄下;
在agent2編譯和構(gòu)建spring-framework,再通過scp命令將構(gòu)建結(jié)果傳輸?shù)絤aster電腦的/usr/local/build_result目錄下;
要做以下準(zhǔn)備工作才能順利執(zhí)行后續(xù)的任務(wù):
在master電腦上創(chuàng)建文件夾/usr/local/build_result
配置maven,在Jenkins網(wǎng)頁上選擇Global Tool Configuration,如下圖紅框所示:
新增一個(gè)maven配置,名為mvn-3.6.2,然后點(diǎn)擊“保存”按鈕,如下圖:
agent1和agent2上用scp命令傳輸文件到master上的時(shí)候,第一次ssh要在控制臺輸入"yes",為了避免執(zhí)行任務(wù)的時(shí)候出現(xiàn)這個(gè)等待輸入的操作,我們?nèi)ナ謩訄?zhí)行一遍,后面就再也不用了,ssh登錄agent1之后,執(zhí)行以下命令進(jìn)入容器:
docker exec -it agent /bin/bash
執(zhí)行命令ssh root@192.168.133.131,這時(shí)候控制臺提示輸入yes或者no,請您輸入yes,再根據(jù)提示輸入master的密碼,此時(shí)登錄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
此時(shí)您是在agent1的容器中ssh登錄了master,所以要連續(xù)輸入兩次exit命令才能返回到agent1的控制臺;
在agent2電腦上也執(zhí)行相同的操作;
至此,準(zhǔn)備完畢,可以創(chuàng)建任務(wù)了;
spring-cloud-alibaba是個(gè)maven工程,要用maven來編譯構(gòu)建:
在Jenkins網(wǎng)頁上,點(diǎn)擊下圖紅框位置,創(chuàng)建一個(gè)任務(wù):
如下圖,創(chuàng)建名為spring-clolud-alibaba的pipeline任務(wù):
下圖紅框位置就是輸入pipeline腳本的地方:
在上圖紅框位置輸入以下內(nèi)容:
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 '下載結(jié)束,解壓歸檔包' sh 'tar -zxf v2.1.1.RELEASE.tar.gz' } } stage('Build') { steps { echo '開始編譯構(gòu)建' sh 'cd spring-cloud-alibaba-2.1.1.RELEASE && mvn clean package -U -DskipTests' } } stage('Save') { steps { echo '將構(gòu)建結(jié)果傳送到存儲服務(wù)器' 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 '清理完畢' } } } }
點(diǎn)擊底部的"保存"按鈕后,點(diǎn)擊下圖紅框中的"立即構(gòu)建"即可開始任務(wù):
點(diǎn)擊下圖紅框中的紅色圓球,即可跳轉(zhuǎn)到實(shí)時(shí)輸出任務(wù)信息的頁面:
頁面實(shí)時(shí)輸出構(gòu)建信息:
主頁面可以看到是agent1在執(zhí)行任務(wù),如下圖紅框所示,可見pipeline腳本中的標(biāo)簽已經(jīng)生效了,將任務(wù)調(diào)度到標(biāo)簽為maven的節(jié)點(diǎn)去執(zhí)行: 編譯構(gòu)建spring-cloud-alibaba工程是個(gè)費(fèi)時(shí)的操作,我們現(xiàn)在去創(chuàng)建另一個(gè)任務(wù):編譯構(gòu)建spring-framework
spring-framework是個(gè)gradle工程,不需要準(zhǔn)備gradle環(huán)境,在執(zhí)行編譯命令時(shí)會自動下載gradle工具:
創(chuàng)建名為spring-framework的pipeline任務(wù):
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 '開始編譯構(gòu)建' sh './gradlew build' } } stage('傳送構(gòu)建結(jié)果') { steps { echo '將構(gòu)建結(jié)果傳送到存儲服務(wù)器' 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 '清理完畢' } } } }
立即執(zhí)行此任務(wù),可見任務(wù)已經(jīng)被調(diào)度到agent2上去執(zhí)行了,此時(shí)的agent1和agent2正在同時(shí)執(zhí)行任務(wù),如下圖:
上述兩個(gè)任務(wù)在構(gòu)建成功后,都會通過scp命令將構(gòu)建結(jié)果傳送到master的/usr/local/build_result目錄下:
[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
至此,Jenkins集群下的pipeline實(shí)戰(zhàn)就完成了,借助pipeline的標(biāo)簽參數(shù)可以控制任務(wù)的調(diào)度節(jié)點(diǎn),實(shí)現(xiàn)多任務(wù)同時(shí)在多節(jié)點(diǎn)執(zhí)行;
感謝各位的閱讀!關(guān)于“Jenkins集群下如何創(chuàng)建pipeline任務(wù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!