<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
jenkins是一款流行的開源持續整合軟體,外掛豐富,擴充套件靈活。2.0後推出pipeline流式構建,支援構建任務指令碼化。本文主要旨在使用jenkins 的pipeline功能完成java maven專案的打包,上傳jar到目標伺服器。pipeline推出時間不長,實際使用的不是很多,網上基本沒啥參考資料,官方的檔案很詳細,但不成本文所述體系。這篇博文是博主摸索半天后的成果,如有錯落,歡迎指出。
說明:本文環境預設包含元件:jenkins,maven,jdk
到設定中心外掛管理搜尋如下外掛,安裝
Pipeline Maven Integration Plugin :執行withMaven方法支援,用於構建maven專案工程,使用方式如下圖,詳細說明見:https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin
SSH Agent Plugin :sshagent方法支援,用於上傳構建產物到目標伺服器,使用詳情見:
https://wiki.jenkins.io/display/JENKINS/SSH+Agent+Plugin,這邊博主實操時有個大坑,後面說詳細說明
如圖
指令碼分三個步驟塊,分別是git clone(下載原始碼到本地),build(構建工程),deploy(上傳構建產物到目標主機)
node { stage('git clone') { // for display purposes checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxx-xxxx-xxxxx-xxxxxx', url: 'http://git.xx.xxx/xxx/xform-boot.git']]]) } stage('Build') { env.JAVA_HOME="${tool 'jdk1.8.0_92'}" withMaven( maven: 'M3', mavenLocalRepo: '.repository') { sh "mvn clean install -U -P${profile} -Dmaven.test.skip=true" } } stage('deploy') { sshagent(credentials: ['deploy_ssh_key']) { sh 'ssh root@120.xx.95.105' sh 'echo hello' sh 'scp producer/target/salesApp-1.0-RELEASES.jar root@120.xx.95.105:/root/deploy/' } } }
如上指令碼需要設定兩個認證憑證,分別是git的credentialsId和sshagent的credentials,到設定管理credentials處新增,如圖
git的認證比較簡單,使用密碼使用者名稱驗證,直接選Username with password就好了,這裡還有個技巧,後面會講到。
sshagen測試下來只支援私鑰,需要選擇如下設定:
如圖,使用了From the Jenkins master ~./ssh,需要你到jenkins所在主機的.ssh目錄,通過命令”ssh-keygen -t rsa“生成公私鑰,生成時會詢問你是否使用密碼 加密,可以直接跳過,如果寫了密碼,那麼上圖中Passphrase需要寫上加密密碼,沒寫就留空。然後將id_rsa.pub中的內容拷貝到目標主機的/root/.ssh/authorized_keys檔案中。上圖中的ID可以指定,不指定會生成一個唯一字串如:
這個ID對應了pipeline指令碼中的驗證ID,到此,我們準備工作都已經做完了。
細心的你可能發現了指令碼中有類似預留位置。這些的程式碼,如${branch},${profile},其實就是pipeline的預留位置,這些引數控制了git從哪個分支拉程式碼,maven構建的哪個環境的程式碼,這些引數需要在構建任務中明確指定,用以區分是生產環境還是測試環境等,如圖
到這裡我們的準備工作都已完成了,可以開啟構建任務測試了,這時博主走了一個好大的坑,無論認證憑證模組怎麼設定,總是拋如下的異常:Host key verification failed.
這個異常非常明顯,pipeline流式構建前兩個步驟已經成功了,程式碼拉下來並已經構建成功了。但是通過sshagent上傳到目標伺服器時,認證失敗了。這個問題佔了我們摸索過程的一大半時間。最後還是感謝唐老大發現了問題。
異常原因:生產公私鑰使用的root使用者生產的,jenkins是使用jenkins使用者啟動的,所有jenkins沒有許可權,
其實上面所有的步驟都沒問題。最終在嘗試了無數次的構建失敗後構建圖示終於綠了,構建產物成功上傳到目標主機
一次次的失敗:
成功的綠標
流式專案Item建立好後,在左邊選單最下面會有pipeline的語法選單,點進去,會有如下頁面:
1.其中箭頭一所指的,就是前文提到的git新增認證的一個小技巧,這個是一個pipeline指令碼生成器,選中git scm後會出來git相關的設定,按照提示新增後,點選生成,就會生成以及設定組裝好的指令碼。特別適合新手
2.箭頭而是步驟指南,這個裡面羅列了所有pipeline語法支援的一些DSL函數,如git,checkout,wthMaven等,並且詳細的描述了方法的具體使用細節,詳細 到每個引數的說明,如withMavene:
pipeline的概念去年就聽說了,現在實際操作了一把,還是非常的震撼,通過在專案中新增jenkinsfile就可以解決構建問題,而且非常靈活,支援寫if等的邏輯判斷指令碼來決定構建行為。經歷了無數次失敗後成功的成就感不言而喻,有興趣的都可以試試,徹底改變原先的構建模式。建議剛接觸pipeline的新手,多看看pipeline語法頁面的相關內容,對理解pipeline語法及書寫指令碼有很大的幫助。其次就是去相關的外掛wiki頁面多看看說明。國內的那些部落格很多都是一筆帶過,看不出在生產上面應用的痕跡,不建議去參考
以上就是jenkins外掛Pipeline指令碼jenkinsfile操作指南的詳細內容,更多關於jenkins外掛Pipeline指令碼jenkinsfile操作的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45