基於Jenkins+Git+Docker的持續整合(上)
Git是目前最為流行的版本管理工具之一;
Jenkins是目前最為流行的持續整合工具之一;
Docker則是目前最為火熱的輕量化容器解決方案;
前兩者的組合已經非常普遍,那麼能不能再與Docker結合起來呢?當然是肯定的,我們希望透過Jenkins結合docker,即能最大化的利用系統資源,又能實現應用服務的快速構建,本文將詳細介紹,如何基於Jenkins+Git+Docker搭建一套支援快速構建的持續整合方案。
本文所演示環境涉及三臺(類)伺服器,不過在文中僅涉及到對後兩類伺服器的配置:
Git伺服器:172.16.1.8,現有服務,用於管理程式碼;
Docker宿主機伺服器:172.19.10.157,待搭建,用於執行docker容器;
Jenkins伺服器:172.19.10.232,待搭建,用於執行Jenkins服務。
一、安裝和初始化Jenkins
Jenkins伺服器中已經安裝配置好JDK/MAVEN/TOMCAT幾個軟體的執行環境。在本例中,所使用的上述三軟體的版本為:apache-maven-3.3.3、jdk1.7.0_09、tomcat-7.0.34,並均執行於作業系統使用者tomcat下。
提示1:以下操作是在Jenkins伺服器執行,如非特別說明,均是在tomcat使用者下操作。
提示2:在啟動tomcat服務之前,建議先修改相關環境變數,透過JAVA_OPS引數為JAVA虛擬機器分配適當的記憶體空間,避免Tomcat執行過程中出現記憶體溢位的情況。
例如:
[tomcat@web01 ~]$ vi /home/tomcat/tomcat-7.0.34/bin/catalina.sh
檔案頭部增加下列內容(考慮到本地測試伺服器配置較差,因此分配記憶體較小,大家可基於個人實際情況對引數值進行修改):
JAVA_OPTS="-server -Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote -Duser.timezone=GMT+08 -Djava.awt.headless=true"
Jenkins的安裝十分簡單,下載好的Jenkins就是一個war包,直接複製到Tomcat的webapps目錄下即可執行。
那麼我們就先來下載最新版本的jenkins,並儲存到Tomcat應用目錄下:
[tomcat@web01 ~]$ wget -P /home/tomcat/tomcat-7.0.34/webapps
啟動tomcat服務:
[tomcat@web01 ~]$ tomcat-7.0.34/bin/catalina.sh start
Using CATALINA_BASE: /home/tomcat/tomcat-7.0.34
Using CATALINA_HOME: /home/tomcat/tomcat-7.0.34
Using CATALINA_TMPDIR: /home/tomcat/tomcat-7.0.34/temp
Using JRE_HOME: /home/tomcat/jdk1.7.0_60
Using CLASSPATH: /home/tomcat/tomcat-7.0.34/bin/bootstrap.jar:/home/tomcat/tomcat-7.0.34/bin/tomcat-juli.jar
啟動過程中注意觀察tomcat的輸出日誌,我們下載的jenkins War會自動進行解壓縮和初始化,過程中建立的預設管理員帳戶和密碼資訊,在日誌檔案中會有所體現,例如:
[tomcat@web01 ~]$ tail -100f tomcat-7.0.34/logs/catalina.out
...............
Jan 21, 2017 13:04:11 PM jenkins.install.SetupWizard init
INFO:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
8c5abb9fcc7b4258aadac65ed5113b5a
This may also be found at: /home/tomcat/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
............
INFO: Finished Download metadata. 20,529 ms
............
然後透過瀏覽器訪問jenkins,未登入的情況下會跳轉到登入頁,第一次登入時需要輸入初始化帳戶的密碼,也就是前面我們在日誌檔案中提示的那段欄位:
輸入管理員密碼,點選Continue按鈕後,會有一個初始化的過程,需要等待個幾秒鐘,而後將跳轉到選裝外掛的頁面,如下所示:
我們選擇後者,以自定義的方式安裝需要的元件。
預設情況下,它也仍為幫我們選擇一些必備/常用元件(點上圖紅色箭頭所指的標籤,會對外掛進行預設勾選),在此基礎之上,我們又新增了一些元件,主要包括:
? Git plugin:支援基於Git進行構建的外掛;
? Git Parameter Plug-In:我們的軟體釋出是基於分支,而不是的基於master,透過Git Parameter外掛方便我們選擇要構建的分支版本,當然如果您沒有這方面的需求,那麼也可以不安裝本外掛;
? GitLab Plugin:因為我們本地的Git是基於GitLab搭建的一套私服,選擇這一元件主要是為了能夠觸發一些自動化構建相關的操作;
? Maven Integration plugin:釋出Maven2/3專案的外掛;
? Publish Over SSH:基於SSH釋出到另外的節點;
? SSH plugin :與上同理;
當然大家也可以直接全選,安裝所有的外掛,儘管可能有很多外掛都用不上。其實這裡想告訴大家,不必過於糾結安裝什麼外掛,以及安裝的正確與否,那個都不重要,因為我們隨時可以根據需求來呼叫我們安裝的外掛。
選擇完要安裝的外掛後點選Install:
之後就需要等待一會了,根據你選擇外掛的多寡,耗費的時間也不同。等到所有的外掛全部安裝完之後,還有一個步驟,建立管理員帳戶:
然後,就能看到Jenkins的主介面了。
二、搭建docker宿主機
提示:以下操作是在docker宿主機端執行,如非特別說明,均是在root使用者下操作。
增加一個軟體安裝源,將docker官方地址做為軟體的安裝源加入本地三方源地址,編輯檔案如下:
root@docker01:~# vi /etc/apt/sources.list.d/docker.list
只需增加一行:
deb [arch=amd64] debian-jessie main
接下來別忙著執行apt-get,先更新一下apt源,以確保能夠檢測到最新的資源,執行命令如下:
root@docker01:~# apt-get update
如果執行apt-get update時遇到:E: The method driver /usr/lib/apt/methods/https could not be found.那麼先執行:# apt-get install apt-transport-https
然後就可以透過apt-get安裝docker了,執行命令如下:
root@docker01:~# apt-get install docker-engine
Reading package lists... Done
Building dependency tree
Reading state information... Done
...................
安裝成功之後,透過docker命令檢視當前docker版本:
root@docker01:~# docker --version
Docker version 1.13.1, build 092cba3
接下來我們建立一個專用使用者docker並設定初始密碼(為演示方便也設定為docker):
root@docker01:~# useradd docker -d /home/docker -s /bin/bash -g docker
root@docker01:~# echo "docker:docker" | chpasswd
這一步的目的主要是為了在jenkins中配置ssh釋出時,不必直接使用root這樣一個具備超大許可權的使用者。
此時映象、容器都是空的。
root@docker01:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@docker01:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
考慮到我們接下來執行的JAVA工程要執行於tomcat容器,因此我們先拉取一個tomcat映象,做為基礎映象,執行命令如下:
root@docker01:~# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
5040bd298390: Pulling fs layer
fce5728aad85: Pulling fs layer
c42794440453: Pulling fs layer
9789263043d1: Waiting
6c6ea13aad15: Waiting
...............
...............
Digest: sha256:2c72f00904dc057441c388bb9101f7ca254174c9b061f99789e48bf495226deb
Status: Downloaded newer image for tomcat:latest
root@docker01:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 99765a0d7f44 14 hours ago 355 MB
Ok,這樣Docker宿主機環境就搭建好了。(未完待續)
更多內容請掃描二維碼,關注【IT營養師】!
Jenkins是目前最為流行的持續整合工具之一;
Docker則是目前最為火熱的輕量化容器解決方案;
前兩者的組合已經非常普遍,那麼能不能再與Docker結合起來呢?當然是肯定的,我們希望透過Jenkins結合docker,即能最大化的利用系統資源,又能實現應用服務的快速構建,本文將詳細介紹,如何基於Jenkins+Git+Docker搭建一套支援快速構建的持續整合方案。
本文所演示環境涉及三臺(類)伺服器,不過在文中僅涉及到對後兩類伺服器的配置:
Git伺服器:172.16.1.8,現有服務,用於管理程式碼;
Docker宿主機伺服器:172.19.10.157,待搭建,用於執行docker容器;
Jenkins伺服器:172.19.10.232,待搭建,用於執行Jenkins服務。
一、安裝和初始化Jenkins
Jenkins伺服器中已經安裝配置好JDK/MAVEN/TOMCAT幾個軟體的執行環境。在本例中,所使用的上述三軟體的版本為:apache-maven-3.3.3、jdk1.7.0_09、tomcat-7.0.34,並均執行於作業系統使用者tomcat下。
提示1:以下操作是在Jenkins伺服器執行,如非特別說明,均是在tomcat使用者下操作。
提示2:在啟動tomcat服務之前,建議先修改相關環境變數,透過JAVA_OPS引數為JAVA虛擬機器分配適當的記憶體空間,避免Tomcat執行過程中出現記憶體溢位的情況。
例如:
[tomcat@web01 ~]$ vi /home/tomcat/tomcat-7.0.34/bin/catalina.sh
檔案頭部增加下列內容(考慮到本地測試伺服器配置較差,因此分配記憶體較小,大家可基於個人實際情況對引數值進行修改):
JAVA_OPTS="-server -Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote -Duser.timezone=GMT+08 -Djava.awt.headless=true"
Jenkins的安裝十分簡單,下載好的Jenkins就是一個war包,直接複製到Tomcat的webapps目錄下即可執行。
那麼我們就先來下載最新版本的jenkins,並儲存到Tomcat應用目錄下:
[tomcat@web01 ~]$ wget -P /home/tomcat/tomcat-7.0.34/webapps
啟動tomcat服務:
[tomcat@web01 ~]$ tomcat-7.0.34/bin/catalina.sh start
Using CATALINA_BASE: /home/tomcat/tomcat-7.0.34
Using CATALINA_HOME: /home/tomcat/tomcat-7.0.34
Using CATALINA_TMPDIR: /home/tomcat/tomcat-7.0.34/temp
Using JRE_HOME: /home/tomcat/jdk1.7.0_60
Using CLASSPATH: /home/tomcat/tomcat-7.0.34/bin/bootstrap.jar:/home/tomcat/tomcat-7.0.34/bin/tomcat-juli.jar
啟動過程中注意觀察tomcat的輸出日誌,我們下載的jenkins War會自動進行解壓縮和初始化,過程中建立的預設管理員帳戶和密碼資訊,在日誌檔案中會有所體現,例如:
[tomcat@web01 ~]$ tail -100f tomcat-7.0.34/logs/catalina.out
...............
Jan 21, 2017 13:04:11 PM jenkins.install.SetupWizard init
INFO:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
8c5abb9fcc7b4258aadac65ed5113b5a
This may also be found at: /home/tomcat/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
............
INFO: Finished Download metadata. 20,529 ms
............
然後透過瀏覽器訪問jenkins,未登入的情況下會跳轉到登入頁,第一次登入時需要輸入初始化帳戶的密碼,也就是前面我們在日誌檔案中提示的那段欄位:
輸入管理員密碼,點選Continue按鈕後,會有一個初始化的過程,需要等待個幾秒鐘,而後將跳轉到選裝外掛的頁面,如下所示:
我們選擇後者,以自定義的方式安裝需要的元件。
預設情況下,它也仍為幫我們選擇一些必備/常用元件(點上圖紅色箭頭所指的標籤,會對外掛進行預設勾選),在此基礎之上,我們又新增了一些元件,主要包括:
? Git plugin:支援基於Git進行構建的外掛;
? Git Parameter Plug-In:我們的軟體釋出是基於分支,而不是的基於master,透過Git Parameter外掛方便我們選擇要構建的分支版本,當然如果您沒有這方面的需求,那麼也可以不安裝本外掛;
? GitLab Plugin:因為我們本地的Git是基於GitLab搭建的一套私服,選擇這一元件主要是為了能夠觸發一些自動化構建相關的操作;
? Maven Integration plugin:釋出Maven2/3專案的外掛;
? Publish Over SSH:基於SSH釋出到另外的節點;
? SSH plugin :與上同理;
當然大家也可以直接全選,安裝所有的外掛,儘管可能有很多外掛都用不上。其實這裡想告訴大家,不必過於糾結安裝什麼外掛,以及安裝的正確與否,那個都不重要,因為我們隨時可以根據需求來呼叫我們安裝的外掛。
選擇完要安裝的外掛後點選Install:
之後就需要等待一會了,根據你選擇外掛的多寡,耗費的時間也不同。等到所有的外掛全部安裝完之後,還有一個步驟,建立管理員帳戶:
然後,就能看到Jenkins的主介面了。
二、搭建docker宿主機
提示:以下操作是在docker宿主機端執行,如非特別說明,均是在root使用者下操作。
增加一個軟體安裝源,將docker官方地址做為軟體的安裝源加入本地三方源地址,編輯檔案如下:
root@docker01:~# vi /etc/apt/sources.list.d/docker.list
只需增加一行:
deb [arch=amd64] debian-jessie main
接下來別忙著執行apt-get,先更新一下apt源,以確保能夠檢測到最新的資源,執行命令如下:
root@docker01:~# apt-get update
如果執行apt-get update時遇到:E: The method driver /usr/lib/apt/methods/https could not be found.那麼先執行:# apt-get install apt-transport-https
然後就可以透過apt-get安裝docker了,執行命令如下:
root@docker01:~# apt-get install docker-engine
Reading package lists... Done
Building dependency tree
Reading state information... Done
...................
安裝成功之後,透過docker命令檢視當前docker版本:
root@docker01:~# docker --version
Docker version 1.13.1, build 092cba3
接下來我們建立一個專用使用者docker並設定初始密碼(為演示方便也設定為docker):
root@docker01:~# useradd docker -d /home/docker -s /bin/bash -g docker
root@docker01:~# echo "docker:docker" | chpasswd
這一步的目的主要是為了在jenkins中配置ssh釋出時,不必直接使用root這樣一個具備超大許可權的使用者。
此時映象、容器都是空的。
root@docker01:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@docker01:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
考慮到我們接下來執行的JAVA工程要執行於tomcat容器,因此我們先拉取一個tomcat映象,做為基礎映象,執行命令如下:
root@docker01:~# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
5040bd298390: Pulling fs layer
fce5728aad85: Pulling fs layer
c42794440453: Pulling fs layer
9789263043d1: Waiting
6c6ea13aad15: Waiting
...............
...............
Digest: sha256:2c72f00904dc057441c388bb9101f7ca254174c9b061f99789e48bf495226deb
Status: Downloaded newer image for tomcat:latest
root@docker01:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 99765a0d7f44 14 hours ago 355 MB
Ok,這樣Docker宿主機環境就搭建好了。(未完待續)
更多內容請掃描二維碼,關注【IT營養師】!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2151375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於Jenkins+Git+Docker的持續整合(下)JenkinsGitDocker
- 前端專案基於GitLab-CI的持續整合/持續部署(CI/CD)前端Gitlab
- 基於Jenkins快速搭建持續整合環境Jenkins
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 基於 Docker 打造前端持續整合開發環境Docker前端開發環境
- 持續整合、持續部署、持續交付、持續釋出
- 持續整合、持續交付、持續部署簡介
- 基於 abapGit 和 abaplint 的 ABAP 持續整合的一個例子Git
- 整合持續整合工具
- 基於jenkins搭建一個持續整合伺服器Jenkins伺服器
- Azure DevOps(一)基於 Net6.0 的 WPF 程式如何進行持續整合、持續編譯dev編譯
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- iOS 持續整合iOS
- 關於DVCS、持續整合和特性分支
- 基於Gitlab-CI/CD Docker 持續整合 node 專案GitlabDocker
- 基於Jmeter+Maven+Jenkins持續整合介面測試框架JMeterMavenJenkins框架
- 談談持續整合,持續交付,持續部署之間的區別
- 花椒前端基於 Docker 的 SSR 持續開發整合環境實踐前端Docker
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-1K8SJenkins
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-2K8SJenkins
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- Ansible 持續整合Anolis、Ubuntu基線配置Ubuntu
- 持續整合工具之Jenkins基礎使用Jenkins
- Jenkins持續整合Jenkins
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- SAP開源的持續整合-持續交付的解決方案
- 在Ubuntu上安裝Drone持續整合環境Ubuntu
- 小程式的持續整合方案
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- 基於 flow.ci 實現 PHP 專案自動化持續整合PHP
- 基於CentOS、docker搭建jenkins內網前端可持續整合環境CentOSDockerJenkins內網前端
- 用於持續整合的13種Jenkins替代方案 -DEVJenkinsdev
- 通過Docker容器執行持續整合/持續部署Docker
- 如何在 Linux 上配置持續整合服務 – DroneLinux
- 持續整合配置之Nuget
- Taro 小程式持續整合
- 持續整合JenkinsBlueOcean初探Jenkins