エキサイト株式会社メディア事業部エンジニアの佐々木です。前回アプリケーションの情報をSpringBootアプリケーションに組み込みましたが、これに追加でGitの情報を組み込んでみます。
前提
JDK Version
openjdk 17.0.1 2021-10-19 LTS OpenJDK Runtime Environment Corretto-17.0.1.12.1 (build 17.0.1+12-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.1.12.1 (build 17.0.1+12-LTS, mixed mode, sharing)
Gradle Version
------------------------------------------------------------ Gradle 7.5 ------------------------------------------------------------ Build time: 2022-07-14 12:48:15 UTC Revision: c7db7b958189ad2b0c1472b6fe663e6d654a5103 Kotlin: 1.6.21 Groovy: 3.0.10 Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021 JVM: 17.0.1 (Amazon.com Inc. 17.0.1+12-LTS) OS: Mac OS X 11.5.2 x86_64
設定
Gitで取得できる情報を出力するために、GradleのPluginを追加する。
plugins { .... id "com.gorylenko.gradle-git-properties" version "2.4.1" .... } springBoot { buildInfo() }
タスクの実行
下記、タスクを実行します。
./gradlew generateGitProperties
実行すると、下記ファイルが生成されます。
./build/resources/main/git.properties git.branch=feature/sample-template git.build.host=xxxx.mac git.build.user.email=xxxxx@zzzz.jp git.build.user.name=xxxxxxx git.build.version=0.0.1-SNAPSHOT git.closest.tag.commit.count= git.closest.tag.name= git.commit.id=703e0101046cbaea76c2ecdd188cf9adf5a1f6c6 git.commit.id.abbrev=703e010 git.commit.id.describe= git.commit.message.full=gitignore\u8FFD\u52A0.\n git.commit.message.short=gitignore\u8FFD\u52A0. git.commit.time=2022-09-19T21\:34\:51+0900 git.commit.user.email=xxxxx@zzzz.jp git.commit.user.name=xxxxx git.dirty=true git.remote.origin.url=xxxxxx git.tags= git.total.commit.count=10
結構データがとれますね。
アプリケーションから使えるようにする
アプリケーションから使えるようにするには、SpringのDIコンテナに登録する必要があります。
設定
application.ymlに先程の build/resources/main/git.properties
を読み込ませる設定を記述します。
spring: config: import: - 'classpath:git.properties'
DIコンテナへの登録
DIコンテナへの登録を行います。
@ConstructorBinding @RequiredArgsConstructor @ConfigurationProperties(prefix = "git.commit") @Getter public class GitInfoCommitProperty { private final String id; }
今回は、コミットIDのみをDIコンテナに登録します。
REST APIで応答する
登録したものをREST APIを通して出力してみます。 下記コードをControllerに記述します。
@RestController @RequestMapping @RequiredArgsConstructor public class RootController { private final GitInfoCommitProperty gitInfoCommitProperty; @GetMapping("git") public Object git(){ return gitInfoCommitProperty; } }
$ curl localhost:8080/git | jq { "id": "703e0101046cbaea76c2ecdd188cf9adf5a1f6c6" }
まとめ
SpringBootにGradleのプラグインを追加することで、アプリケーションからGitの情報を取得できるようになりました。静的コンテンツのキャッシュ回避のパラメータとかで使えそうです。
最後に
エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。
カジュアル面談はこちらになります! meety.net
募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com