1. 程式人生 > >Docker+Jenkins_自動化持續整合

Docker+Jenkins_自動化持續整合

1、軟體簡述:

  Jenkins是一個開源軟體專案,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。

  Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。

  這裡有一個誤區,Docker 跟Jenkins 並沒有直接的聯絡,Jenkins 是實現自動打包的,打包完也是可以實現自動部署的,並不是沒有Docker 就不可以實現自動部署了,這裡我需要強調一點。之所以用Docker,是因為Docker 是一個相比較而言比較成熟的一種技術了,而且他的優勢在於,可以實現隔離,可以在不同的作業系統跑應用(Windows,Linux)並且還可以做到日誌分離。

2、安裝軟體:

  2.1、安裝 Jenkins:

    因為Jenkins 是java專案,所以需要安裝可以執行java應用的環境,我這裡使用Tomcat了(也可以用 jboss)。

    下載tomcat 並安裝(JDK的安裝請自行百度)

1 [[email protected] src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.0.M21/bin/apache-tomcat-9.0.0.M21.tar.gz
2 [[email protected] src]# tar zxf apache-tomcat-9.0.0.M21.tar.gz
3 [[email protected] src]# mv apache-tomcat-9.0.0.M21 /usr/local/tomcat9

    驗證Tomcat 是否安裝成功

複製程式碼
 1 [[email protected] src]# /usr/local/tomcat9/bin/version.sh 
 2 Using CATALINA_BASE:   /usr/local/tomcat9
 3 Using CATALINA_HOME:   /usr/local/tomcat9
 4 Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
 5 Using JRE_HOME:        /usr/local/jdk1.8/jre
6 Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar 7 Server version: Apache Tomcat/9.0.0.M21 8 Server built: May 4 2017 22:42:36 UTC 9 Server number: 9.0.0.0 10 OS Name: Linux 11 OS Version: 3.10.0-327.36.3.el7.x86_64 12 Architecture: amd64 13 JVM Version: 1.8.0_121-b13 14 JVM Vendor: Oracle Corporation
複製程式碼

    有了環境,我們就可以安裝Jenkins了,就跟平時釋出一樣的步驟,這裡我就不解釋了吧!!!相信大神們都看不下去了

[[email protected] src]# wget http://mirrors.jenkins.io/war/latest/jenkins.war
[[email protected] src]# mv jenkins.war /usr/local/tomcat9/webapps/
[[email protected] src]# /usr/local/tomcat9/bin/startup.sh
[[email protected] webapps]# netstat -lptun | grep 8080
tcp        4      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      31160/java          

    OK我們來驗證下,並完成後續步驟

    開啟瀏覽器,最好使用谷歌,或者火狐。在位址列輸入http://IP:8080/jenkins

這裡需要輸入密碼,密碼按照提示尋找,正常情況下應該是在:/root/.jenkins/secrets/initialAdminPassword

  檢視自己的密碼 

1 [[email protected] logs]# cat /root/.jenkins/secrets/initialAdminPassword
2 cdf09c86f86e436189639cf5230aa09a

  輸完密碼點選 Continue 按鈕進行下一步

  

左邊是預設安裝,右邊是自定義安裝,本地實驗不需要特殊需求,所以選擇預設安裝了。

附張正在裝的圖,頁面還是蠻精美的

如果無法安裝,就是你的網路有問題,自己先把網路搞定了在說吧!

安裝完成後輸入自己的使用者名稱,密碼等個人資訊。然後Save and Finish一下,之後就可以啟動Jenkins了

  至此Jenkins 安裝完成。

  2.2、安裝Docker

    安裝Docker 建議

      ( RedHat | Centos ) 7.0以上版本

複製程式碼
 1 [[email protected] logs]# yum -y install docker-io
 2 [[email protected] logs]# docker version
 3 Client:
 4  Version:         1.12.6
 5  API version:     1.24
 6  Package version: docker-1.12.6-28.git1398f24.el7.centos.x86_64
 7  Go version:      go1.7.4
 8  Git commit:      1398f24/1.12.6
 9  Built:           Fri May 26 17:28:18 2017
10  OS/Arch:         linux/amd64
11 Cannot connect to the Docker daemon. Is the docker daemon running on this host?
12 [[email protected] ~]# systemctl start docker
複製程式碼

     安裝完畢,如果遇到不能安裝的情況下,可以試下換yum源,我的騰訊雲的伺服器,所以用的是騰訊的yum源

  2.3、安裝 maven

    因為專案中使用到了maven 所以需要把maven 融合到Jenkins 裡面去 

[[email protected] src]# wget http://apache.fayea.com/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
[[email protected] src]# tar zxf apache-maven-3.5.0-bin.tar.gz 
[[email protected] src]# mv apache-maven-3.5.0 /usr/local/mvn

    新增環境變數:追加兩行到/etc/profile   最後驗證是否安裝成功mvn -v

複製程式碼
export MAVEN_HOME=/usr/local/mvn
export PATH=$PATH:$MAVEN_HOME/bin
[[email protected] src]# mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/mvn
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-327.36.3.el7.x86_64", arch: "amd64", family: "unix"
複製程式碼

 至此,軟體安裝完畢。  

 3、建立一個專案

    先配置一下Jenkins 

    首頁–> 系統管理 –> Global Tool Configuration –> 新增“jdk Maven Docker”  #注意:是三個,不是一個,如果路徑不對,會有報錯的

    最後不要忘記,Save下    # 使用svn的小夥伴注意了:“如果沒有新增svn 可以在外掛管理選項中安裝svn 外掛後即可新增svn,這個自行百度。”

  3.1、建立一個新任務

    

 點選圖片中的 開始建立一個新任務,這裡建立一個自由風格的軟體專案,並書寫上專案名稱,點選OK進行下一步操作

    

       

     原始碼管理,我這裡使用git的方式來管理專案,我這裡去開源中國找一個免費開源專案來進行測試。

         

    正常的構建專案只需要做好原始碼管理即可,如需要使用Docker  使用shell即可呼叫。觸發器的作用相當於觸發某個條件,就會立即去構建,不必後期的手工構建了。

     

      點選類似時鐘的圖示,點選立即構建,然後他會自動去打包,如果成功,S下面的圖示會顯示為藍色,右邊為太陽的圖示。至此專案構建完成。

      

4、最後附上 Docker 常用命令:會用Docker的大神請略過,並希望可以加個QQ:1747535503 做個朋友認識下,謝謝!

複製程式碼
  1 Docker 命令集
  2     尋找網路映象命令
  3         docker search centos
  4             
  5             [[email protected] ~]# docker search centos
  6                         名字                                             描述                                             下載次數  是否官方   是否是Dockerfile構建的 
  7             INDEX       NAME                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMAT
  8             docker.io   docker.io/centos                                 The official build of CentOS.                   3301      [OK]       
  9 
 10     下載映象
 11         docker pull centos
 12     檢視映象
 13         docker images
 14     刪除映象
 15         docker rmi
 16     
 17 容器命令
 18     啟動容器
 19         docker run --name -h hostname
 20     啟動容器2
 21         docker start CONTAINER ID
 22     停止容器
 23         docker stop CONTAINER ID
 24     檢視容器
 25         docker ps -a 
 26     進入容器
 27         docker exec | docker attach
 28     刪除容器
 29         docker rm
 30 
 31 進入後臺執行容器
 32     docker attach 68e5c66ee5c9        退出自動停止執行容器
 33 
 34 進入容器
 35     docker run --name mydocker -it docker.io/centos /bin/bash
 36         -d        進入後臺執行
 37         --run    執行
 38         --name 指定名字
 39         -i        輸入終端開啟
 40         -t        開一個偽終端
 41         
 42 進入容器不退出
 43 1、進入容器
 44     docker run --name mydocker -it docker.io/centos /bin/bash
 45 2、退出
 46 3、啟動容器
 47     docker ps -a查詢ID號
 48     docker start ID號
 49 4、獲取Pid號
 50     docker inspect --format "{{.State.Pid}}" 68e5c66ee5c9
 51 5、進入容器而不退出
 52     nsenter --target 19205 --mount --uts --ipc --net --pid    退出不停止執行容器
 53     如果沒有這個命令,需要安裝util-linux包    nsenter
 54 
 55 6、懶人寫法
 56     nsenter --target `docker inspect --format "{{.State.Pid}}" ID` --mount --uts --ipc --net --pid    
 57 docker 網路訪問
 58     docker run -P 
 59         -P    隨機對映
 60         -p    hostport:containerPort
 61         -p    ip:hostPort:containerPort
 62         -p  ip::containerPort
 63         -p  hostPort:containerPort
 64         -p  hostPort:containerPort
 65         
 66 資料卷管理
 67     docker 
 68         -v /data
 69         -v /src:/dsrc
 70         -v /src:/src:ro 
 71 
 72 容器的製作
 73     docker commit -m "my nginx" f443e801f545 shijia/my-nginx:v1
 74 Docker file 的方式構建docker映象
 75     
 76     FROM         他的媽媽是誰(基礎映象)
 77     MAINTAINER    告訴被人,你創造了他(維護者資訊)
 78     RUN            你想讓他幹啥(把命令前面加上RUN)
 79     ADD         相當於cp命令(COPY檔案,會自動解壓)
 80     WORKDIR        相當於cd命令(當前工作目錄)
 81     VOLUME        給我一個放行李的地方(目錄掛載)
 82     EXPOSE        我要開啟的門是啥(埠)
 83     RUN            奔跑吧,兄弟!(程序要一直執行下去)
 84     
 85     Docker 案例
 86     vim /opt/docker-file/nginx/Dockerfile
 87     
 88     # This is My first Dockerfile
 89     # Version 1.0
 90     # Author : Shijia Zhang
 91 
 92     #Base images
 93     FROM centos
 94 
 95     #MAINTAINER
 96     MAINTAINER ShiJia Zhang
 97 
 98     #ADD
 99     ADD pcre-8.37.tar.gz    /usr/local/src
100     ADD nginx-1.9.3.tar.gz  /usr/local/src
101 
102     #RUN
103     RUN yum -y install wget gcc gcc-c++ make openssl-devel
104     RUN useradd -s /sbin/nologin -M www
105 
106     #WORKDIR
107     WORKDIR /usr/local/src/nginx-1.9.3
108 
109     #RUN
110     RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install
111 
112     RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
113 
114     ENV PATH=/usr/local/nginx/sbin:$PATH
115     EXPOSE 80
116 
117     CMD ["nginx"]
118 執行Dockerfile
119     docker build -t nginx-file:v1 /opt/docker-file/nginx/
120 其他命令
121     docker run -it --rm stree --cpu 1
122     --rm    容器執行完即可刪除
123     --cpu    指定分多少顆CPU

相關推薦

Docker+Jenkins_自動化持續整合

1、軟體簡述:   Jenkins是一個開源軟體專案,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。   Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間

.NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實現持續整合自動化部署)

