基於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 你就可以在控制檯看到構建的日誌了,它會根據你的配置一步一步執行,當你其中一個步驟出錯,構建會馬上停止,所以儘量不要讓自己的配置裏面有錯誤指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章