いけむランド

はてダからやってきました

AWS CDK (Java) から生成する cfn テンプレートに git の情報を埋め込む

AWS CDK を触っているのですが、cfn テンプレートがパッと見でいつ生成されたものかわからないため、Java ソースコード内で git の情報を埋め込めないかなと思って、調べてみました。


gradle を使う場合は grgit を使えば良さそうなのですが、AWS CDK の CLIJava の場合は maven を前提としているため、grgit はここでは使えないことになります。


qiita.com


というわけで直接 jgit を使って、埋め込むことにしました。


www.eclipse.org


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"
}