jenkins+ansible发布mvn项目到tomcat

本文章演示通过 SVN 拉取代码,调用 ansible-playbook 完成编译打包并发布到 Tomcat 的流程。

一、配置jenkins

1、新建jenkis自由项目

勾选参数化构建过程
1
此步骤有3个参数:

  • deploy 编译部署新版本
  • rollback 回滚至上一个版本
  • packaging 编译打包不发布

2、配置源码管理

这里是从 svn 拉取代码
2

3、执行shell处理源码支持mvn

由于此 java web 项目并不是 Mave 项目,此步骤对项目进行调整,使支持 Maven 处理。
3

4、执行shell开始步骤

我们这里通过调用 Ansible-playbook 去执行具体步骤,根据第一步的执行参数去执行相应的步骤。
4
jenkins配置到此完成。

二、配置Ansible-playbook

1、Playbook目录编排

我们先来编排 Playbook 目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
eduwar
├── eduwar.yml
└── roles
├── deploy
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│   └── vars.yml
├── mvn
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│   └── vars.yml
├── packaging
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│   └── vars.yml
└── rollback
├── files
├── handlers
├── meta
├── tasks
│   └── main.yml
├── templates
└── vars

共有4个roles:

  • deploy 发布到Tomcat
  • mvn Maven编译打包
  • packaging 复制包到指定路径
  • rollback Tomcat下回滚发布

2、配置Inventory

有多种方法可以配置 Inventory,这里使用原生配置文件 /etc/ansible/hosts 文件来配置:

1
2
3
4
5
6
7
8
9
10
11
[edu]
192.168.1.29
[edu:vars]
tomcat_dir=/usr/local/apache-tomcat-7.0.85
project_name=edu

[backup]
192.168.1.4

[localhost]
127.0.0.1

edu 为运行项目的服务器,给它配置2个变量:tomcat路径和项目名称。
当然 edu 若配置多台主机,就可以同时发布多台了。

3、Playbook编写

具体请移驾github查看:https://github.com/zhanghonged/ansible-example/tree/master/tomcatWar