1. 程式人生 > >基於jenkins+docker+git的專案自動化部署

基於jenkins+docker+git的專案自動化部署

終於完工了,終於徹底的成功了,終於有一點點成效了,乘著還有點時間,記錄一下,免得忘記。

一:環境

1、安裝有docker的linux伺服器(ip地址:17x.17.85.x)(如何安裝?:Docker入門級操作:docker安裝及下載映象)、安裝jenkins的伺服器(ip地址:17x.16.81.x),githab,專案檔案如圖:

二、對專案的處理

1、在專案的啟動專案xxx_war目錄下的pom.xml檔案中的

<build>
     <plugins>
   此處新增下面那段話
 </plugins>
    </build>

加入這一段:

    <plugin>
		<groupId>com.spotify</groupId>
		<artifactId>docker-maven-plugin</artifactId>
		<version>0.4.14</version>
		<configuration>
            <!-- 專案生成的映象名稱 -->
			<imageName>${project.name}:${project.version}</imageName>
			<!-- dockerfile的存放位置 -->
			<dockerDirectory>${project.basedir}</dockerDirectory>
			<skipDockerBuild>false</skipDockerBuild>
			<resources>
				<resource>
				<!-- 專案生成war包的的存放位置 -->
				<directory>${project.build.directory}</directory>
				<include>${project.build.finalName}.jar</include>
				</resource>
			</resources>
		</configuration>
	</plugin>

2、在你的pom.xml檔案所指的dockerDirectory,(dockerfile的存放位置)放一個Dockerfile檔案,我的位置在這裡:

dockerfile檔案內容比較簡單,主要取決於你的基礎映象的好壞,我的就很需要優化,哈哈

# dockerfile 基礎配置
FROM 基礎映象

MAINTAINER 作者資訊

# CI會在編譯Docker映象之前把編譯產物拷貝到target目錄下
COPY /target/*.war /opt/tomcat7/webapps/xxx.war
# configuration of java and tomcat ENV 
ENV JAVA_HOME /opt/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
ENV CATALINA_HOME /opt/tomcat7
ENV CATALINA_BASE /opt/tomcat7
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#設定啟動命令
ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh","run"]

3、在每一個pom.xml檔案中新增下面檔案,(解決jenkins使用maven編譯時報亂碼的錯誤)

<properties>
	<!-- 檔案拷貝時的編碼 -->
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<!-- 編譯時的編碼 -->
	<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

專案的處理大致就是這些。其中特別注意的是dockerfile檔案的位置和war位置需要注意。

三、對jenkins的處理

開始我按照網上各種方法都嘗試了,但是我的知識實在有限,理解不了,想到這個方法是因為我一直在Xmanager工具裡面操作docker所以才想到在jenkin裡面使用ssh對安裝有docker的伺服器進行操作。所以感覺比較簡單,我能夠理解的方法。

1、首先公司jenkins已經安裝在windows的伺服器上了,並且安裝了ssh和maven。

2、在安裝jenkins的伺服器上面新增環境變數(檢查安裝docker的環境看是否埠已開通:後面新增):

DOCKER_HOST tcp://xxx.xxx.xxx.xxx:2375

3、通過jenkins的視覺化介面新增可遠端控制裝有docker 的伺服器,單擊系統管理--》系統設定--》SSH remote hosts中新增ssh相關資訊,步驟如圖:

3、建立新專案

1)在jenkins的視覺化介面中點選新建--》新增專案名稱--》構建一個自由風格的軟體專案--》左下角點選OK步驟如圖:

2)點選專案名稱進入專案--》配置

   1.新增專案描述等基礎資訊

   2.原始碼管理:公司有svn也有用git,以git為示例。

  3.構建

這裡的每一個指令都要是正確的,一個地方錯了,構建就不會成功。特別要注意空格、分號、名稱對應等等小細節。

通過ssh對docker環境的控制,此處的判斷是如果在docker環境中已經有此專案的容器正在執行,那麼先停止容器,然後刪除容器,再刪除映象,特別注意的是刪除容器是rm,刪除映象是rmi。(:1.0.0-SNAPSHOT)雙引號後面的是版本號。映象名稱應當和pom.xml將形成的映象名稱中的一致。

if docker ps -a|grep -i xxxget; then 
docker stop xxxget; 
docker rm xxxget; 
docker rmi xxxget_war:1.0.0-SNAPSHOT;
 fi

這個語句非常重要,將這個語句實現兩個功能,一個cd xxx_war是將建立環境轉換到啟動專案下面(預設在jenkins建立的專案執行目錄下,也就是testxxxfet下),第二mvn -am -amd 就是build專案的啟動子專案以及與之相關聯的子專案。大家需要修改的是啟動子專案的名稱。

cd xxxget_war && mvn  -am -amd clean package docker:build

這個語句是啟動專案映象的容器,其中18080為docker對外的介面,可以根據需要修改,--name後面是你請動的容器的名稱,後面是映象名稱,應當和pom.xml檔案中生成的映象名稱一致,當jenkins執行到了這一步說明你的映象已經打包成功了,你在你的docker環境下可以看到你的映象(使用:

docker images

檢視映象)

docker run -it -d -p 18080:8080 --name xxxget xxxget_war:1.0.0-SNAPSHOT /bin/bash

4.構建後的操作:

這裡是構建完成之後,jenkins給你郵箱傳送構建資訊。

到此你的jenkins配置基本完成了,你也可以在加上一些時間的限制,比如說,規定每天的某個時間自動構建一下專案等等。

4、啟動專案的構建

配置完成之後回到專案,點選立即構建--》console output 你就可以在控制檯看到構建的日誌了,它會根據你的配置一步一步執行,當你其中一個步驟出錯,構建會馬上停止,所以儘量不要讓自己的配置裡面有錯誤指令。

相關推薦

node項目自動化部署--基於Jenkins,Docker,Github(3)自動化部署

工作 控制 pub del 可能 color png github上 over GitHub倉庫 由於現在的代碼基本上都是多人合作開發,所以肯定會用到像 git 這樣的版本控制工具 所以這裏使用 GitHub 來做一個演示 首先我們需要在github上新建一個倉

基於jenkins+docker+git專案自動化部署

終於完工了,終於徹底的成功了,終於有一點點成效了,乘著還有點時間,記錄一下,免得忘記。 一:環境 1、安裝有docker的linux伺服器(ip地址:17x.17.85.x)(如何安裝?:Docker入門級操作:docker安裝及下載映象)、安裝jenkins的伺服器(i

基於 Jenkins+Docker+Git 的CI流程初探

width entos 進制 pub share save dog 一起 生產 在如今的互聯網時代,隨著軟件開發復雜度的不斷提高,軟件開發和發布管理也越來越重要。目前已經形成一套標準的流程,最重要的組成部分就是持續集成(Continuous Integration,CI)及

在搭建基於jenkins+maven+git+docker的全自動化部署時遇到的問題

系統版本: 由於docker的安裝要求linux系統核心必須在3.10以上,因此,系統版本我選擇的是centos7.2,採用的是淘寶的雲伺服器,因此在更換系統以及在今後的docker等方面都簡單了不少,不得不說阿里的東西還是很不錯的,由於公司要求,我們

jenkins+docker+git+springboot實現可持續自動化部署

本篇文章引導你使用Jenkins部署SpringBoot專案,同時使用Docker和Git實現簡單的持續整合和持續部署。(專案地址:first-app-demo)流程圖如下:push程式碼到Github觸發WebHook。(因網路原因,本篇使用gitee)Jenkins從倉庫

SpringBoot + Jenkins + Docker + Git自動化部署

SpringBoot + Jenkins + Git自動化部署 1、Jenkins安裝 到Jenkins的官網:http://jenkins.io下載jenkins.war檔案 然後將jenkins.war檔案上傳到Linux伺服器,執行jar -jar jenkins.war命

基於Jenkins 實現php專案自動化測試、自動打包和自動部署

   本篇博文宅鳥將在上篇: 基於Jenkins 搭建持續整合環境 的基礎上,繼續介紹Jenkins結合php專案實現自動化測試和自動部署。廢話不再多說,直接上幹活。    宅鳥所使用的server為Ubuntu    要實現在jenkins中實現php的自動化測試,首先需要Jenkins伺服器上安裝ph

基於Jenkins 實現php專案自動化測試、自動打包和自動部署(-)

基於Jenkins 實現php專案的自動化測試、自動打包和自動部署(一) 身在創業公司,碰到任何問題,都得擼起袖子加油幹: 隨著專案團隊的不斷擴大,專案因為人員的參差不齊導致各種各樣的問題。於是引入jenkins持續整合。 廢話不多說,先普及基礎概念

JenkinsJenkins+maven+git / SVN 搭建專案自動化部署整合環境

目錄 一、完成jdk的安裝  參考我的另一博文: (1)Jenkins部署在Windows系統,jdk安裝在Windows系統:【jdk】window10:jdk 8下載和安裝步驟 二、完成git/svn的安裝 (一)根據公司使用

《阿里雲伺服器搭建》------實現Jenkins和github之間自動化部署專案

本系列教程的搭建環境為阿里雲伺服器,其他伺服器可作為參考。 本文主要講述實現Jenkins和github之間自動化部署專案 在瀏覽器中開啟我們的jenkins頁面。(http://ip:80/jenkins) 然後登陸管理員使用者。 為我們的專案建立一個job

《阿里雲伺服器搭建》------實現Jenkins和github之間自動化部署Maven web專案

本系列教程的搭建環境為阿里雲伺服器,其他伺服器可作為參考。 本文主要講述實現Jenkins和github之間自動化部署Maven web專案 前面,我們已經完成的jenkins部署java web專案,下面來部署一個maven專案。 1.下載部署maven專案所

jenkins+maven+docker+github全自動化部署SpringBoot

前言 上篇文章簡單介紹瞭如何安裝jenkins和使用maven+github webhooks實現自動編譯和釋出專案,這篇文章將分享一下:jenkins呼叫遠端指令碼配合docker完成CI/CD. 安裝 Dokcer Docker是一

基於Jenkins+docker實現一鍵式部署

摘要】本實踐介紹了利用Jenkins 和docker技術,如何實現CI/CD的各環節的步驟,包括環境準備,程式碼提交,編譯程式,構建映象,部署,測試。一套完整的流程,和今日元宵佳節的圓月甚是應景,希望大家能有所收穫。【關鍵詞】Docker、映象、Jenkins、持續整合、自動

jenkins+docker+nodejs專案的自動部署環境(案例)

介紹 jenkins+docker+nodejs 自動部署 亮點 採用shell自定義指令碼,控制整合部署環境更加方便靈活如果伺服器更換,重新部署的工作量會比較小涉及的docker命令,會有講

Jenkins實現前端專案自動化整合打包部署

前言: 為了前端專案的工程化,減少專案釋出環境的部署,實現自動化整合打包部署。 本文是針對前端專案和gitlab倉庫程式碼,簡述jenkins實現自動化部署的配置流程。 jen

.NET Core微服務之基於Jenkins+Docker實現持續部署(Part 1)

一、CI, CD 與Jenkins   網際網路軟體的開發和釋出,已經形成了一套標準流程,最重要的組成部分就是持續整合(Continuous integration,簡稱 CI) => 持續整合指的是,頻繁地(一天多次)將程式碼整合到主幹。   它的好處主要有兩個: 快速發現錯

Jenkins+Maven+Gitlab構建自動化部署專案

本次安裝部署是基於CentOS 7系統,填寫的一些路徑根據自己的實際情況進行調整。 1.下載 2.匯入 3.安裝 yum install jenkins 4.配置Java及埠 配置Java位置: vi /etc/init.d/jenkins

《阿里雲伺服器搭建》------實現Jenkins和github之間自動化部署Java web專案

本系列教程的搭建環境為阿里雲伺服器,其他伺服器可作為參考。 本文主要講述實現Jenkins和github之間自動化部署專案 然後登陸管理員使用者。 為我們的專案建立一個job3.為我們的專案建立一個

專案自動化部署--Jenkins安裝

簡介         以往部署專案,全量部署後都是手動增量替換class,然後重啟伺服器等方式實現。後來聽說有自動化部署工具,恰好當前公司有這個需求,趁機學習了下(Jenkins),感覺很不錯,做筆記以備後期使用。 Jenkins簡析         Jenkins

打造jenkins+docker+nodejs專案的自動部署環境(webhook)

一步一步打造jenkins+docker+nodejs專案的自動部署環境 介紹 jenkins+docker+nodejs 自動部署 亮點 採用shell自定義指令碼,控制整合部署環境更加方便靈活如果伺服器更換,重新部署的工作量會比較小涉及的docker命令,會有講解(不知道算不算亮點)前提 程式碼通過g