oss-configlint

Configlint for config repo

License

License

Categories

Categories

config Application Layer Libs Configuration
GroupId

GroupId

cn.home1
ArtifactId

ArtifactId

oss-configlint
Last Version

Last Version

1.0.6.OSS
Release Date

Release Date

Type

Type

jar
Description

Description

oss-configlint
Configlint for config repo
Project URL

Project URL

https://github.com/home1-oss/oss-configlint
Source Code Management

Source Code Management

https://github.com/home1-oss/oss-configlint

Download oss-configlint

How to add to project

<!-- https://jarcasting.com/artifacts/cn.home1/oss-configlint/ -->
<dependency>
    <groupId>cn.home1</groupId>
    <artifactId>oss-configlint</artifactId>
    <version>1.0.6.OSS</version>
</dependency>
// https://jarcasting.com/artifacts/cn.home1/oss-configlint/
implementation 'cn.home1:oss-configlint:1.0.6.OSS'
// https://jarcasting.com/artifacts/cn.home1/oss-configlint/
implementation ("cn.home1:oss-configlint:1.0.6.OSS")
'cn.home1:oss-configlint:jar:1.0.6.OSS'
<dependency org="cn.home1" name="oss-configlint" rev="1.0.6.OSS">
  <artifact name="oss-configlint" type="jar" />
</dependency>
@Grapes(
@Grab(group='cn.home1', module='oss-configlint', version='1.0.6.OSS')
)
libraryDependencies += "cn.home1" % "oss-configlint" % "1.0.6.OSS"
[cn.home1/oss-configlint "1.0.6.OSS"]

Dependencies

compile (2)

Group / Artifact Type Version
org.springframework.boot : spring-boot-starter jar
org.springframework.boot : spring-boot-starter-log4j2 jar

Project Modules

There are no modules declared in this project.

简介

检查yml和properties配置文件的合法性。

  • 针对yml的检查,使用SpringBoot的PropertySourcesLoader,与configserver中检查yml的方式一致;
  • 对于properties文件,Spring使用的是jdk自带的Properties类进行加载。由于properties的格式非常宽松自由,这里只简单加入了key冲突检查。

使用

  • 编译
    mvn clean package
  • 使用示例
    java -jar oss-configlint-1.0.7.OSS-SNAPSHOT.jar $文件名列表

推荐使用方式

建议在所有config项目中配置gitpre-commit,在本地提交之前检查配置文件的合法性。

git的 pre-commit 配置

以 common-config 为例,配置步骤如下:

  • 在项目根目录加入编译之后的configlint的jar包。
    $ ls
    application.yml  README.md  oss-configlint-1.0.7.OSS-SNAPSHOT.jar
  • 配置gitpre-commit。在项目根目录,编辑 .git/hooks/pre-commit, 加入如下内容:
    java -jar oss-configlint-1.0.7.OSS-SNAPSHOT.jar application.yml

保存之后,给刚才的pre-commit文件加入可执行权限。chmod +x .git/hooks/pre-commit

  • 配置完成。

测试

  • 我们在application.yml中加入非法内容, 在同一段内key重复。
    spring:
      profiles: production.env

    spring:
      resources.cache-period: 86400
      freemarker.cache: true
  • git add添加文件之后,执行commit命令。如下所示,git提交失败,并将错误信息展示出来。
    $ git commit -m"modify application.yml"  

    文件校验错误:application.yml
    while parsing MappingNode
     in 'reader', line 77, column 1:
        spring:
        ^
    Duplicate key: spring
     in 'reader', line 91, column 1:
        ---
        ^

将git的pre-commit加入版本控制

默认的 git hooks 脚本在 .git/hooks 目录,该目录不在版本控制里。如果希望将pre-commit的脚本远程共享,有以下两种解决方案:

git version < 2.9

  • 对于低版本的git,可以将pre-commit放到项目目录,每次从远程下载下来项目时,建立从项目目录.git/hooks目录下的软链接。
  • 该方式使用不便,而且 windows 开发平台对软链接的支持很弱。

git version >= 2.9

  • 在项目目录下创建用于存放hook脚本的目录
  • 使用git config --local hooksPath ${myHooksPath},设置hooks脚本目录即可。

建议使用高版本的git。

cn.home1

home1-oss

Versions

Version
1.0.6.OSS