DevOps課程-Jenkins 15
Jenkins Server要控制被佈署機台執行佈署,需要透過額外的外掛
— SSH Agent
所以首先要在Jenkins上面安裝SSH Agent的Plugin:
接著我重新建立一個新的multi-branch-pipeline:
Job內容依樣使用到既有的github的Repo(參考之前前面其他Job設置):
接著準備好對應上述的Jenkinsfile:
直接選用既有的branch:
然後在該branch最外層加入檔案 →JenkinsfileEC2
這時候要改造上述JenkinsfileEC2中的deploy來執行docker run指令
執行的Jenkins語法可以到以下頁面參考:
該頁面就不用保留了
並且我們需在該新的Jenkins Job內建立Job可以使用的憑證連向EC2的機台
最後改寫如下:
完整pipeline如下:
Commit進剛剛的Branch內:
然後執行前記得開通AWS的EC2那邊的防火牆,允許Jenkins Server連過去:
然後就可以嘗試執行了:
到這邊發生錯誤:
改寫前面宣告的agent none改成agent any:
然後又很悲劇的失敗了,發現指令有打錯:
StrickHostKeyChecking應該改成StrictHostKeyChecking
上面有一個字母不一樣,所以變為:
一樣commit進到github上再執行看到:
連到該EC2機台上確認是否有容器在跑:
這樣就完成了Jenkins Server透過ssh agent功能
去被佈署機台執行佈署容器的工作
同理也能夠執行jar/war等等才對!
並且再加上前面學到的打包,其實可以做完
拉Code →打包Jar →打包image →推image到hub →
被佈署機台拉image並run
最後記得手動關掉: