jenkins四--一次实践

步骤一

1,改绝对路径为相对路径。
  • 项目war部分使用ant来构建,用来压缩静态文件如js,由于我对ant不是特别了解,因此,暂时不打算去掉。但是原ant的 build.xml 使用了两个绝对路径,这个很不方便,因此要修改
    • 一个是ant构建时使用到的script和lib,这个我把整个script也放进项目路径中。这样子路径就和项目一起了,不用写死路径。
    • 一个是之后的输出路径,也写死了,这个也是极不合理的,这样子导致我换个jenkins打包都不行。因此这里我改成和项目一起。
      修改前:
      在这里插入图片描述
      修改后:在这里插入图片描述
2,设置maven文件. 根据不同环境设置不同的参数值.
  • 项目打包也用到了maven,但是我们自己也简单分了测试和灰度环境,原先也没有做区分。因此也需要在打包的时候分开。这里由于配置不一样参数不多,因此我这里只是提取几个地方进行区分设置。一般建议不同环境通过maven设置使用不同配置文件路径。
  • 开启值设置,使资源文件里的值可以在maven打包时根据参数(如dev和test环境)设置为不同的值
	<build>
		<!-- 设置最后生成的jar包或war包名称-->
		<finalName>t9-ecm</finalName>
		<resources>
			<!-- 设置需要设置参数的资源路径-->
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		...
	</build>

参数值设置,使用profile在设置具体参数

<!-- profile设置不同环境参数-->
<profiles>
<profile>
  <id>153</id>
  <properties>
      <websocket.ip>192.168.0.153:8055</websocket.ip>
  </properties>
</profile>
</profiles>

不传参数时默认值

<!-- 设置一些默认参数 -->
<properties>
<websocket.ip>192.168.0.153:8055</websocket.ip>
<uat.time>${maven.build.timestamp}</uat.time>
</properties>

3,ant和maven设置之后,有svn和帐号就可以在jenkins进行build了。

  • 在jenkins,新建任务选择,构建一个maven项目build 填写. clean deploy -Dmaven.test.skip=true -P153
    Pre Steps 增加 ant. 填写如下在这里插入图片描述

步骤二

进行上面修改设置之后,打包的功能基本完成,接下来向其中增加一些功能。

1,版本问题
  • 环境问题之后,还有版本问题。由于灰度通过的版本可能会给客户升级,因此我想在war包记录这个版本。
  • 在resource 下,uat.properties 里面记录了,version=xxx,在每次发布不同版本时能够动态设置。
  • 这个可以通过maven的profile解决。但是每次发版都去修改 jenkins任务设置,肯定是不合适的。
  • 这时候参数化构建就起到作用了,对于一些个别参数即可通过这种方式解决。在这里插入图片描述
    uat.properties里用 version=${uat.version} , maven构建增加 -Duat.version=${uat},并且,我为了方便查看版本, 不用进到文件里查看。还想在外面新建一个以这个值为名称的空文件. 如下在这里插入图片描述
2,打包结果通知
  • 我想在打包不成功的时候,能够有通知,以便让我及时查看失败原因,及时解决。
  • 增加构建后操作,点 Editable Email Notification。
    在这里插入图片描述
  • 打开 Advanced Setting, Add Trigger ,选择相应的通知Trigger。 这里选择Failure Any,如下,同时,由于我们在 之前系统配置 已经配置了接收人,Send To选择 Recipient List 即可. 在这里插入图片描述
3,获取包问题
  • 我想把当次打包成功的包供内网下载(目的是为下一步自动部署
  • 在部署jenkins的机器上简单放了一个下载服务<即tomcat>, 然后把生成的war包copy到该tomcat下, 供外界下载在这里插入图片描述
4,自动发布1
  • 对于测试环境,经常需要构建完成之后要发布上到测试环境上。
  • 可以在这个任务继续加这样的功能。这里我新建了另外的 jenkins 任务来操作发布。 达到职能分离。
  • 新建简单任务,源码什么的都不用填。在构建那里,选 Execute shell script on remote host using ssh。填入以下内容:
#先关闭tomcat,可以这样关闭是因为我设置了tomcat启动的进程名为tomcat7x-t9,也可以通过其它方式进行tomcat关闭。
pkill tomcat7x-t9   
#移除旧应用, 也可以使用备份的方式
rm -rf /home/usr/local/t9ecm/tomcat7x-t9/webapps/t9-ecm 
rm -rf /home/usr/local/t9ecm/tomcat7x-t9/webapps/t9-ecm.war
#下载最新打包的war包
wget -P /home/usr/local/t9ecm/tomcat7x-t9/webapps http://192.168.0.249:7080/t9/t9-ecm.war
#启动tomcat
sh /home/usr/local/t9ecm/tomcat7x-t9/bin/startup.sh

在这里碰到了几个问题
1)原先运行的tomcat无法通过执行 shutdown.sh 进行关闭,只能通过进程强制关闭。因此, 我就想能不能.通过设置进程名称,通过 pkill 进程名来关闭。
2)启动的时候报没有java_home错误,但是我明明在/etc/profile配置了的。找了很久才发现,原来还需要设置bash环境,需要在 /etc/bashrc 再配置一次.
3)如何修改tomcat进程的名称 linux下, 打开 tomcat_home/bin/setclasspath.sh 将 _RUNJAVA="$JRE_HOME"/bin/java 替换为

cp "$JAVA_HOME/bin/java" "$JAVA_HOME/bin/tomcat7x-t9"
_RUNJAVA="$JRE_HOME/bin/tomcat7x-t9"
5,自动发布2
  • 上面将构建和部署分成了两个任务,现在我想一步到位,点一次就可以整个流程执行。
  • 可以通过第一个任务构建成功之后trigger部署。 这里不再说这个方式
  • 为了方便控制,我又新建了一个任务把这俩个步骤结合起来。由于其中一个任务构建时有参数传递,因此,新建的任务也需要一个参数来传递给这个任务。在这里插入图片描述
  • 首先,构建打包任务, 在构建步骤选 Trigger/call builds on other projects
  • 构建ecm,由于该任务有参数。 使用 Predefined parameters,传递参数。并且, 如果ecm构建失败了,则该集合任务也应该是失败的状态(即状态等同), 进行相应选择
    在这里插入图片描述
  • 部署ecm, 该任务只有在上一个任务成功,才进行运行。在Block until the triggered projects finish their builds. 打勾。在这里插入图片描述
  • 这样子,就把 这两个任务集合起来了。
6,定时构建
  • 接下来,我想定时自动打包部署。
  • 由于我们上面建了一个任务,集合其它任务,因此只需要在集合的任务里使用定时构建即可。在这里插入图片描述

最终结果

  • 点构建集合任务时,会需要填写参数值, 如果自动构建, 则使用默认的参数值。 构建失败时可以收到邮件.
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值