Restdocs로 문서를 만들고 베타 배포를 했는데, 배포만 하면 귀신같이 아래와 같은 에러가 문서를 뒤덮었다.
Unresolved directive in test.adoc - include::{snippets}/api-controller-rest-docs-test/test_채널_변경_불가/response-fields.adoc[]
...
실제론 jenkins/~~ 로 시작하는 경로를 못 찾는다고 나와 있었다. local에서는 html문서도 잘 만들고 api 스펙도 잘 나왔는데 배포만 하면 안 나오니 삽질 시간이 길어졌다.
결국 답답해서 에러가 난 경로를 뚫어지게 쳐다보다가 그 원인을 파악할 수 있었다.
내가 만든 테스트 메소드 명은 아래와 같은 형태였다.
void TEST_채널_변경_불가() {
...
}
그리고 asciidoctor를 실행하면 아래와 같은 build.gradle 설정에 의해
ext {
snippetsDir = file("$buildDir/generated-snippets")
}
generated-snippets 폴더 아래에 generated-snippets/테스트 클래스명/테스트 메소드명/adoc 파일
형태로 빌드가 되는데 이때 테스트 메소드 명이 전부 소문자로 변환돼서 폴더 생성이 되었다. 실제 테스트 메소드 명은 전부 대문자이다.
- 실제 테스트 메소드 명: TEST_채널_변경_불가
- 빌드된 폴더명: test_채널_변경_불가
아래와 같이 빌드됐다.
generated-snippets/api-controller-rest-docs-test/response-fields.adoc[]
그래서 테스트 메소드 명을 그냥 전부 한글로 바꿔주니깐 베타 배포 시에도 문서가 잘 나왔다.
그런데 의문인 점은 몇 가지 있다.
- 로컬에서도 폴더명이 소문자로 바뀌는데 문서가 잘나왔다.
- 그런데도 2번 연속 재배포했음에도 Unresolved directive ~ 에러가 나왔다.
- 2번 연속 재배포했음에도 Last Updated 시간이 바뀌지 않았었다.
결론적으론 그냥 테스트 명을 바꿈으로써 문서가 update 되고 에러가 해결됐을수도 있다. 다음에 확인해보자.
따라서 로컬에서는 문서가 잘 보이는데 배포 시엔 문서가 보이지 않는다면 다음부턴 아래와 같은 절차를 수행해보자.
- 문서 맨 아래에 Version Last updated 시간이 변경이 반영된 시간인지 확인하자.
- 몇 번을 재배포해도 문서가 update 되지 않는다면 테스트 명을 바꿔보자.
- 그래도 안 되면 혹시 테스트 명에 영어를 대문자로 쓰진 않았나 확인해보자.
'Spring' 카테고리의 다른 글
@OneToOne은 LazyLoading이 안되는데 @OneToMany는 왜 될까 (1) | 2022.05.09 |
---|---|
STS Maven java.lang.ClassNotFoundException (0) | 2021.03.17 |
Objects.isNull과 Validation (0) | 2020.11.20 |
HttpMessageNotReadableException, LocalDateTime (3) | 2020.11.18 |
DDD에서는 왜 간접 참조를 더 권장할까? (0) | 2020.10.10 |