該文主要介紹如何從零開始利用Jenknis實現自動化構建項目鏡像,並建立且啓動相關容器。預備知識(git,docker,shell)。全文分兩部分,分別採用無參數自動化構建和含用戶指定參數的兩種構建方式進行部署舉例說明。git
1、根據解析git提交日誌內容實現自動化部署docker
一、總體實現流程概述shell
大體爲首先git提交代碼更新,提交更新後觸發jenknis(這裏爲執行指定腳本),從提交註釋中解析本次提交是否發版,提交註釋規則此處約定爲: ,提交說明,版本號,是否發版(是:1,否:0), 注:‘,’爲分隔符。根據解析出的發版標識,若是發版則執行構建鏡像,並利用docker-compose建立並啓動容器,不然則退出。瀏覽器
二、方案具體實現工具
爲了作到每次更新只須要拉取代碼部分,因此先將項目須要用到的軟件包,工具類等構建到基礎鏡像中,以後在更新時只須要下載最新版代碼,引用以前構建好的基礎包便可構建出可用的完整項目鏡像。在此例中以構建的kettle基本運行環境做爲基礎鏡像:日誌
kettle:basic部署
編寫執行構建鏡像的shell腳本源碼
腳本總體思想:it
根據jenknis的更新日誌獲取git提交註釋內容,並解析本次提交是否發版,版本號等信息,核心代碼以下:自動化
利用拉取下來的Dockerfile文件,進行鏡像構建,核心代碼以下:
將製做好的鏡像上傳到私有庫,核心代碼以下:
中止現有容器,並啓動新容器,核心代碼以下:
至此構建腳本編寫完成。
經過瀏覽器登陸Jenknis主頁
新建任務,選擇構建一個自由風格的軟件項目
輸入項目名稱和相關描述,選擇所需的額外配置,如丟棄舊的構建等
在這裏的高級選項下, 能夠指定自定義的工做空間,如本例須要構建鏡像,則此處應該填寫構建鏡像的根目錄
配置源碼管理:
這裏是有git管理源碼,配置相應的遠程倉庫地址、用戶名與密碼、分支節點
構建觸發器(即觸發任務運行的動做)
這裏使用Poll SCM(爲定時控件,規則爲 * * * * * 依次對應分鐘、小時、日、星期、月),事例爲每分鐘執行一次
構建
點擊增長構建步驟(構建動做完成時所作的動做),運行指定腳本,本例爲利用shell腳本進行鏡像的構建以及對應容器的建立和啓動。
構建後操做(整個構建終止後所作的動做)
常見的可選擇在構建失敗後發送郵件到指定地址。
至此整個任務構建完成。
三、任務維護
經過面板左側提供的功能對任務進行跟蹤,查看。
修改記錄:記錄了全部的修改歷史明細
工做空間:查看項目路徑下的全部文件
構建歷史:構建歷史選擇任意一次構建,能夠查看構建日誌
經過點開的歷史構建面板,點選終端輸出,能夠查看構建的詳細過程。(若是構建失敗,會包含構建的具體錯誤)