본문 바로가기
Spring

배포된 애플리케이션 git branch/commit 정보 바로 확인하기

by ybs 2021. 12. 19.
반응형

먼저 build.gradle 에 플러그인을 추가한다. 이 플러그인은 git branch/commit 정보를 git.properties 파일로 만들어 준다.

plugins {
	id "com.gorylenko.gradle-git-properties" version "2.2.3"
}

 

추가적으로 customProperty 도 넣을 수 있다. 더 자세한 내용은 여기에 있다.

gitProperties {
	customProperty 'ybs.hello', 'world'
	customProperty "project_version", { project.version }
}

 

컨트롤러에서는 아래와 같이 @Value 애노테이션으로 프로퍼티 git.properties 값을 가져올 수 있다.

@SpringBootApplication
@PropertySource(value = "classpath:/git.properties", ignoreResourceNotFound = true)
public class FixtureToyApplication {

	public static void main(String[] args) {
		SpringApplication.run(FixtureToyApplication.class, args);
	}

	@RestController
	@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
	public static class FixtureToyApplicationController {
		private final String commitId;
		private final String gitBranch;
		private final String commitMessage;
		private final String hello;
		private final String projectVersion;

		public FixtureToyApplicationController(
			@Value("${git.commit.id:unset}") String commitId,
			@Value("${git.branch:unset}") String gitBranch,
			@Value("${git.commit.message.full:unset}") String commitMessage,
			@Value("${ybs.hello:unset}") String hello,
			@Value("${project_version:unset}") String projectVersion
		) {
			this.commitId = commitId;
			this.gitBranch = gitBranch;
			this.commitMessage = commitMessage;
			this.hello = hello;
			this.projectVersion = projectVersion;
		}

		@GetMapping("/")
		public Map<String, Object> home() {
			return Map.of(
				"commitId", this.commitId,
				"gitBranch", this.gitBranch,
				"commitMessage", this.commitMessage,
				"hello", this.hello,
				"projectVersion", this.projectVersion
			);
		}
	}
}

 

애플리케이션을 띄우고 /(root) 를 실행시키면 아래와 같이 나온다.

{
  "commitId": "ba5ba2284414ccd9d2e95cd841858811cdc823e4",
  "hello": "world",
  "gitBranch": "master",
  "projectVersion": "0.0.1-SNAPSHOT",
  "commitMessage": "first commit\n"
}

 

반응형

'Spring' 카테고리의 다른 글

ObjectMapper  (0) 2022.01.15
kafka transaction(exactly once semantic)  (0) 2022.01.09
WebClient 사용할때 주의 (6편)  (0) 2021.12.15
application warm up  (2) 2021.12.05
json error stack trace print 여부 커스텀 프로퍼티  (0) 2021.11.22