基于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 你就可以在控制台看到构建的日志了,它会根据你的配置一步一步执行,当你其中一个步骤出错,构建会马上停止,所以尽量不要让自己的配置里面有错误指令。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值