Pipeline在Jenkins里的作用 最近一直在使用jenkins進行自動化部署的工作,開始覺得很爽,省去了很多重覆的工作,它幫助我自動拉伺服器的代碼,自動還原包包,自動編譯項目,自動發佈項目,自動打包鏡像,自動上傳倉庫,自動啟動docker服務,這一系列動作都是自動化的,聽起來確實很絢,但是, ...
Pipeline在Jenkins里的作用
最近一直在使用jenkins進行自動化部署的工作,開始覺得很爽,省去了很多重覆的工作,它幫助我自動拉伺服器的代碼,自動還原包包,自動編譯項目,自動發佈項目,自動打包鏡像,自動上傳倉庫,自動啟動docker服務,這一系列動作都是自動化的,聽起來確實很絢,但是,如果項目多了,要進行管理和調整也挺麻煩的,而且修改記錄是沒有的,不可追蹤,而就在這時候,pipeline出現了,它就是jenkins部署的代碼方式,它使用groovy腳本編寫,有了它,就不用使用jenkins嚮導了,有了它,你的jenkins變更就可以追蹤了(因為它的文件可以放在git,svn上)。
優點
事實上groovy腳本類似於一個json文件,你可以在裡面定義jenkins的節點(分發節點,負載均衡,一臺伺服器肯定扛不住),編寫CI、CD的每個步驟,編譯項目,測試項目,打包項目,啟動項目,發郵件通知,總之,你用jenkinsUI嚮導可以實現的,用pipeline都可以實現!
groovy的腳本編寫種類有有聲明風格和腳本風格兩種,根據個人喜好去選擇!
從代碼中分析語法
@Library('common-library') _ //引用一個外部類型 pipeline{ agent any //聲明全局分發節點 environment {//聲明全局變數 imageName = "svt/test" serviceName = "svt-test" } stages{ //定義構建的步驟 stage('CI'){//步驟1,名稱為CI,自定義即可 agent {label 'build'}//指定一個分發節點 steps{//CI步驟里的具體動作 cleanWs() gitScm("${repoUrl}","${branch}","${credentialsId}")//從git上拉一個代碼下到build節點 } //把這個項目在docker提供的aspnetcore鏡像里運行 dir("${deployPath}") { sh "docker run --rm --tty --user root -v ${WORKSPACE}/:/src/ --workdir=/src/deploy/ microsoft/dotnet sh publish.sh" buildImage("${imageName}") } } } stage('ServiceRun'){ agent {label 'svt'}//啟動docker服務的節點 steps{ startService("${serviceName}","${imageName}")//啟動服務 } } }
通過上面的代碼介紹,大家應該對jenkins pipeline有一個瞭解了,事實上,它和gitlab的pipeline非常類似,都是一個流程,從上到下的運行!
在互聯網高度發展的今天,大叔覺得,掌握一個CI、CD工具非常必要!
感謝各位的閱讀!