Jenkins의 기능은 무궁무진한것 같다. 아직 빙산의 일각밖에 모른다는 생각도 든다. 이번에 포스팅할 내용은 Jenkins에서 제공하는 REST API를 사용해 Jenkins의 Job을 생성, 실행, 삭제, 결과조회 등을 해보는 것이다. Jenkins의 Job을 외부에서 실행시키는건 어떤 경우가 있을까? 정말 다양한 용도로 활용할 수 있겠지만 필자의 경우는 기존에 web에서 ondemand 형식으로도 동작하던 batch를 Jenkins에서 관리하게 되었고 이를 Jenkins의 REST API를 통해서 호출을 하는것이 목적이다. Jenkins에서의 설정 API 통신을 하기 위한 Token 발행 Jenkins 메뉴 > 사람 > token 발행할 user 명 > 설정 설정에 들어가면 API Token 설정을..
JWT payload (claims, body) 부 암호화 및 복호화 방법 JWT를 사용하는것 자체가 암호화된 json 문자열로 전송을 하는건데 무슨 암호화 및 복호화를 또 하느냐!? 암호화가 된다 하더라도 jwt.io 에서 알고리즘만 알고 있다면 다시 복호화된 값으로 볼수 oingdaddy.tistory.com 위에 나온것처럼 AES를 사용해서 암호화를 했는데 Invalid AES key length 오류가 발생하는 경우가 있다. 이것은 정말 명확한 오류 메세지이다. 글자수가 잘못되었다는 것이다. AES 암호화를 하는데 사용되는 Key는 16, 24, 32 byte 여야 한다. public class Aes256Util { final static String secretKey = "oingisprett..
Spring을 사용하면서 외부 설정 파일(properties or yml)은 필수적으로 사용된다. 하지만 이를 읽어오지 못하는 문제는 자주 직면하게 된다. 예를 들면 다음과 같은 오류다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'apiService': Unsatisfied dependency expressed through field 'jwtUtil'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtUtil': Injecti..
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..
JWT를 사용하는것 자체가 암호화된 json 문자열로 전송을 하는건데 무슨 암호화 및 복호화를 또 하느냐!? 암호화가 된다 하더라도 jwt.io 에서 알고리즘만 알고 있다면 다시 복호화된 값으로 볼수 있다. 그래서 보통 JWT로 통신을 할때는 payload에 중요한 정보를 넣지 않는것이 권장이 된다. userId, expireTime 등등의 정보만 보통은 가지고 있다. 하지만 중요한 정보를 payload에 넣어야 될수도 있고 userId도 노출이 되면 안되는 경우도 있다. 이럴 경우에는 payload 부분을 암호화를 해줘야 한다. 서로 통신을 하는 것이므로 단방향 암호화는 사용할 수 없고 양방향 암호화를 사용해야 한다. 양방향 암호화의 대표적인 알고리즘은 AES(Advanced Encryption Sta..
Jenkins의 다양한 기능중 이번에는 Slack과 연동해서 배포 실패 시 또는 배치 수행중 문제가 생겼을 경우 알림을 보내주는 기능에 대해 알아보겠다. 내가 직접 Jenkins에서 빌드 버튼을 눌러서 실패를 하는 경우에는 바로 인지가 가능하고 조치를 하겠지만 스케쥴링 되어있는 Job을 수행중에 문제가 생긴 경우에는 이런 알림 기능이 필요하다. 가장 보편적으로 알려진 Jenkins의 알림은 Email이 있고 요즘에는 Slack을 통한 알림도 많이 사용하는 추세다. Jenkins와 Slack을 연동하려면 물론 두곳 모두에서 설정이 필요하며 설정이 어렵지는 않다. 하나씩 살펴보자. ◈ Slack 에서의 설정 일단 Slack에서는 어떤 설정이 필요한지 알아보자. ▶ 채널 생성 Jenkins Job 수행결과를 ..
기업에서 slack을 사용하는곳이 점차 늘고 있다. 사용을 해보니 장점은 별도의 프로그램을 설치하지 않고 web에서 바로 실행시킬수도 있고 여기에서 채팅을 할때 사진이나 엑셀의 표, 파일등 여러가지 형태의 컨텐츠를 자유롭게 주고받을수도 있다. webhook 같은 기능도 자유롭게 사용할 수 있어서 모니터링 시스템이나 배치 수행시 오류보고를 noti로 즉각 받아볼 수 있다. 또한 모바일에서는 앱을 설치하면 자동으로 연동이 된다. 이러한 많은 장점을 가지고 있는 slack을 어떻게 사용하는지 workspace부터 만들면서 알아보자. ◈ workspace 생성방법 새 HQ에 오신 것을 환영합니다. Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slac..
spring 프로젝트에서 springboot 프로젝트로 migration 하기 (6) - XML config to JAVA config spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml spring 프로젝트에서 springboot 프로젝트로 migration 하기 (2) - web.xml spring 프로젝트에서 springboot 프로젝트로 migration 하기.. oingdaddy.tistory.com 지난번에 이 글을 쓰면서 Spring의 전반적인 설정을 Xml Config에서 Java Config로 변환을 했었다. 다 쓰고 나서 혼자서만 '이렇게 하면 짠! 하고 변환이 됩니다.' 라고 글을 쓴것 같아 내심 찜찜했다. 사실 나도 급할때는 이런 ..