在Devops的大環境下,持續建構工具Jenkins不是最新的技術了,網上亦有很多Jenkins相關的文章,此文是自己在學習和實踐中總結的心得,希望能幫助遇正在踩坑的小夥伴!
原理篇
1.CI/CD原理
CI(Continuous Integration)持續內建,CD(Continuous Delivery) 持續傳遞(當然也有叫
Continuous
Deployment)通常會采用一些軟體如Jenkins、Drone、Travis、Gocd等來輔助項目流程。CI/CD能夠與Git
SVN等代碼管理倉庫內建,幫助使用者實作自動化任務。

2.Jenkins原理
①定時拉取代碼并編譯或者自定義觸發器hock拉取代碼
②打包釋出版本
③分析打包編譯後的結果
④完成編譯後的自定義操作
3.Jenkins+Docker原理
①從代碼倉庫拉取最新的代碼。
②Jenkins主機打包編譯代碼。
③Jenkins主機使用Dockerfile生成最新的鏡像,并push到倉庫。
④Docker主機pull最新的鏡像,删除舊的容器,并生成最新的容器,完成部署上線。
安裝篇
1.Jenkins的部署
①自定義搭建Jenkins服務,需要注意的是,啟動的方式最好是背景方式啟動
nohup java -jar jenkins.war -httpPort=8080 >> log 2>&1 &
輸出到log日志,友善啟動遇到問題時,能夠有效檢查出問題。
②Jenkins的路徑
當啟動完Jenkins後,小夥伴們不要以為Jenkins沒有生成檔案,預設的Jenkins項目路徑是在目前使用者的/home/user/.jenkins裡面(具體檔案含義可以自行查閱)。
2.Jenkins管理者密碼忘記
如果預設的Jenkins管理者密碼忘記時,可以進入/home/user/.jenkins路徑找到config.xml檔案,删除以下兩行
<useSecurity>true</useSecurity> <authorizationStrategy class=”hudson.security.FullControlOnceLoggedInAuthorizationStrategy”> … <securityRealm class=”hudson.security.HudsonPrivateSecurityRealm”>
删除完畢後,重新開機Jenkins,直接用管理者賬号進入,然後再修改管理者的密碼,不然會有安全問題,切記!
使用篇
1.Jenkins的密鑰對配置
①主菜單中Credentials的密鑰對是狹義的是指拉取代碼的密鑰隊,也就是在git或者其他代碼管理工具中配置的私鑰。
②系統管理中Jenkins SSH Key是指SSH連結伺服器所提供的私鑰。
2.maven配置
如果不想在系統配置中添加maven的配置的話,可以在管理中下載下傳Maven Integration plugin使用系統的maven環境。
Jenkins+Docker篇
1.以打包一個java項目為例,實際的Dockerfile應該這樣考慮,由于Jenkins打包是進入自身的工作路徑(/home/user/.jenkins/jobs/zhoutimo/workspace),是以Dockerfile最好放在此路徑之中,打包好的Java包會放在工作路徑下的target
FROM daocloud.io/library/java:openjdk-8u40 MAINTAINER zhoutimo COPY target/zhoutimo.jar /usr/src/myapp/ EXPOSE 50005
最後使用docker build完成鏡像的建立,最後上傳鏡像
docker build -t registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1 . docker push registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1
Tips:後面的那個.是表示目前路徑,請勿删除
2.每次Dockerfile完成後,新上傳的images會替換倉庫内舊的images,不必擔心沖突問題。
3.Docker主機建立最新的容器腳本
#!/bin/bash docker stop Test-zhoutimo docker rm Test-zhoutimo docker rmi registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1 docker run -d –name Test-zhoutimo –restart=always -p 50005:50005 -w /usr/src/myapp registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1 java -jar zhoutimo.jar
阿裡雲篇
1.阿裡雲也推出了類似的持續內建釋出工具CodePipeline,個人的了解也就是Jenkins的二次開發版。可以建議使用此工具,不過CodePipeline還是有一定的缺陷:
①.目前隻限定了5個項目的釋出。
②.不能自定義maven依賴的包。
2.如果項目伺服器是ECS的話,可以建議使用阿裡雲的容器鏡像服務進行鏡像的管理,其優點非常明顯:
①免費使用。
②可以使用内網傳輸,速度相當的快速!