Jenkins 콘솔에서 사람(User)
탭으로 들어가서 원하는 사용자를 선택한다.
나는 jenkins
라는 이름으로 사용자를 만들어서 사용하고 있기 때문에 jenkins
를 선택했고 from_lambda
라는 이름으로 API Token을 만들어 줬다. 발급된 Token
값을 잘 복사해 둬야한다.
(Token 값은 다음과 같은 형식이다 -> 119850715befb6a2ec9d4c43bba96a2633)
이제 Jenkins Job에서 빌드를 원격으로 유발
체크박스를 체크해주고 Token 이름
을 넣어준다.
원격으로 빌드가 잘 유발되는지 다음 cURL 명령으로 확인해보자.
curl -X post http://<Jenkins_User_Name>:<Jenkins_API_Token>@<Jenkins_URL>/job/<Job_Name>/build\?token\=<Token_Name>
<>
안에 값을 채워 넣으면 다음과 같다.
curl -X post http://jenkins:119850715befb6a2ec9d4c43bba96a2633@jenkins.aylee.com/job/remote-build-test/build\?token\=from_lambda
터미널에서 명령어를 실행하면 Jenkins Job이 잘 실행되는 것을 볼 수 있다.
cURL 명령어를 Python 코드로 나타내면 다음과 같이 작성할 수 있다.
import json
import requests
import os
Jenkins_User_Name = os.environ['JENKINS_USER_NAME']
Jenkins_API_Token = os.environ['JENKINS_API_TOKEN']
Jenkins_URL = os.environ['JENKINS_URL']
Job_Name = os.environ['JOB_NAME']
Token_Name = os.environ['TOKEN_NAME']
def lambda_handler(event, context):
URL = 'http://'+Jenkins_User_Name+':'+Jenkins_API_Token+'@'+Jenkins_URL+'/job/'+Job_Name+'/build'
response = requests.post(URL, params={'token': Token_Name})
return {
'statusCode': response.status_code,
}
Lambda에서 코드를 넣고 실행해보면 원격으로 Job이 빌드되는 것을 볼 수 있다.
다음 글에서는 Slack의 Slash Command
를 이용해서 이 글에서 만든 Lambda 함수를 Slack에서 바로 실행할 수 있도록 만들어 볼 것이다.
예를 들어
다음과 같은 Slash Command
를 이용해서 Jenkins Job을 원격으로 빌드할 수 있도록 세팅할 예정이다.