incloud开发文档 5.1.0 Help

jm

jm(Java Manager)是使用go语言实现的一个自动化构建工具,支持对java平台的编译、构建、打包、发布等操作,通过yaml配置,支持maven多模块的构建和依赖关联打包。

使用

下载安装

工具下载页面: Java Manager

执行:

mv jm /usr/local/bin chmod +x /usr/local/bin/jm

使用方法

在任意目录执行jm,会提示使用方法,如下:

用法 jm [exec] 提示 exec build 示例 jm build 构建 jm 帮助 jm help 帮助 jm -h 帮助 jm ? 帮助 jm version 版本 jm -v 版本 jm --v 版本 作者 zouliming@netwisd.com

gitlab-ci.yml示例:

stages: - pull - build pull: only: - master stage: pull before_script: - cd $CI_PROJECT_DIR script: - git pull origin master build-deploy: only: - master stage: build script: - jm build default: before_script: - . /etc/profile - . ~/.bashrc - cd $CI_PROJECT_DIR - chmod +x ./* -R

完整配置

jm的配置文件名称为cicd.yaml,此名称为固定名称,不可修改,配置文件的内容如下:

# ********************* # 构建服务的配置,此配置用于配置所有构建服务配置 # zouliming@netwisd.com # 2023.4.21 # ********************* logger: path: "/root/jm/incloud5/log" # 日志文件路径。默认为空,表示关闭,仅输出到终端 file: "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log" prefix: "" # 日志内容输出前缀。默认为空 level: "info" # 日志输出级别 ctxKeys: [ ] # 自定义Context上下文变量名称,自动打印Context的变量到日志中。默认为空 header: true # 是否打印日志的头信息。默认true stdout: true # 日志是否同时输出到终端。默认true rotateSize: 0 # 按照日志文件大小对文件进行滚动切分。默认为0,表示关闭滚动切分特性 rotateExpire: 0 # 按照日志文件时间间隔对文件滚动切分。默认为0,表示关闭滚动切分特性 rotateBackupLimit: 0 # 按照切分的文件数量清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除 rotateBackupExpire: 0 # 按照切分的文件有效期清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除 rotateBackupCompress: 0 # 滚动切分文件的压缩比(0-9)。默认为0,表示不压缩 rotateCheckInterval: "1h" # 滚动切分的时间检测间隔,一般不需要设置。默认为1小时 stdoutColorDisabled: false # 关闭终端的颜色打印。默认开启 writerColorEnable: false # 日志文件是否带上颜色。默认false,表示不带颜色 # 构建服务的配置 service: version: "5.1.0-SNAPSHOT" #single为单模块模式,multi为多模块多目录模式,multi分两种:multi-standard、multi-customized #multi-standard多模块会按项目名称以“-”连接符递归做目录构建 #如:incloud-biz-demo-test,那么你的项目目录结构为:/incloud/incloud-biz/incloud-biz-demo/incloud-biz-demo-test这种结构 #multi-customized为自定义多目录结构,实现原理是根据相应的服务名遍历磁盘的目录,如果目录结构多,会有性能问题,请使用multi-standard模式; #multi-customized需要保证填写的服务名跟实际项目的目录名一致,如incloud-product-test,对应这个模块目录也为如incloud-product-test,多目录层级不用写,会自动查询遍历 use: multi-standard single: # 当为multi时,此处为空或不要此标签,当为single时,此处为当前单服务的服务名(即:POM中定义的服务名) multi: default: incloud-base-main: # 构建主服务的前提条件如下: - incloud-base-dependency-app - incloud-base-dependency-dict - incloud-base-dependency-dynamic - incloud-base-dependency-file - incloud-base-dependency-fine - incloud-base-dependency-mdm - incloud-base-dependency-model - incloud-base-dependency-msg - incloud-base-dependency-openapi - incloud-base-dependency-permission - incloud-base-dependency-security - incloud-base-dependency-task - incloud-base-dependency-help - incloud-go-starter incloud-base-gateway: # 构建网关服务的前提条件如下: - incloud-base-dependency-gateway incloud-base-wf: # 构建工作流服务的前提条件如下: - incloud-base-dependency-wf incloud-base-log: # 构建日志服务的前提条件如下: - incloud-base-dependency-log incloud-base-demo: incloud-base-admin: all: # 构建所有服务的前提条件如下: - incloud-pojo - incloud-starter-base-center - incloud-starter-base-oauth - incloud-starter-base-openapi - incloud-starter-base-permission - incloud-starter-base-security - incloud-starter-base-wf - incloud-starter-common-core - incloud-starter-common-db - incloud-starter-common-es - incloud-starter-common-log - incloud-starter-common-mq-rabbit - incloud-starter-common-mq-rocket - incloud-starter-common-task push: nexus: # 发布前是否先清除之前的,清除之前指的是相应模块的之前对应版本的SNAPSHOT版本,不是所有模块的所有版本 cleanPrevious: true #依赖包配置,这些配置列表如果发生提交后,会构建到nexus仓库中 dependency: - ${service.multi.default.incloud-base-main} - ${service.multi.default.incloud-base-gateway} - ${service.multi.default.incloud-base-wf} - ${service.multi.default.incloud-base-log} - ${service.multi.all} - incloud-go-starter #源码配置,这些配置列表如果发生提交后,会构建到nexus仓库中 sources: - incloud-pojo - incloud-base-dependency-mdm # 仓库信息 repository: #Nexus配置 nexus: repo: maven-netwisd-snapshot host: http://192.168.0.110:8081 username: admin password: Netwisd*8 # 镜像仓库 image: use: harbor harbor: repo: incloud5 host: https://dockerhub.kubekey.local username: admin password: Harbor12345 swr: repo: tongxun host: swr.heb-hbyt-1.global.hbyt.petrochina.com # K8S的配置 kubernetes: # 支持部署多命名空间 namespaces: - incloud5 configmap: incloud-config deploy: fileName: deployment.yaml # 快速构建开关,如果all为true,其他都不起作用了,其他都是单独控制 fastBuild: service: false dependency: false source: false all: false #如果all为true,其他都不起作用了

参数说明

service.use

single、multi-standard、multi-customized,支持这三种值,single为单模块模式,multi为多模块多目录模式,multi分两种:multi-standard、multi-customized

multi-standard多模块会按项目名称以“-”连接符递归做目录构建,如:incloud-biz-demo-test,那么你的项目目录结构为:/incloud/incloud-biz/incloud-biz-demo/incloud-biz-demo-test这种结构

multi-customized为自定义多目录结构,实现原理是根据相应的服务名遍历磁盘的目录,如果目录结构多,会有性能问题,请使用multi-standard模式; multi-customized需要保证填写的服务名跟实际项目的目录名一致,如incloud-product-test,对应这个模块目录也为如incloud-product-test,多目录层级不用写,会自动查询遍历

single模式一般情况下是指单模块时使用,一般使用微服务开发多模块业务系统时,不推荐使用这种方式,复用性太差;

    service.multi.default.name

    multi.default.xxx,xxx为服务名,服务名尽量与目录名保持一致,以免产生不必要的错误。

      service.multi.default.name.dependency

      multi.default.incloud-base-main.incloud-base-dependency-app,incloud-base-dependency-app为依赖的服务名, > **这里的依赖不是指java中的maven层面的依赖,是指构建层面的依赖,当前示例中指的是:incloud-base-main依赖于incloud-base-dependency-app服务的构建**, > 也就是说当incloud-base-dependency-app被构建时,incloud-base-main也会被构建

        service.multi.default.all

        指的是当这个配置下面的任意一个服务发生构建时,就会构建所有service.multi.default.name下面的服务。

          kubernetes.deploy.fileName

          指的是k8s的部署文件名称,一般为deployment.yaml,如果不是,需要修改此配置,这个配置的作用是指:如果需要特殊配置k8s部署的yaml文件的时,并且需要自己命名成自定义文件时,配置这个。

            fastBuild

            这个配置的主要作用是, 一般用于新项目初始化时,不想一个个模块构建,想快速构建所有时 ,就使用这个配置开关。

            service:代表构建所有service,即:service.multi.default.name所有的服务。

            dependency:代表构建所有dependency 即:service.multi.default.name.dependency所有依赖包。

            source:代表构建所有source,即:push.nexus.sources下的所有源码包。

            all:代表构建上面所有,all开启后,上面的开关都失效了,别外注意: 记得构建完成后再修改回来

              项目上简化配置

              因为在项目上使用时,没有像源码推送到nexus或那么多依赖构建需求,所以一般配置相对简单,示例如下:

              # ********************* # 构建服务的配置,此配置用于配置所有构建服务配置 # zouliming@netwisd.com # 2023.4.21 # ********************* logger: path: "/root/jm/incloud5-pm/log" # 日志文件路径。默认为空,表示关闭,仅输出到终端 file: "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log" prefix: "" # 日志内容输出前缀。默认为空 level: "info" # 日志输出级别 ctxKeys: [] # 自定义Context上下文变量名称,自动打印Context的变量到日志中。默认为空 header: true # 是否打印日志的头信息。默认true stdout: true # 日志是否同时输出到终端。默认true rotateSize: 0 # 按照日志文件大小对文件进行滚动切分。默认为0,表示关闭滚动切分特性 rotateExpire: 0 # 按照日志文件时间间隔对文件滚动切分。默认为0,表示关闭滚动切分特性 rotateBackupLimit: 0 # 按照切分的文件数量清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除 rotateBackupExpire: 0 # 按照切分的文件有效期清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除 rotateBackupCompress: 0 # 滚动切分文件的压缩比(0-9)。默认为0,表示不压缩 rotateCheckInterval: "1h" # 滚动切分的时间检测间隔,一般不需要设置。默认为1小时 stdoutColorDisabled: false # 关闭终端的颜色打印。默认开启 writerColorEnable: false # 日志文件是否带上颜色。默认false,表示不带颜色 # 构建服务的配置 service: version: "5.0.0-SNAPSHOT" #singLe为单模块模式,muti为多模块多目录模式,multi分两种: multi-standard、multi-customized #muLti-standard多模块会按项目名称以连接符递归做目构建结构 #如: incLoud-biz-demo-test,那么你的项目目录结构为:incloud/incloud-biz/ingloud-biz-demo/incloud-biz-demo-test这种 #multi-customized为自定义多目录结构,实现原理是根据相应的服务名遍历磁盘的目录,如果目录结构多,会有性能问题,请使用multi-standard模式; #multi-customized需要保证填写的服务名跟实际项目的目录名一致,如incLoud-product-test,对应这个模块目录也为如incloud-product-test,多目录层级不用写,会自动查询遍历 use: multi-standard single: # 当为multi时,此处为空或不要此标签,当为single时,此处为当前单服务的服务名(即:POM中定义的服务名) multi: default: - incloud-base-gateway - incloud-base-main - incloud-biz-pm - incloud-biz-cs # 仓库信息 repository: # 镜像仓库 image: use: harbor harbor: repo: incloud5 host: https://dockerhub.kubekey.local username: admin password: Harbor12345 swr: repo: tongxun host: swr.heb-hbyt-1.global.hbyt.petrochina.com # K8S的配置 kubernetes: # 支持部署多命名空间 namespaces: - incloud5-pm configmap: incloud-config deploy: fileName: deployment.yaml
              Last modified: 20 一月 2025