天天看點

持續建構工具Jenkins使用細節

在Devops的大環境下,持續建構工具Jenkins不是最新的技術了,網上亦有很多Jenkins相關的文章,此文是自己在學習和實踐中總結的心得,希望能幫助遇正在踩坑的小夥伴!

原理篇

1.CI/CD原理

CI(Continuous Integration)持續內建,CD(Continuous Delivery) 持續傳遞(當然也有叫

Continuous

Deployment)通常會采用一些軟體如Jenkins、Drone、Travis、Gocd等來輔助項目流程。CI/CD能夠與Git

SVN等代碼管理倉庫內建,幫助使用者實作自動化任務。

持續建構工具Jenkins使用細節

2.Jenkins原理

①定時拉取代碼并編譯或者自定義觸發器hock拉取代碼

②打包釋出版本

③分析打包編譯後的結果

④完成編譯後的自定義操作

持續建構工具Jenkins使用細節

3.Jenkins+Docker原理

①從代碼倉庫拉取最新的代碼。

②Jenkins主機打包編譯代碼。

③Jenkins主機使用Dockerfile生成最新的鏡像,并push到倉庫。

④Docker主機pull最新的鏡像,删除舊的容器,并生成最新的容器,完成部署上線。

持續建構工具Jenkins使用細節

安裝篇

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的話,可以建議使用阿裡雲的容器鏡像服務進行鏡像的管理,其優點非常明顯:

①免費使用。

②可以使用内網傳輸,速度相當的快速!