AWS CDK を触っているのですが、cfn テンプレートがパッと見でいつ生成されたものかわからないため、Java ソースコード内で git の情報を埋め込めないかなと思って、調べてみました。
gradle を使う場合は grgit を使えば良さそうなのですが、AWS CDK の CLI は Java の場合は maven を前提としているため、grgit はここでは使えないことになります。
というわけで直接 jgit を使って、埋め込むことにしました。
Git git = new Git(FileRepositoryBuilder.create(new File(System.getProperty("user.dir"), ".git"))); String templateVersion = git.describe().call() + (git.status().call().isClean() ? "" : "+dirty"); CfnOutput cfnTemplateVersion = CfnOutput.Builder.create(this, "TemplateVersion") .value(templateVersion) .description("Template Version") .build();
これをコンパイルして、テンプレートを生成すると、Outputs に git の情報が埋め込まれていることを確認できました。
$ cat cdk.out/xxxx.template.json | jq .Outputs.TemplateVersion { "Description": "Template Version", "Value": "v1.2.0-1-g89a5385+dirty" }