1. 程式人生 > >Docker結合Jenkins的持續構建實踐

Docker結合Jenkins的持續構建實踐

docker和Jenkins不是什麼新東西了,兩者結合也不是什麼稀奇的事情,也已經有很多Jenkins和docker相結合的文章,此文僅為自己的一點心得實踐,如有不對的地方,歡迎大家糾正。

先貼上大致的流程圖,逐步說明:

程式碼-Git:

並沒有什麼好說明的,就是簡單的使用了Git作為版本控制工具而已,通用使用規範不在細說。
此步的產出:
Git分支特定版本號

Git-自動構建、自動構建-程式碼包:

做法也很通用了,將project的Git鉤子同Jenkins結合,達到特定分支有push時機觸發自動構建,將程式碼包從Git拉取並打包為程式碼包。

此步產出:
打包好的程式碼包:project.tar.gz

程式碼包-Docker映象

在此步中,我們為每個project提供特定的測試環境,並且在此環境中執行專案程式碼映象打包操作。在此步中,需要提前準備幾樣東西:

  1. 測試環境:我們這裡為一臺乾淨的伺服器(不要再問好奢侈,有錢就是任性),部署docker環境;

  2. project的base映象:對於一個成熟的專案,所依賴的環境是固定可知的,因此提前準備好其所依賴的base image是必要的。
    如,我們一個專案的base image的Dockerfile:

FROM centos:liuyanglong
MAINTAINER liuyanglong "[email protected]"
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!!

映象打包完畢後,此步並沒有結束!!

此步的產出:

  1. docker build成功的project image,如以構建號為image版本號,叫做: project_dev:530

  2. 此版本程式碼的測試環境地址,如: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好的線上映象

AB上線

總結

上述就是我們在生產環境中的使用Jenkins和docker所構建的持續整合&自動部署的邏輯架構。也歡迎各位大大拍磚指教。

相關推薦

基於DockerJenkins持續交付實踐

講師介紹:葉峰 有容雲資深前端開發工程師 現負責有容雲容器雲平臺Web架構設計和CI(持續整合)產品的研發 擁有豐富的Web前端開發經驗。 主題簡介: 1.Jenkins pipeline基礎概念 2.Jenkins pipeline如何帶來工作便利 3.基於容器的Jenkins CI流程

Docker結合Jenkins持續構建實踐

docker和Jenkins不是什麼新東西了,兩者結合也不是什麼稀奇的事情,也已經有很多Jenkins和docker相結合的文章,此文僅為自己的一點心得實踐,如有不對的地方,歡迎大家糾正。 先貼上大致的流程圖,逐步說明: 程式碼-Git: 並沒有什麼好說明的,就是簡單的使用了Git作為版本控制工具而已,通

Docker結合Jenkins構建持續集成環境

version 技術 密碼 用戶名 acc jdk install 技術分享 centos7 環境說明: jenkins+svn:192.168.71.142 測試環境:192.168.71.145 生產環境:192.168.71.148 操作系統:centos7.5 M

jenkins+Docker+maven專案持續構建docker

 1、安裝配置Jenkins服務和Docker服務(不贅述)   2、在Jenkins依託的宿主機上建立一個構建指令碼(/home/skyform/專案名/rollingupdate.sh) 3、編寫指令碼:    #!/usr/bin/sh    dockerHost=

啟用 Jenkins 持續構建 .NET 程序,關於配置nuget關鍵點

下載 studio 解決辦法 font visual update 生效 color lis 網上關於 Jenkins + net 的文章一大堆,這裏只貼出 配置中的關鍵點, 第一步: 從官網下載 nuget.exe 安裝包進行安裝, 如果項目是用 vs2017 開發

基於K8s的動態Jenkins Slave構建實踐

前言 環境 這裡Jenkins Master的安裝沒有采用容器映象的方式,直接就是rpm包安裝。 版本資訊: Jenkins 2.107.1 Kubernetes plugin 1.4 kubernetes叢集 1.5.2 這裡就不詳細說明

robotframework+jenkins 持續構建專案

1.開啟Jenkins 進行登陸,選擇系統管理,選擇管理外掛 2.安裝robotframework 外掛,此處我已經安裝過 3.開始構建任務,選擇新建 4.任意輸入一個專案名稱,選擇自由風格構建 5.原始碼管理預設就好 6.構建觸發器。此處設

