[Jenkins] 원격으로 빌드 유발 (Trigger builds remotely) with AWS Lambda (Python)

이아영·2021년 3월 25일
0

Jenkins

목록 보기
1/4

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을 원격으로 빌드할 수 있도록 세팅할 예정이다.

0개의 댓글