自動化運維(2)—經過jenkins+Pipeline+Docker實現一鍵構建與發佈。

Jenkins使用文檔(二)

Jenkins+Docker+Gitlab

PS:續前一篇文章(自動化運維(1))java


項目大體構建流程

      把Java源碼上傳到gitlab上,maven編譯,docker鏡像構建,而後推送到harbor私有鏡像中心,再自動下載docker鏡像,使用rancher控制docker運行服務,最後測試訪問。node

      用容器的形式打包、交付、運行應用程序。能夠在任何地方構建、管理、安全運行應用程序。linux

      容器與系統其它部分分隔離開的一系列進程,容器具備可移植性和一致性git

docker就是把應用打包到一個輕量的可移植的容器裏面,而後去交付,運行github



目錄docker

1、Docker安裝(全部主機安裝)apache

2、docker-compose安裝(只須要在主機1上安裝)json

3、Rancher安裝(只須要在主機1上安裝)centos

、Harbor私有倉庫部署—docker容器管理平臺瀏覽器

、開始構建Jenkins Pipeline + Docker + Git—Java項目

驗證

 

總體安裝環境說明

本文檔共涉及兩臺服務器。部分環境在前一篇文章中有所說明及安裝過程,此文檔爲了簡化就不作累贅。

本文檔所使用的各軟件版本及系統說明

名稱

主機1

主機2

系統

centos  7.2

主機名

www.jenkins.com

s2.jenkins.com

IP

192.169.1.100

192.168.1.101

CPU

2核

內存

4G

磁盤

40G

Git version

1.8.3.1


Java version

1.8.0_65


Maven version

3.6.3


Jenkins version

2.210


Gitlib

10.3.2


Docker

                                19.03.5

docker-compose

1.25.1


Harbor

19.03.3


1、Docker安裝(全部主機安裝)

       Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從 Apache2.0 協議開源。

       Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。

容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。官網:https://www.dcoker.com


1、配置Docker源

yum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、安裝依賴包

yuminstall -y yum-utils device-mapper-persistent-data lvm2

3、安裝與啓動docker

yuminstall docker-ce -y

systemctlstart docker

systemctlenable docker

4、驗證

docker --version

   

5、配置Docker加速器(可選)

cat /etc/docker/daemon.json<<-'EOF'

{

 "registry-mirrors":["https://registry.docker-cn.com"]

}

EOF

 

配置完成後重啓服務。

sudo systemctl daemon-reload

sudo systemctl restart docker

docker version


2、docker-compose安裝(只須要在主機1上安裝)

      Docker是一個開源的容器引擎,它有助於更快地交付應用。方便快捷已是 Docker的最大優點,過去須要用數天乃至數週的任務,在Docker容器的處理下,只須要數秒就能完成。


1、下載安裝

wgethttps://github.com/docker/compose/releases/download/1.25.1/docker-compose-Linux-x86_64

mv  docker-compose-Linux-x86_64  /usr/local/bin/docker-compose

chmod+x /usr/local/bin/docker-compose

2、驗證

docker-compose  --version

 


3、Rancher安裝(只須要在主機1上安裝)

      Rancher是一個開源的企業級容器管理平臺。經過Rancher,企業不再必本身使用一系列的開源軟件去從頭搭建容器服務平臺。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平臺

     Rancher支持多種容器引擎: swarm k8s mesos,還有自帶引擎cattle ,文檔中使用的是cattle引擎。


1、安裝啓動Rancher

dockerrun -d --restart=unless-stopped -p 18080:8080 rancher/server

2、驗證

瀏覽器輸入http://192.168.1.100:18080

3、添加主機

如:小編的客戶機是 192.168.1.101(注意圖片中是100改成101)

4、添加主機驗證


4、Harbor私有倉庫部署—docker容器管理平臺(只須要在主機1上安裝)

Harbor 是由VMware公司開源的企業級的Docker Registry管理項目

