自動化部署--Jenkins--流水線構(gòu)建(五)

一铃慷、流水線自動化構(gòu)建

??Jenkins Pipeline是一套插件,支持將連續(xù)輸送Pipeline實施和整合到Jenkins蜕该。Pipeline提供了一組可擴展的工具犁柜,用于通過PipelineDSL為代碼創(chuàng)建簡單到復(fù)雜的傳送Pipeline。
?? 對于單個項目來說堂淡,使用這樣的Pipeline來構(gòu)建能夠滿足絕大部分需求馋缅,但是這樣做也有很多缺陷,包括:
多個項目的Pipeline打包腳本不能公用淤齐,導(dǎo)致一個項目寫一份腳本股囊,維護比較麻煩。
??Jenkins提供了一個更優(yōu)雅的管理Pipeline腳本的方式更啄,在配置項目Pipeline的時候稚疹,選擇Pipeline script from SCM。
??這樣祭务,Jenkins在啟動job的時候内狗,首先會去倉庫里面拉取腳本,然后再運行這個腳本义锥。在腳本里面柳沙,我們規(guī)定的構(gòu)建方式和流程,就會按部就班地執(zhí)行拌倍。

二赂鲤、Pipeline的幾個基本概念

Stage: 階段,一個Pipeline可以劃分為若干個Stage柱恤,每個Stage代表一組操作数初。注意,Stage是一個邏輯分組的概念梗顺,可以跨多個Node泡孩。
Node: 節(jié)點,一個Node就是一個Jenkins節(jié)點寺谤,或者是Master仑鸥,或者是slave,是執(zhí)行Step的具體運行期環(huán)境变屁。
Step: 步驟眼俊,Step是最基本的操作單元,小到創(chuàng)建一個目錄敞贡,大到構(gòu)建一個Docker鏡像泵琳,由各類Jenkins Plugin提供。

三誊役、PIpeline語法

1.Pipeline支持兩種語法:Declarative Pipeline(在Pipeline 2.5中引入获列,結(jié)構(gòu)化方式)和Scripted Pipeline,兩者都支持建立連續(xù)輸送的Pipeline蛔垢。
共同點:
兩者都是pipeline代碼的持久實現(xiàn)击孩,都能夠使用pipeline內(nèi)置的插件或者插件提供的steps,兩者都可以利用共享庫擴展鹏漆。
區(qū)別:
兩者不同之處在于語法和靈活性巩梢。Declarative pipeline對用戶來說,語法更嚴格艺玲,有固定的組織結(jié)構(gòu)括蝠,更容易生成代碼段,使其成為用戶更理想的選擇饭聚。但是Scripted pipeline更加靈活忌警,因為Groovy本身只能對結(jié)構(gòu)和語法進行限制,對于更復(fù)雜的pipeline來說秒梳,用戶可以根據(jù)自己的業(yè)務(wù)進行靈活的實現(xiàn)和擴展法绵。
Declarative Pipeline:

pipeline {
    agent any  // 在可用的節(jié)點運行
    stages{
    stage ('Prepare'){
            steps{          // 清空發(fā)布目錄
                bat '''if exist D:\\publish\\LoginServiceCore (rd/s/q D:\\publish\\LoginServiceCore)
                       if exist C:\\Users\\Administrator\\.nuget (rd/s/q C:\\Users\\Administrator\\.nuget) exit''' } } 

       // 拉取git代碼倉庫
       stage ('Checkout'){
            steps{
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], 
                    userRemoteConfigs: [[credentialsId: 'c6d98bbd-5cfb-4e26-aa56-f70b054b350d', 
                    url: 'http://xxx/xxx/xxx']]])
                  }
            }

       // 構(gòu)建
       stage ('Build'){
          steps{
             bat '''cd "D:\\Program Files (x86)\\Jenkins\\workspace\\LoginServiceCore\\LoginApi.Hosting.Web"
                  dotnet restore
                  dotnet build
                  dotnet publish --configuration Release --output D:\\publish\\LoginServiceCore'''
                  }
            }
    
       // 部署
      stage ('Deploy'){
          steps{
               bat '''cd D:\\PipelineScript\\LoginServiceCore
                  python LoginServiceCore.py'''
                  }
             }
        
      // 自動化測試(python代碼實現(xiàn))
      stage ('Test'){
          steps{
               bat'''cd D:\\PipelineScript\\LoginServiceCore
              python LoginServiceCoreApitest.py'''   
                  }
             }
    }
 }

