Linux/Server
[Jenkins] Clone / Checkout Timeout 에러 처리
Jenkins에서 Git plugin을 사용하여, github의 프로젝트를 clone / check 시 timeout 에러가 발생하는 경우가 있다. Pull Request를 가져와 Jenkins에서 파이프라인을 수행하려할 때 아래와 같이 에러가 발생한다면 설정을 추가해주면 된다. ... > /usr/bin/git checkout -f f4dkcjp123lkk3344.... # timeout=10 ERROR: Timeout after 10 minutes ... Timeout이 발생할 수 있는 부분은 크게 2부분이다. clone, checkout 동작 시 repository에서 clone하거나, branch로 checkout 시 큰 용량이라면 문제가 발생할 수 있다. clone Configure > Bran..
[Jenkins] Pipeline Syntax
이 글은 지속적으로 업데이트 중입니다. Syntax 구성 Agent Post Stages Steps Agent section Jenkins는 다양한 일을 처리해야 합니다. 이때 하나의 머신에서 하나의 Job만들 수행하게 되면, 여러 Job을 순차적으로 밖에 수행을 할 수 없습니다. Agent section은 여러 node를 두고 job을 처리할 수 있도록 합니다. 어떤 node가 어떤 일을할지, 새로운 node를 생성하거나, 또는 docker image를 이용할 수도 있습니다. Post section Post section은 stage가 완료된 이후 실행하는 것 입니다. 파이프라인 또는 스테이지의 실행이 완료되었을 때 실행됩니다. always, changed, fixed, regression, abort..
[Swagger / Fix] Swagger UI WhiteLabel error
문제 상황 Swagger 설정 중 아래와 같은 의존성으로 pom.xml로 설정을 하였습니다. io.springfox springfox-swagger2 3.0.0 io.springfox springfox-swagger-ui 3.0.0 Swagger 버전은 3.0.0으로 swagger2와 swagger-ui 의존성을 설정하였었습니다. 이 상태에서 실행 시 api-docs 는 잘 실행되었지만, swagger-ui는 실행이 정상적으로 되지 않고 WhiteLabel 문제가 발생함을 확인하였습니다. 해결 방법 먼저 위에서 정의했던 2개의 의존성을 삭제하였습니다. 삭제한 후 아래의 의존성을 추가하여 주었습니다. io.springfox springfox-boot-starter 3.0.0 그 이후 서버 재시작을 하고 h..
[Spring] REST API Version 관리
Versioning 버전관리라는 것은 단순하게 사용자에게 보여주는 항목을 관리하는 것이 아닌 REST API 설계가 변경되거나 또는 Application의 구조가 변경되었을 시에도 버전을 변경해야 할수도 있다. 또한 사용자들이 어떤 버전을 사용해야 할지 가이드를 해야할 수 도 있습니다. 또한 회사, 팀마다 어떻게 Version 관리를 하는 방식은 매우 다릅니다. REST API의 새로운 버전을 오픈, 배포해도 고객들은 기존의 주 버전을 계속 사용하기를 원할수도 있고 새로운 API Version을 사용하길 원할 수도 있습니다 REST API 에서 Version을 관리하는 4가지 방법에 대해 정리하고자 합니다. Versioning 방법 URI versioning Request Parameter version..
[Spring] Path variable ?
Path Variable API URL은 API이기 때문에, 정의가 되어있어야 합니다. 정의되지 않은 API로 요청이 오류는 당연히 발생할 것입니다. 이렇게 고정된 API만 사용하는 것이 아니라, URI에 가변적인 변수를 선언해서 사용할 수 있습니다. 이러한 가변변수를 Path Variable이라고 합니다. Path Variable을 사용하기 위하여, @GetMapping annotation에서 path 설정 시 {}을 이용합니다. 예를 들어 아래와 같이 처리합니다. @GetMapping(path = "/example/path-variable/{name}") public PathVariableExample(@PathVariable String name) { // Do something. }{name}은 ..
[Spring] Spring Boot의 작동원리? Dispatcher Servlet?
Spring Boot의 설정 Spring Boot 프로젝트를 사용해서 설정파일을 지정하기 위해서는 Java 클래스를 사용할 수 도 있지만, application.yml 또는 application.properties 를 많이 사용합니다. 특히 YAML이 설정 및 관리가 더 편리하기에 _application.yml_을 많이 사용합니다. application.properties 는 설정이름=값 형식을 사용하고, application.yml은 설정이름:값 형식을 사용합니다. 두 가지는 구분자가 = 와 : 로 다릅니다. 아래는 properties와 yml의 차이 예시입니다. // properties logging.level.org.springframework = debug // yml logging: level:..