溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Jenkins集群下如何創(chuàng)建pipeline任務(wù)

發(fā)布時間:2021-11-26 15:41:53 來源:億速云 閱讀:323 作者:小新 欄目:云計算

這篇文章給大家分享的是有關(guān)Jenkins集群下如何創(chuàng)建pipeline任務(wù)的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

環(huán)境信息

整個集群環(huán)境一共有三臺電腦,信息如下: | 主機名 | IP地址 | 作用 | |--|--|--| | master | 192.168.133.131 | Jenkins集群的master節(jié)點,提供web服務(wù) | | agent1 | 192.168.133.132 | Jenkins集群的一號工作接節(jié)點,標簽是<font color="blue">maven</font> | | agent2 | 192.168.133.133 | Jenkins集群的二號工作接節(jié)點,標簽是<font color="blue">gradle</font> |

實戰(zhàn)內(nèi)容

本次實戰(zhàn)要體驗Jenkins集群同時執(zhí)行兩個任務(wù),都是編譯構(gòu)建GitHub上的熱門開源項目:

  1. 在agent1上編譯和構(gòu)建spring-cloud-alibaba,再通過scp命令將構(gòu)建結(jié)果傳輸?shù)絤aster電腦的<font color="blue">/usr/local/build_result</font>目錄下;

  2. 在agent2編譯和構(gòu)建spring-framework,再通過scp命令將構(gòu)建結(jié)果傳輸?shù)絤aster電腦的<font color="blue">/usr/local/build_result</font>目錄下;

準備工作

要做以下準備工作才能順利執(zhí)行后續(xù)的任務(wù):

  1. 在master電腦上創(chuàng)建文件夾<font color="blue">/usr/local/build_result</font>

  2. 配置maven,在Jenkins網(wǎng)頁上選擇<font color="blue">Global Tool Configuration</font>,如下圖紅框所示: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  3. 新增一個maven配置,名為<font color="blue">mvn-3.6.2</font>,然后點擊“保存”按鈕,如下圖: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  4. agent1和agent2上用scp命令傳輸文件到master上的時候,第一次ssh要在控制臺輸入"yes",為了避免執(zhí)行任務(wù)的時候出現(xiàn)這個等待輸入的操作,我們?nèi)ナ謩訄?zhí)行一遍,后面就再也不用了,ssh登錄agent1之后,執(zhí)行以下命令進入容器:

docker exec -it agent /bin/bash
  1. 執(zhí)行命令<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>,再根據(jù)提示輸入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
  1. 此時您是在agent1的容器中ssh登錄了master,所以要連續(xù)輸入兩次<font color="blue">exit</font>命令才能返回到agent1的控制臺;

  2. 在agent2電腦上也執(zhí)行相同的操作;

至此,準備完畢,可以創(chuàng)建任務(wù)了;

編譯構(gòu)建spring-cloud-alibaba的任務(wù)

spring-cloud-alibaba是個maven工程,要用maven來編譯構(gòu)建:

  1. 在Jenkins網(wǎng)頁上,點擊下圖紅框位置,創(chuàng)建一個任務(wù): Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  2. 如下圖,創(chuàng)建名為<font color="blue">spring-clolud-alibaba</font>的pipeline任務(wù): Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  3. 下圖紅框位置就是輸入pipeline腳本的地方: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  4. 在上圖紅框位置輸入以下內(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 '清理完畢'
            }
        }
    }
}
  1. 點擊底部的"保存"按鈕后,點擊下圖紅框中的"立即構(gòu)建"即可開始任務(wù):

Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  1. 點擊下圖紅框中的紅色圓球,即可跳轉(zhuǎn)到實時輸出任務(wù)信息的頁面: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  2. 頁面實時輸出構(gòu)建信息: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

  3. 主頁面可以看到是agent1在執(zhí)行任務(wù),如下圖紅框所示,可見pipeline腳本中的標簽已經(jīng)生效了,將任務(wù)調(diào)度到標簽為<font color="blue">maven</font>的節(jié)點去執(zhí)行: Jenkins集群下如何創(chuàng)建pipeline任務(wù) 編譯構(gòu)建spring-cloud-alibaba工程是個費時的操作,我們現(xiàn)在去創(chuàng)建另一個任務(wù):編譯構(gòu)建spring-framework

編譯構(gòu)建spring-framework的任務(wù)

spring-framework是個gradle工程,不需要準備gradle環(huán)境,在執(zhí)行編譯命令時會自動下載gradle工具:

  1. 創(chuàng)建名為<font color="blue">spring-framework</font>的pipeline任務(wù):

  2. 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 '清理完畢'
            }
        }
    }
}
  1. 立即執(zhí)行此任務(wù),可見任務(wù)已經(jīng)被調(diào)度到agent2上去執(zhí)行了,此時的agent1和agent2正在同時執(zhí)行任務(wù),如下圖: Jenkins集群下如何創(chuàng)建pipeline任務(wù)

查看構(gòu)建結(jié)果

上述兩個任務(wù)在構(gòu)建成功后,都會通過scp命令將構(gòu)建結(jié)果傳送到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實戰(zhàn)就完成了,借助pipeline的標簽參數(shù)可以控制任務(wù)的調(diào)度節(jié)點,實現(xiàn)多任務(wù)同時在多節(jié)點執(zhí)行;

感謝各位的閱讀!關(guān)于“Jenkins集群下如何創(chuàng)建pipeline任務(wù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI