一.CI,CD,Jenkins的介紹
CI:持續整合(Continuous integration,簡稱 CI),在傳統的軟體開發環境中,有整合,但是沒有持續整合這種說法,長時間的分支與主幹脫離,導致分支與主幹可能存在較大偏差,在整合程式碼的時候可能需要花費數小時更久的時間來修復程式碼,以便最終將程式碼整合主幹(俗稱"整合地獄"或"整合災難");而CI旨在鼓勵團隊成員進行頻繁整合(例如每小時或至少每天一次)來避免這種情況的出現,通過自動檢測、拉取、構建和(在大多數情況下)進行單元測試的過程,來保障程式碼的質量可以進行下一步的使用,這也是持續整合的目的,CI是屬於開發人員的自動化流程。
CD:持續交付(Continuous Delivery)和持續部署(Continuous Deployment),這裡查閱了一些資料,並簡單總結了一下:
1.持續交付意味著所有的變更都可以隨時交付生產使用,強調的是一種可交付的能力
2.持續部署意味著所有被發現的release candidate 並且通過所有質量測試的變更都會被自動部署到生產環境中,強調的是一種方式
Jenkins:Jenkins是開源CI&CD軟體領導者,並擁有眾多外掛來支援它用於持續、自動的構建/測試軟體專案、監控外部任務的執行
二.在docker上安裝Jenkins
選擇jenkins的映象檔案,這裡推薦使用jenkinsci/blueocean,該映象包含當前的長期支援 (LTS) 的Jenkins版本 (可以投入使用) ,捆綁了所有Blue Ocean外掛和功能。這意味著你不需要單獨安裝Blue Ocean外掛,映象地址:https://hub.docker.com/r/jenkinsci/blueocean/
docker run \ -u root \ --rm \ -d \ -p 8083:8080 \ -p 50000:50000 \ -v /data/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean
引數說明:
--rm 關閉時自動刪除Docker容器(下圖為例項)。如果您需要退出Jenkins,這可以保持整潔;
-d 在後臺執行容器;
-p 對映容器服務的8080埠到宿主機的8090(我的8080已經被Apollo佔用,所以改為8083,沒被佔用的可以不用改,發現很多工具都喜歡用8080埠,比如:Apollo,SkyWalking,還有這裡的Jenkins等)端 口,下面的50000也是一樣,將容器的埠50000 對映到主機上的埠50000;
-v 這裡是將本機的“/data/jenkins”目錄掛載到容器中的/var/jenkins_home中,作為jenkins的儲存目錄;/var/run/docker.sock 表示Docker守護程式通過其監聽的基於Unix的套接字。該對映允許jenkinsci/blueocean 容器與Docker守護程式通訊。
jenkinsci/blueocean 是映象名稱
docker run的時候,如果映象檔案不存在,則會先自動拉取該映象,然後再啟動容器,通過下圖可以看到有提示說明本地不存在該映象,然後自動拉取的過程
等待安裝完成之後,開啟瀏覽器訪問:http://部署的機器ip:8083 (沒改的話預設8080),就可以看到Jenkins的介面
然後通過以下命令訪問Jenkins控制檯日誌,複製出密碼(在兩組星號之間的就是生成好的管理員密碼)如圖
docker logs <CONTAINER ID>
複製出密碼後,按照頁面的提示,貼上過去,點選繼續就進入下一步驟了
這裡點選安裝推薦的外掛,然後等待安裝完成
外掛安裝完成後,可根據提示建立使用者或者繼續使用admin,後面預設點選儲存並完成,就可以進入Jenkins的首頁了
到這裡,Jenkins部署流程就已經結束了,再分享兩個可能用到的命令:
1.訪問Jenkins / Blue Ocean Docker容器
docker exec -it <CONTAINER ID> bash
2.訪問Jenkins控制檯日誌
docker logs <CONTAINER ID>
上面獲取管理員密碼就是就是用的這個命令,部署下來還挺快的,大家動手試試吧!