通過前面三篇: [.NET Core部署到linux(CentOS)最全解決方案,常規篇](http://blog.rdiframework.net/article/244) [.NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx)](http://bl

JDK+Jmeter+Ant+Jenkins介面自動化持續整合環境搭建與執行

一、簡介 本文章主要是介紹介面自動化持續整合環境搭建以及測試例項,Apache JMeter是Apache組織開發的基於Java的介面和效能測試工具。 Apache Jmeter是一個100%的純java桌面應用,主要是針對web的壓力和效能測試,但後來擴充套件到其他測試領域。Jmeter可以用於測試

.net core 2.x - docker-linux容器-持續整合(jenkins)

  1.準備工作      先說明哈,以下操作都是在windows中:      a).需要下載安裝 jenkins 的windows版本      b).需要下載安裝 docker for windows,安裝之後使用的 linux容器,如果不知道的,可以看上一篇      c).我們這裡的演示使

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

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

Docker與CI持續整合/CD

背景        Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。       持續整合(Continuous integration)是一種軟

基於docker-swarm搭建持續整合叢集服務

前言 本文只為自己搭建過程中的一些簡單的記錄。如果實踐中有疑問,可以一起探討。 為了能在本機(macOS)模擬叢集環境,使用了vb和docker-machine。整體持續整合的幾個機器設施如下: 服務節點:三個manager節點,一個wor