Jenkins持續構建配置說明

一、Jenkins安裝1. 登入jenkins官網,下載jenkins-2.89-4版本,如圖2. 將壓縮包解壓,然後啟動jenkins.msi程式進行安裝,按照提示一直next即可。期間填寫賬戶密碼項根據提供的路徑開啟檔案即可檢視密碼,輸入密碼後,點選Continue。如3

使用 Docker 安裝 Jenkins構建Maven專案

環境: Ubuntu 16.04   + Docker兩篇官方文件歸納為”一句話搞定“:docker run \  -u root \  --rm \  -d \  -p 8080:8080 \  -p 50000:50000 \  -v jenkins-data:/var/

Windows下Android專案搭建Jenkins持續構建+自動化測試

使用持續整合和自動化測試的好處就不說了,網上一搜一大把,不太瞭解的可以去Google search。下面開始介紹如何在Windows環境下為Android專案搭建Jenkins。本文中使用的版本管理工具是SVN,大部分內容都參考自Jenkins官網,而且本文不考慮SDK

【轉】docker+jenkins+git持續部署實踐

ref workspace 重要 star ng- 匿名 web del 目錄 寫在前面 以前搭建spring-cloud的時候 看到別人代碼裏面總有Dockerfile,然後了解到docker容器的概念,玩了兩個星期玩不下去了,就放下了,無意間在網上看到一篇文章Docke

jenkins持續整合docker映象構建

映象環境包括: docker docker-compose java tomcat maven sonar-scanner Dockerfile: FROM ubuntu:16.04 MAINTAINER [email protec

基於Docker的devops實踐jenkins持續整合自動部署elk日誌+zabbix監控

筆者所在的技術團隊負責了數十個專案的開發和維護工作,每個專案都至少有dev、qa、hidden、product四個環境,數百臺機器,在各個系統之間疲於奔命,解決各種瑣碎的問題,如何從這些瑣碎的事情中解放出來?devops成了我們不二的選擇。 文章是基於目前的環境和團隊規

基於jenkins構建應用的docker映象做持續整合和部署

為了做持續的整合和部署,引入了jenkins,利用jenkins來構建應用的docker映象並push到私有倉庫,然後再基於應用的docker映象來發布專案,這樣減少了很多的手動操作,基本能實現持續整合

Jenkins持續整合構建Docker容器

本文分兩部分,第一部分是手動計劃任務的方式構建Github上的Docker程式,第二部分是用Github webhook Trigger一個自動構建任務。 Jenkins採用2.5版本 Docker採用1.7.1 程式碼託管使用的Github官網 系統為IBM B

持續自動化構建微服務(11)SpringCloud 與 Docker 結合

第十一章 SpringCloud 與 Docker 結合 11、 SpringCloud 與 Docker 結合下面我們把第六章的兩個Spring Cloud專案與docker結合起來,實現程式的編譯、

持續整合實踐系列 」Jenkins 2.x 構建CI自動化流水線常見技巧

在上一篇文章中,我們介紹了Jenkins 2.x實現流水線的兩種語法,以及在實際工作中該如何選擇指令碼式語法或宣告式語法。原文可查閱:「持續整合實踐系列」Jenkins 2.x 搭建CI需要掌握的硬核要點(一) 在使用傳統的Jenkins Web介面和專案時,比如自由風格型別的任務,我們對處理流程的控制能

jenkins+ant+jmeter接口自動化測試(持續構建

mat 文件 download includes 手機 brush service 自己 報告 使用badboy錄制腳本,到處到jmeter後進行接口自動化,後來想著 可不可以用自動化來跑腳本呢,不用jmeter的圖形界面呢, 選擇了ant來進行構建,最後想到了用Je

Jenkins集成Docker實現鏡像構建和線上發布

gis and ash macro tom 說明 align docker add 原文地址:http://www.cnblogs.com/keithtt/p/6410229.html 大概過程如下圖: 由於需要用到docker打包鏡像,jenkins宿主機上

jenkins 使用Git持續構建

class script blank 公鑰私鑰 spa 持續構建 插件 output nbsp 為jenkins添加git插件。   在Available tab頁中找到Git Plugin   點擊下方的Install without Restart安裝插件。