摘要:此步的產出分支特定版本號自動構建自動構建代碼包做法也很通用了,將的鉤子同結合,達到特定分支有時機觸發自動構建,將代碼包從拉取并打包為代碼包。
docker和Jenkins不是什么新東西了,兩者結合也不是什么稀奇的事情,也已經有很多Jenkins和docker相結合的文章,此文僅為自己的一點心得實踐,如有不對的地方,歡迎大家糾正。
先貼上大致的流程圖,逐步說明:
并沒有什么好說明的,就是簡單的使用了Git作為版本控制工具而已,通用使用規范不在細說。
此步的產出:
Git分支特定版本號
做法也很通用了,將project的Git鉤子同Jenkins結合,達到特定分支有push時機觸發自動構建,將代碼包從Git拉取并打包為代碼包。
此步產出:
打包好的代碼包:project.tar.gz
在此步中,我們為每個project提供特定的測試環境,并且在此環境中執行項目代碼鏡像打包操作。在此步中,需要提前準備幾樣東西:
測試環境:我們這里為一臺干凈的服務器(不要再問好奢侈,有錢就是任性),部署docker環境;
project的base鏡像:對于一個成熟的項目,所依賴的環境是固定可知的,因此提前準備好其所依賴的base image是必要的。
如,我們一個項目的base image的Dockerfile:
FROM centos:liuyanglong MAINTAINER liuyanglong "liuyanglong@xxxx.com" MAINTAINER version "online" USER root ADD php.ini /home/work/local/php/etc/ ADD php-fpm.conf /home/work/local/php/etc/ ONBUILD ADD project-code.tar.gz /home/work/ ONBUILD ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]
注意最下面的兩行ONBUILD
而在每一次Jenkins的構建時,要做的僅僅是將代碼包傳入,并且執行docker build即可,此時build所使用的Dockerfile的內容只有一行:
From this_project_image:base
而執行build時只會根據base image中的兩行ONBUILD執行兩個命令:
ADD project-code.tar.gz /home/work/ ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]
注意:此步僅僅在測試服務器做了docker build操作,并沒有執行docker pull!!
鏡像打包完畢后,此步并沒有結束!!
調用腳本,根據此構件號的版本docker image創建對應的容器,腳本的輸出為其對應的訪問方式,供QA同學測試使用。
這樣,每個構建好的版本都有對應的測試環境,且互不沖突!
鄙人的腳本地址為:https://github.com/Liuyanglong/docker-tools/blob/master/create_docker
此步的產出:
docker build成功的project image,如以構建號為image版本號,叫做: project_dev:530
此版本代碼的測試環境地址,如:172.30.40.2
生成線上鏡像到上一步為止,測試構建環境已經結束,當QA同學確定要上線時,執行Jenkins的Promotion操作,這時觸發 此步,將對應build版本對應的docker鏡像推送到 私有docker registry。
所執行的操作自然為 :
docker tag project_dev:530 docker-registry.xxxxx.com/xxxxxxx/project_name:version docker push docker-registry.xxxxx.com/xxxxxxx/project_name:version
此步產出:
push好的線上鏡像
此為最后一步,同樣是執行promotion操作后最后所執行的步驟,調用我們的內部接口,對線上應用執行AB上線,具體可參見文章:http://segmentfault.com/a/1190000002978115#articleHeader6
總結上述就是我們在生產環境中的使用Jenkins和docker所構建的持續集成&自動部署的邏輯架構。也歡迎各位大大拍磚指教。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26468.html
摘要:的設計模式的設計模式以持續集成持續測試持續交付和持續部署為中心,自動化協作和持續監控是中使用的一些其他設計模式。持續集成持續集成是不斷地將源代碼集成到一個新的構建或發布的過程,源代碼可以在本地存儲中,也可以在或中。 showImg(https://segmentfault.com/img/remote/1460000010452455); 識別二維碼報名活動 8月19日,來自微軟、數人...
摘要:自動部署基礎實踐熟悉的基本操作實現本地后自動構建部署服務此實踐用于優化自己在實際工作中的工作流在本地開發到服務器登錄云服務器或者簡化流程后本地開發云服務器自動構建部署本實踐將結合技術來實現云服務器對各種環境的切換與部署。 Docker + Jenkins + webhooks 自動部署基礎實踐 熟悉 jenkins 的基本操作 ?? 實現本地 git push 后 jenkins 自...
摘要:對測試的影響讓單元測試運行的更順暢單元測試驅動開發是一個很好的應用程序開發方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數據庫的搭建防火墻的配置等。 傳統的軟件開發、測試、運維需要三個團隊在三個不同的環境中進行,而三個環境的不同引發了很多的問題。如:工作內容的重復;開發環境中可運行的程序在測試和運維環...
摘要:而持續集成的意義就在于減少風險,和重復的過程,最終提高工作效率。第二級調度由被稱作的組件組成。能和不同類型的通信,每種由相應的應用集群管理。這是的任務啟動過程。數人云運維平臺持續集成實踐這是數人云運維平臺的持續集成實踐。 今天小數給大家帶來的又是十足的干貨:當運維遇到云計算,當Docker遇到Mesos和Jenkins,會擦出怎樣的火花呢?且看來自數人云運維工程師金燁的演講實錄分享——...
摘要:阿里云效平臺基于理念的私有平臺實踐本文將系統的從個方面,分享互娛運維團隊對于運維平臺實踐經驗及未來展望,希望對大家有一些參考意義。 CI Weekly 圍繞『 軟件工程效率提升』 進行一系列技術內容分享,包括國內外持續集成、持續交付,持續部署、自動化測試、 DevOps 等實踐教程、工具與資源,以及一些工程師文化相關的程序員 Tips 。同步于 flow.ci Blog、微信公眾號、官...
閱讀 3955·2021-10-19 13:23
閱讀 2335·2021-09-09 11:37
閱讀 2515·2019-08-29 15:20
閱讀 3411·2019-08-29 11:08
閱讀 1670·2019-08-26 18:27
閱讀 1770·2019-08-23 12:20
閱讀 3035·2019-08-23 11:54
閱讀 2549·2019-08-22 15:19