Docker Swarm 在持續整合測試中的應用

背景敏捷(Agile)模式被廣泛應用,測試顯得尤為重要。由於需要頻繁釋出新的版本,我們需要更加頻

linux+ant+jmeter+jenkins搭建介面自動化持續整合平臺

一、Jmeter+ant 1、首先我們預設Jmeter指令碼已經錄製好了,並測試通過,存在(查詢模組.jmx)指令碼  2、將JMeter所在目錄下extras子目錄裡的ant-JMeter-1.1.1.jar複製到Ant所在目錄lib子目錄之下,這樣Ant執行時才能找到"org.programmerpla

ASP.NET Core + Docker +Jenkins 實現持續整合

本文為 docker-compose 方式,但自從 Visual Studio 2017 15.8 版本更新以後,通過VS新增的 Docker 支援預設就只有 Dockerfile 了,所以請參見這篇文章:https://www.cnblogs.com/stulzq/p/9201830.html 準備 我

Jenkins + docker + docker-compsoe + svn 持續整合

開發十年,就只剩下這套架構體系了! >>>   

Gitlab Runner實現NetCore自動化持續整合

目錄 1.開發工具 2.GitLab伺服器搭建 3.新建webapi 4.Dockerfile配置 5.配置docker-compose.yml 6.配置.gitlab-ci.yml 7.在GitLab上新增一個新專案 8.GitLib Runner安裝 9.提交程式碼到gitlab 10.在GitLab上檢

pytest、tox、Jenkins實現python介面自動化持續整合

# pytest介紹 pytest是一款強大的python測試工具,可以勝任各種級別的軟體測試工作,可以自動查詢測試用並執行,並且有豐富的基礎庫,可以大幅度提高使用者編寫測試用例的效率,具備可擴充套件性,使用者自己也可以編寫外掛實現特定的功能,也可以安裝第三方外掛,非常容易的與其他工具整合到一起,比如持續整

基於Docker容器的,Jenkins、GitLab構建持續整合CI

摘要: 一、場景: 開發者將程式碼提交(push)到GitLab後,GitLab通過Hook通知jenkins,jenkins自動從GitLab中獲取專案最新的原始碼進行整合和釋出。 二、準備: 基於Docker,建立一個私有GitLab的容器,建立一個jenkins的容器 三、步驟 1、

【學習資料】 持續整合---測試自動化學習

[持續交付實踐] 開篇:持續整合&持續交付綜述 前言 隨著微服務架構與容器虛擬化技術的發展,持續整合與持續交付的概念又重新回到了大家的視野,越來越多的公司開始使用持續整合的系統來解決頻繁釋出帶來的質量問題;使用持續交付的工具來實現程式碼在不同環境上的自動部署。原本有些學院派烏托邦

docker+jenkins+maven+gitlab搭建整合java持續整合環境(待完成)

環境:虛擬機器下centos7   首先配置jdk: mkdir /usr/local/java 下載jdk1.8:官網:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133

『中級篇』docker之CI/CD持續整合-專案生成映象(76)

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文連結地址:『中級篇』docker之CI/CD持續整合-專案生成映象(76) 開始想用docker registry做私有映象庫,後來放棄了,知道的老鐵應該知道這個玩意沒有介面很不爽,後來選擇了Harbor,還是通過vagr

『中級篇』docker之CI/CD持續整合-(終結篇)(77)

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文連結地址:『中級篇』docker之CI/CD持續整合-(終結篇)(77) 今天是中級終結篇的最後一次了,想想在二個月的時間,每天的堅持學習和更新收穫還是滿滿的,跟我一起學習的小夥伴不知道你收穫到了嗎? 想說的

IDEA+maven+java+TestNG+git+jenkins 第八篇自動化持續整合

1、安裝JDK,設定環境變數,這裡就不講了網上都有教程; 2、新建一個maven專案,編寫程式,這裡也不講了前面七篇講過了; 3、安裝jenkins,也很簡單,可以直接安裝在windwos系統上也可安裝到tomcat中還可以安裝到應用伺服器中; 4、在jenkins中安裝相應的外掛,主要

『中級篇』docker之CI/CD持續整合-整個流程串聯(75)

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文連結地址:『中級篇』docker之CI/CD持續整合-整個流程串聯(75) 前面主要說了CI python,CI java,CDpython,這次主要說下從gitlab,gitlab-ci,gitlab CICD的整個從開