8. Integrating with Actuator

8.1. Generating Build Information

스프링 부트 액추에이터(Actuator)의 info 엔드포인트는 META-INF/build-info.properties 파일이 있는 빌드에 대한 정보를 자동으로 게시한다. 이 파일을 생성하기 위해 BuildInfo 태스크가 제공된다. 태스크를 사용하는 가장 쉬운 방법은 플러그인의 DSL을 이용하는 것이다:

Groovy

  springBoot {
    buildInfo()
  }

Kotlin

  springBoot {
    buildInfo()
  }

이것은 bootBuildInfo라는 이름의 BuildInfo 태스크를 구성하고, 존재하는 경우 Java 플러그인의 classes 태스크가 이에 의존하도록 한다. 태스크의 대상 디렉토리는 기본 소스 세트 리소스(일반적으로 build/resources/main)의 출력 디렉토리에 있는 META-INF이다.

기본적으로, 생성된 빌드 정보는 프로젝트에서 파생된다.

프로퍼티기본 값
build.artifactbootJar 또는 bootWar 작업의 기본 이름
build.group프로젝트 그룹
build.name프로젝트 이름
build.version프로젝트 버전
build.time프로젝트 빌드 시간

프로퍼티스는 DSL을 사용하여 사용자 지정할 수 있다:

Groovy

  springBoot {
    buildInfo {
      properties {
        artifact = 'example-app'
        version = '1.2.3'
        group = 'com.example'
        name = 'Example application'
      } 
    }
  }

Kotlin

  springBoot {
    buildInfo {
      properties {
        artifact = "example-app"
        version = "1.2.3"
        group = "com.example"
        name = "Example application"
      } 
    }
  }

생성된 빌드 정보에서 기본 프로퍼티를 생략하려면, 해당 값을 null로 설정한다.

build.time의 기본값은 프로젝트가 빌드되는 순간이다. 이것의 부작용(side-effect)은 태스크가 항상 최신 상태가 아니라는 것이다. 결과적으로, 프로젝트 테스트를 포함하여 더 많은 태스크를 실행해야 하므로 빌드 시간이 더 오래 걸린다. 또 다른 부작용은 작업의 출력이 항상 변경되므로 빌드를 실제로 반복할 수 없다는 것이다. build.time 프로퍼티의 정확도보다 빌드 성능이나 반복성을 중요하게 생각하는 경우, timenull 또는 고정 값으로 설정하자.

추가 프로퍼티를 빌드 정보에 추가할 수도 있다:

Groovy

  springBoot {
    buildInfo {
      properties {
        additional = [
          'a': 'alpha',
          'b': 'bravo'
        ]
      } 
    }
  }

Kotlin

  springBoot {
    buildInfo {
      properties {
        additional = mapOf(
          "a" to "alpha",
          "b" to "bravo"
        )
      }
    }
  }