早上來到公司,咱們作的第一件事情就是從源碼庫簽出最新的源碼,而後進行單元測試,若是發現失敗的測試,會找相關的同事一塊兒調試,修復錯誤代碼。接着回到本身的工做上來,編寫本身的產品代碼。忙到午餐時間,代碼編寫得差很少了,測試也經過了,開心地享用午飯,而後休息。誰料QA小組又發過來了幾個bug,沒辦法,先本地重現再說,因而熟練地用IDE生成了一個WAR包,部署到Web容器下,啓動容器。看到熟悉的界面了,遵循bug報告,一步步重現了bug,快下班的時候,bug修好了,提交代碼,在愉快中結束了一天的工做。仔細總結一下,咱們會發現,除了編寫源代碼,咱們天天有至關一部分時間花在了編譯、打包和部署等煩瑣且不起眼的工做上。若是咱們如今還手工這樣作,那成本也過高了,因而有人用軟件的方法讓這一系列工做徹底自動化,使得軟件的構建能夠像全自動流水線同樣,只須要一條簡單的命令,全部煩瑣的步驟都可以自動完成。
git
Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,經過提供超過1000個插件來支持構建、部署、自動化, 知足任何項目的須要。
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器或Windows 機器上,也能夠實現虛擬化,容器是徹底使用沙箱機制,相互之間不會有任何接口。
Rancher是一個開源的企業級容器管理平臺。經過Rancher,企業不再必本身使用一系列的開源軟件去從頭搭建容器服務平臺。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平臺。web
操做系統:centos7.5
使用官方安裝腳本自動安裝
安裝命令以下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可使用國內 daocloud 一鍵安裝命令:
curl -sSL https://get.daocloud.io/docker | shdocker
使用yum命令安裝
安裝命令以下:
yum install -y docker
設置阿里倉庫地址:
echo '{"registry-mirrors": ["https://3laho3y3.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json
啓動:systemctl start docker
設置開機自啓:systemctl enable dockerjson
命令:
docker run -d --name rancher-server -p 8080:8080 --restart=unless-stopped -e DEFAULT_CATTLE_CATALOG_URL='{"catalogs":{"library":{"url":"http://git.oschina.net/rancher/rancher-catalog.git","branch":"k8s-cn"}}}' rancher/server:stable && sudo docker logs -f rancher-servercentos
-d(可選)在後臺運行容器(即「分離」模式)並輸出容器ID。若是您不指定此選項, 則在終端窗口中輸出正在運行的此容器的Docker日誌。
-p 8080:8080 映射(例如「發佈」)rancher-server容器的端口8080到主機上的端口8080。 第一個數字表明主機上的端口,而最後一個表明容器的端口。
-e DEFAULT_CATTLE_CATALOG_URL='{"catalogs":{"library":{"url":"http://git.oschina.net/rancher/rancher-catalog.git","branch":"k8s-cn"}}}' 設置環境變量,默認的rancher商店地址國內訪問緩慢tomcat
命令:
docker run \
-u root \
-d --name jenkins \
-p 8081:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean && sudo docker logs -f jenkins bash
-d(可選)在後臺運行容器(即「分離」模式)並輸出容器ID。若是您不指定此選項, 則在終端窗口中輸出正在運行的此容器的Docker日誌。
-p 8081:8080 映射(例如「發佈」)jenkinsci/blueocean 容器的端口8080到主機上的端口8081。 第一個數字表明主機上的端口,而最後一個表明容器的端口。
-p 50000:50000(可選)將 jenkinsci/blueocean 容器的端口50000 映射到主機上的端口50000。
-v jenkins-data:/var/jenkins_home(可選,但強烈建議)映射在容器中的/var/jenkins_home
目錄到具備名字 jenkins-data 的volume。 若是這個卷不存在,那麼這個 docker run 命令會自動爲你建立卷。 若是您但願每次從新啓動Jenkins(經過此 docker run ... 命令)時保持Jenkins狀態,則此選項是必需的 。 若是你沒有指定這個選項,那麼在每次從新啓動後,Jenkins將有效地重置爲新的實例。
-v /var/run/docker.sock:/var/run/docker.sock(可選 /var/run/docker.sock 表示Docker守護程序經過其監聽的基於Unix的套接字。 該映射容許 jenkinsci/blueocean 容器與Docker守護進程通訊, 若是 jenkinsci/blueocean 容器須要實例化其餘Docker容器,則該守護進程是必需的。 若是運行聲明式管道,其語法包含agent部分用 docker服務器
一、在系統管理中的插件管理;
二、而後點擊選插件,在右上角輸入Git Parameter和Publish Over SSH,找到Git Parameter和Publish Over SSH後點擊左下方的的直接安裝app
一、登陸jenkins,點擊新建任務
二、輸入任務名稱,而後有兩項選擇,一是選擇構建一個自由風格的軟件項目,肯定便可;二是克隆已有項目,輸入該項目名稱,肯定便可。
三、建立成功後會打開該任務的配置頁面,若是選擇的是2中的第二個選項,則已經有克隆目標任務的配置項,在此基礎上進行修改便可。配置項頁面說明以下:
(1)General:git項目選擇參數化構建過程,填寫內容參考下圖;svn項目可不填寫此項;
(2)源碼管理:git項目選擇git,svn項目選擇svn,填寫項目地址以及有權限的用戶名和密碼。
(3)構建觸發器:可不填。
(4)構建環境:可不填。
(5)構建:(此步驟爲maven打包)點擊增長構建步驟,選擇調用頂層maven目標,maven版本選擇mm(預先設置),目標選擇打包命令便可,通常爲clean package,若是是多環境配置,則須要加上環境參數如-Pdemo;
(6)構建後操做:(此步驟爲上傳war及執行部署命令)點擊添加構建後操做步驟,選擇Send build artifacts over SSH,選擇項目部署目標服務器(要提早配置,目前已配置好),並按以下填寫部署屬性及部署命令。多節點可屢次添加構建後操做。
命令示例:
停掉tomcat的docker容器
docker stop tomcat_sdso
備份當前war包
mv /home/gcuser/dockercompose/sdso/tomcat/webapps/*.war /home/gcuser/dockercompose/sdso/tomcat/webapps/sdso.war.date +%Y%m%d%H%M%S
將上傳過來的war包拷貝到目標路徑,此處爲tomcat的docker容器中webapps目錄映射到主機上的目錄
mv /home/gcuser/sdso.war /home/gcuser/dockercompose/sdso/tomcat/webapps/sdso.war
啓動tomcat的docker容器
docker start tomcat_sdsoless