官網:https://github.com/vmware/harbor/

       Harbor是構建企業級私有docker鏡像的倉庫的開源解決方案,它是Docker Registry的更高級封裝,它除了提供友好的Web UI界面,角色和用戶權限管理,用戶操做審計等功能外,它還整合了K8s的插件(Add-ons)倉庫,即Helm經過chart方式下載,管理,安裝K8s插件,而chartmuseum能夠提供存儲chart數據的倉庫

    注意:Harbor的全部服務組件都是在Docker中部署的,全部官方安裝使用Docker-compose快速部署,因此咱們須要安裝Docker、Docker-compose。Docker Registry V2版本, 故Docker版本不小於 1.10,docker-compose不小於1.16


1、Habor下載

wgethttps://github.com/goharbor/harbor/releases/download/v1.9.4/harbor-offline-installer-v1.9.4.tgz

2、解壓

tar-zxvf harbor-offline-installer-v1.9.4.tgz

3、修改配置文件並安裝

修改 harbor/harbor.yml中的hostname ,修改成主機名或者本機IP,大約在第五行

修改 harbor/harbor.yml中的harbor_admin_password,設置密碼,大約在第27行

4、安裝Harbor

shharbor/ install.sh


5、修改docker啓動項文件並重啓dcoker服務(在主機2上修改)

/usr/lib/systemd/system/docker.service修改以下配置

 

ExecStart=/usr/bin/dockerd--insecure-registry=192.168.1.100

systemctldaemon-reload

systemctlrestart docker

 

6、登陸驗證Docker registry

dockerlogin -u admin 192.168.1.100 -pxiaowei@1234     # xiaowei@1234 是以前設置的密碼


5、開始構建Jenkins Pipeline + Docker + Git—Java項目

構建此項目所涉及到的Jenkins插件以下:

     git

pipeline

extended choice parameter

docker

rancher 

1、構建Pipeline項目

登陸jenkins,點擊「新建」,任務名稱自定義(個人叫作pipeline-docker-java)

 選擇「構建一個流水線(pipeline)項目」

     點擊「肯定」

描述,自定義

構建觸發器、高級項目選項都默認

流水線(pipeline) 定義選擇pipeline scrpt

其pipeline腳本內容以下:腳本生成詳見 pipeline語法

node{

    stage('拉取代碼') {

        git credentialsId:  'd560a335-5a3e-4f47-bfde-82f0137c2c30', url:  'http://192.168.1.100:9527/root/hello_world.git'

    }

    stage('Maven編譯')  {

    dir('./') {

        sh '/opt/apache-maven-3.6.3/bin/mvn  clean install -DskipTests=true'

    }

    }

 

    stage('構建鏡像') {

    dir('./') {

        sh 'docker login -u admin  192.168.1.100 -p12345678'

         docker.build("192.168.1.100/project/pipeline-docker-java:${BUILD_ID}").push()

      

    }

    }

    stage('發佈-部署docker鏡像至rancher') {

        rancher confirm: false, credentialId:  'a76db31e-12b8-4e75-877c-66e77a71efad', endpoint:  'http://192.168.1.100:18080/v2-beta', environmentId: '1a5', environments: '',  image: '192.168.1.100/project/pipeline-docker-java:${BUILD_ID}', ports: '',  service: 'java/pipeline-docker-java', timeout: 50

    }

}

發佈-部署docker鏡像至rancher段pipeline命令


 

git credentialsId: 爲jenkins中保存憑據的登陸用戶id

3、構建前的準備工做

打開瀏覽器登錄 http://192.168.1.100

在Harbor中建立項目小編這裏的項目名是projectà公開

2、開始構建發佈Pipeline-Docker項目

點擊構建按鈕開始構建項目


6、驗證

①、執行結果驗證


②、在客戶機中驗證

 

一、配置端口自動映射(升級應用)

待應用構建兩次後再升級應用

登陸Rancher—>選擇應用—>所有—>java—>升級

添加映射端口—>升級—>升級完成


驗證:


至此:Jenkins+Pipeline+docker項目構建完成。

本文分享自微信公衆號 - 小偉運維開發(xiaowei-dev)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索