[Jenkins] HTTP Request 사용하기


업무에 있어서 많이 사용하고 있는 Tool중 하나인 Jenkins에서 HTTP Requset를 날리는 법을 작성하고자 한다.

curl을 사용해서 스크립트를 작성할 수도 있지만 뭔가 멋이 안난다.

Jenkins는 수많은 플러그인을 제공하고 있기에 이를 사용하면서 스크립트를 작성하고자 욕구가 있다…

간단하게 현재 사용하고 있는 방법에 대해서만 작성해야겠다.




def token = "sdtgagfr45!$ERET^&1f43q21@#"

def response = httpRequest quiet: true, \
                     contentType: 'APPLICATION_JSON', \
                     httpMode: 'GET', \
                     customHeaders: [[maskValue: true, name: "Authorization", value: "Bearer ${token}"]],  \
                     url: "https://example.com"

def response = httpRequest contentType: 'APPLICATION_JSON', \
                     httpMode: 'PATCH', \
                     customHeaders: [[maskValue: true, name: "Authorization", value: "Bearer ${token}"]], \
                     requestBody: '{"name": "test", "patch": "{\"spec\": {\"source\": { \"targetRevision\": \"master\" }}}" }}', \
                     url: "https://example.com"

def jsonBody = {"name": "test"}

def response = httpRequest quiet: true, \
                     contentType: 'APPLICATION_JSON', \
                     httpMode: 'PUT', \
                     customHeaders: [[maskValue: true, name: "Authorization", value: "Bearer ${token}"]], \
                     requestBody: jsonBody, \
                     url: "https://example.com"

def responseJson  = readJSON text: response.content

위의 3가지 response들은 각각의 예제들인데, 특정 헤더값을 넣고 싶거나 Body형태에 따라서 어떻게 넣는지를 볼 수 있을 것 같다.

옵션을 조금 살펴보자면

quiet는 http request를 날렸을 경우 나오는 값들을 콘솔에 출력안되게 하는 명령어이다.

contentType, httpMode는 보이는 그대로라 생략하고,

customHeaders에 인증과 관련된 값을 넘길 수 있고 maskValue 옵션을 통해 콘솔에서 해당 값을 가릴 수 있다.

requestBody와 url은 보이는 그대로지만 Body쪽에 쌍 따옴표 안에 쌍 따옴표는 \ 처리를 하거나 “”” 를 사용하여 body문을 작성할 수 있다.

마지막으로 나온 responseJson 변수는 response의 content값 즉, 리턴값을 JSON으로 처리하여 변수에 저장하는 것이다.



사실 이런 방법보다 curl을 사용한다면 더 간단하고 편하게 작성할 수도 있겠지만 Jenkins의 여러 플러그인들을 사용해본다는 점과

새로운 지식을 쌓아가는 그런 재미가 있기에 나는 이처럼 사용하는 것을 선호한다.

앞으로도 Jenkins에서 사용하고 있는 모듈 중, 사용법을 찾기 어려웠던 모듈들은 작성해서 기록하고자 한다.