Scripted Pipeline:

node('master') {     // master節(jié)點運行,以下stage也可指定節(jié)點
    stage 'Prepare'  // 清空發(fā)布目錄
        bat '''if exist D:\\publish\\LoginServiceCore (rd/s/q D:\\publish\\LoginServiceCore)
               if exist C:\\Users\\Administrator\\.nuget (rd/s/q C:\\Users\\Administrator\\.nuget)
               exit'''

    // 拉取git代碼倉庫
    stage 'Checkout'
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], 
       submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c6d98bbd-5cfb-4e26-aa56-f70b054b350d', 
            url: 'http://xxx/xxx/xxx']]])
   
    // 構(gòu)建
    stage 'Build'
        bat '''cd "D:\\Program Files (x86)\\Jenkins\\workspace\\LoginServiceCore\\LoginApi.Hosting.Web"
            dotnet restore
            dotnet build
            dotnet publish --configuration Release --output D:\\publish\\LoginServiceCore'''
    
    // 部署
    stage 'Deploy'
        bat '''
        cd D:\\PipelineScript\\LoginServiceCore
        python LoginServiceCore.py
        '''

    // 自動化測試(python代碼實現(xiàn))    
    stage 'Test'
        bat'''
        cd D:\\PipelineScript\\LoginServiceCore
        python LoginServiceCoreApitest.py
        '''   
}

四酪碘、Pipeline配置

1.新建一個“流水線”的job


新建一個任務(wù)
  1. 配置Pipeline腳本


    配置Pipeline腳本
  2. 執(zhí)行結(jié)果


    執(zhí)行結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朋譬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兴垦,更是在濱河造成了極大的恐慌徙赢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件探越,死亡現(xiàn)場離奇詭異狡赐,居然都是意外死亡,警方通過查閱死者的電腦和手機扶关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門阴汇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人节槐,你說我怎么就攤上這事搀庶。” “怎么了铜异?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵哥倔,是天一觀的道長。 經(jīng)常有香客問我揍庄,道長咆蒿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮沃测,結(jié)果婚禮上缭黔,老公的妹妹穿的比我還像新娘。我一直安慰自己蒂破,他們只是感情好馏谨,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著附迷,像睡著了一般惧互。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喇伯,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天喊儡,我揣著相機與錄音,去河邊找鬼稻据。 笑死艾猜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的攀甚。 我是一名探鬼主播箩朴,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秋度!你這毒婦竟也來了炸庞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤荚斯,失蹤者是張志新(化名)和其女友劉穎埠居,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體事期,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡滥壕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了兽泣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绎橘。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唠倦,靈堂內(nèi)的尸體忽然破棺而出称鳞,到底是詐尸還是另有隱情,我是刑警寧澤稠鼻,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布冈止,位于F島的核電站,受9級特大地震影響候齿,放射性物質(zhì)發(fā)生泄漏熙暴。R本人自食惡果不足惜闺属,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望周霉。 院中可真熱鬧掂器,春花似錦、人聲如沸诗眨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匠楚。三九已至,卻和暖如春厂财,著一層夾襖步出監(jiān)牢的瞬間芋簿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工璃饱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留与斤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓荚恶,卻偏偏與公主長得像撩穿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谒撼,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Jenkins Pipeline 介紹 要實現(xiàn)在 Jenkins 中的構(gòu)建工作食寡,可以有多種方式,這里采用比較常用的...
    祁恩達閱讀 5,234評論 1 2
  • 1.Sections agent 該 agent 部分指定整個 Pipeline 或特定階段在 Jenkins 環(huán)...
    PC_Repair閱讀 5,328評論 0 1
  • 國際慣例 官方文檔 什么是jenkins pipeline Jenkins Pipeline(或簡稱為“Pipel...
    yc紫日閱讀 1,936評論 1 5
  • 前言 Jenkins就不用做多余的介紹了廓潜,作為CI/CD首選的開源解決方案抵皱,持續(xù)集成 (Continous Int...
    王奧OX閱讀 3,121評論 1 13
  • 在中國,紫禁城的故事如果說起來三天三夜都講不完辩蛋,紫禁城曾是明清兩代皇帝居住的地方呻畸,有皇權(quán)在的地方,必有高貴顯赫也必...
    Silence緣閱讀 634評論 0 0