Jenkins의 기능은 무궁무진한것 같다. 아직 빙산의 일각밖에 모른다는 생각도 든다. 이번에 포스팅할 내용은 Jenkins에서 제공하는 REST API를 사용해 Jenkins의 Job을 생성, 실행, 삭제, 결과조회 등을 해보는 것이다. Jenkins의 Job을 외부에서 실행시키는건 어떤 경우가 있을까? 정말 다양한 용도로 활용할 수 있겠지만 필자의 경우는 기존에 web에서 ondemand 형식으로도 동작하던 batch를 Jenkins에서 관리하게 되었고 이를 Jenkins의 REST API를 통해서 호출을 하는것이 목적이다. Jenkins에서의 설정 API 통신을 하기 위한 Token 발행 Jenkins 메뉴 > 사람 > token 발행할 user 명 > 설정 설정에 들어가면 API Token 설정을..
Jenkins에서 빌드한 산출물에 대해 Tagging을 하기 위해 Git Publisher를 사용한다. 하지만 Tagging을 할때 아래와 같은 오류가 발생하며 Jenkins Job이 실패를 했다. using credential gitlab_build > git tag -l BUILD_STG_3 # timeout=10 > git tag -a -f -m BUILD_STG_3 BUILD_STG_3 # timeout=10 Pushing tag BUILD_STG_3 to repo origin > git --version # timeout=10 using GIT_ASKPASS to set credentials gitlab_build > git push http://gitlab.oingdaddy.com/sample..
Jenkins의 다양한 기능중 이번에는 Slack과 연동해서 배포 실패 시 또는 배치 수행중 문제가 생겼을 경우 알림을 보내주는 기능에 대해 알아보겠다. 내가 직접 Jenkins에서 빌드 버튼을 눌러서 실패를 하는 경우에는 바로 인지가 가능하고 조치를 하겠지만 스케쥴링 되어있는 Job을 수행중에 문제가 생긴 경우에는 이런 알림 기능이 필요하다. 가장 보편적으로 알려진 Jenkins의 알림은 Email이 있고 요즘에는 Slack을 통한 알림도 많이 사용하는 추세다. Jenkins와 Slack을 연동하려면 물론 두곳 모두에서 설정이 필요하며 설정이 어렵지는 않다. 하나씩 살펴보자. ◈ Slack 에서의 설정 일단 Slack에서는 어떤 설정이 필요한지 알아보자. ▶ 채널 생성 Jenkins Job 수행결과를 ..
gitlab에 새로운 프로젝트를 push를 하는데 에러가 난다. RFC failed; 413 Request Entity Too Large 위에는 Request Entity Too Large 라는 오류가 나타나지는 않지만 이 push 를 이클립스에서 해보면 이 메세지도 같이 출력이 된다. 어디에서 해도 413 에러가 나오며 안된다. 413 에러에 대해 찾아보니 다음과 같았다. "Content-Length"요청 헤더 필드에 지정된 클라이언트 요청 본문의 최대 허용 크기를 설정합니다. 요청의 크기가 구성된 값을 초과하면 413 (Request Entity Too Large) 오류가 클라이언트에 반환됩니다. 원인 nginx의 reverse proxy의 client_max_body_size가 너무 작게 잡혀 있어..
지난 시간에 아래와 같은 과정을 거치면서 Custom Ruleset을 만들었다. Sonarqube Custom Rule 6.7 to 8.5 migration 기존에 Sonarqube 6.7에서 사용하던 Java Custom Ruleset이 있었다. 그런데 Sonarqube를 8.5 version으로 올리면서 기존의 Custom Rule + Sonarqube 8.5에 추가된 Sonay way를 선별해서 반영해야 한다. 결론부터.. oingdaddy.tistory.com Sonarqube Custom Ruleset 정의의 기준 (with 행자부 보안취약점 대응, OWASP top 10 2020) 현 Sonarqube 버전에 맞는 Ruleset을 재정의를 하라는 작업을 받았다. 전에 작성했던 글과 연장선상에 ..
SonarLint를 설치했다면 SonarLint에서 제공하는 기본 Ruleset만 사용이 가능하다. 개인적으로 사용하며 조금 더 나은 품질을 추구한다면 이렇게 사용해도 되지만 엔터프라이즈 환경에서는 이정도 Ruleset으로는 어림없다. 조금 더 강력한 Ruleset을 가지고 있는 또 재정의가 가능한 Sonarqube Ruleset과 연동이 되어야 한다. 그래서 기존에 설치해놓은 SonarLint와 Sonarqube를 연동해보자. 필자의 Sonarqube 버전은 6.7이고 연동을 위한 최소한의 버전은 6.7 이다. SonarLint Sonarqube 연동 SonarLint 설치가 잘 되었다면 Show View에서 SonarLint Bindings를 볼 수 있다. 창을 열어보자. SonarLint Bingi..
Sonarqube Custom Ruleset 파일을 정의하고 드디어 적용을 하려는 순간이다. 하지만 Restore를 하고 나서 한참을 기다려봐도 아래와 같은 메세지가 상단에 나타나며 적용이 되지 않는다. 분석중이라는데 생각보다 시간이 너무 오래 걸린다. 뭔가 문제가 있는것 같다. 이럴 경우에는 상단의 Administration > Projects > Background Tasks 로 들어가본다. 그럼 Pending 인 프로젝트가 있을수도 있을수도 있다. 이거는 오래걸리는 작업때문에 작업이 지연되고 있는 작업이다. 즉 이 Pending 프로젝트가 원인이 아니라 아래에 In Progress인 작업이 문제인것이다. 이 작업을 종료시켜줘야한다. 하지만 종료를 시킬수 있는 방법은 없다. Sonarqube 재시작을..
현 Sonarqube 버전에 맞는 Ruleset을 재정의를 하라는 작업을 받았다. 전에 작성했던 글과 연장선상에 있는 글이다. 새로 나온 수많은 Sonar way를 다 사용할수는 없다. 이중에서 골라서 사용을 해야 한다. 하지만 무슨 근거로 골라야하나? QA 활동을 해본적이 없는데 난감한 상황이었다. 그냥 내가 위험할것 같으면 적용을 하고 아닌거 같으면 빼야 하나? 아니다.. 정답?은 있었다. 바로 행자부(행정안전부)에서 보안취약점 대응표, OWASP 10을 기준으로 Ruleset을 정하면 된다. SonarQube 행자부 보안취약점 대응표 FB: FindBugs FSB: FindSecurityBugs SQ: SonarQube 자체 지원 No. 행자부 SW 보안약점 FB FSB PMD SQ 1 입력데이터 ..