码云gitee webhook jenkins 按不同分支、模块构建部署,微服务项目部署

背景

一个托管在gitee的公司项目,基于maven的微服务项目,有多个子模块,子模块需要分开单独部署,当每个子模块有代码push到prod分支上时就触发jenkins任务,构建docker镜像,并更新k8s中相应deployment的image。

代码结构:

QQ20181106-004713@2x

父项目 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jiutong.cloud</groupId>
    <artifactId>9tong-cloud</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>eurekaserver</module>
        <module>eurekaclient-newsprocess</module>
        <module>eurekaclient-newsapi</module>
        <module>apigateway</module>
        <module>eurekaclient-userapi</module>
        <module>configserver</module>
        <module>zipkin</module>
  </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

其中,eurekaserver,configserver,apigateway是需要独立部署的

jenkins 任务展示:

QQ20181106-005152@2x

使用的是Generic Webhook Trigger插件

不了解的百度下
webhook地址配置为: http://{jenkins_url}/generic-webhook-trigger/invoke

使用了jsonpath json解析

https://github.com/json-path/JsonPath

webhook请求体重的json

请自行到gitee webhook设置处查找,然后再继续

apigateway的jenkins任务配置:

请只关心 插件Generic Webhook Trigger相关的设置

FireShot-Capture-1---apigateway-Config--Jenkins----http___jenkins.9tong.com_job_apigateway_configure

eurekaserver的jenkins任务配置:

请只关心 插件Generic Webhook Trigger相关的设置
2

configserver的任务配置

...

Generic Webhook Trigger插件主要的配置

1
2-1
3
这三对定义,提取了webhook请求json中的分支名、项目名、commit的文件路径,有这三个就能区分项目、分支、模块了:
4
使用正则表达式匹配

最后的效果

只提交apigateway模块的代码,只会部署apigateway,只提交eurekaserver模块里的代码就只部署eurekaserver,就是说没commit代码的模块不会触发jenkins的任务

相关教程

使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成--指定具体项目和分支进行集成

码云Webhook触发Jenkins自动构建 - Jenkins演练(一)

(全文完)