Spring BootアプリにGit情報を埋め込む

@tokuhiromさんのブログエントリーを読んで、maven-git-commit-id-pluginの存在を知りました。

[java] どのブランチから作られた jar かをわかりやすくしたい

 

@makingさんから、Spring Bootなら依存を足すだけで情報が取れるようになるよと教えて頂いたので早速試してみました。

 

pom.xmlはこんな感じ。
spring-boot-starter-actuatorとgit-commit-id-pluginを追加します。

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerArgument>-Xlint:unchecked</compilerArgument>
                    <encoding>${file.encoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${file.encoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

 

そして、 http://localhost:8080/info にリクエストを投げると、こんなレスポンスが返ってきます。

{
  git: {
    branch: "master",
    commit: {
      id: "a933699",
      time: "2015-02-06T02:39:50+0900"
    }
  }
}

サンプルソースは ここ に置いておきました。

 

ちなみに、僕はmaven-jar-pluginのmanifestEntries使ってJenkinsのJOB情報とGit情報をMANIFEST.MFに埋め込んでおいて、JSONで返すAPIを作ってます。

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        </manifest>
                        <manifestEntries>
                            <Application-Name>${project.build.finalName}</Application-Name>
                            <Application-Version>${project.version}</Application-Version>
                            <Iteration-Name>${iteration}</Iteration-Name>
                            <Build-Time>${buildNumber}</Build-Time>
                            <JenkinsBuildNumber>${BUILD_NUMBER}</JenkinsBuildNumber>
                            <JenkinsBuildId>${BUILD_ID}</JenkinsBuildId>
                            <JenkinsJobName>${JOB_NAME}</JenkinsJobName>
                            <JenkinsBuildTag>${BUILD_TAG}</JenkinsBuildTag>
                            <JenkinsExecutorNumber>${EXECUTOR_NUMBER}</JenkinsExecutorNumber>
                            <JenkinsNodeName>${NODE_NAME}</JenkinsNodeName>
                            <JenkinsJavaHome>${JAVA_HOME}</JenkinsJavaHome>
                            <JenkinsWorkspace>${WORKSPACE}</JenkinsWorkspace>
                            <JenkinsUrl>${JENKINS_URL}</JenkinsUrl>
                            <JenkinsGitCommit>${GIT_COMMIT}</JenkinsGitCommit>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
comments powered by Disqus