본문 바로가기
CI+CD/Slack 연동

Jenkins + Slack 연동 - 4 (parameter 받기 + jenkins job 원격빌드)

by salzzak 2024. 11. 28.
728x90

 

우선 다음과 같이 Slash Commands가 설정되어 있는 상태

 

 

Slash command > Request url > ngrok 화면과 코드 내 정보를 request url 에 넣어준다.

 

Request URL에는 실행되고 있는 ngrok url + 코드 내 @app.route 다음 텍스트를 입력해 준다

 

https://{ngrok_number}.ngrok-free.app/unittest

 

 

다음과 같이 뒤에 파라미터가 붙는 경우,

 

다음과 같은 코드를 통해 파라미터를 받아올 수 있다. request.form.get('text')

 

@app.route('/unittest', methods=['POST', 'GET'])
def unit_test():
    command_text = request.form.get('text')
    return make_response(f'{command_text} + {url} > OK', response.status_code)

 

 

받아온 데이터를 다시 명령어로 출력하는 모습

 

 

이를 이용해 파라미터에 따라 다른 젠킨스 job 빌드를 실행할 수 있다.

@app.route('/ordercancle', methods=['POST', 'GET'])
def driver_order_cancle():
    command_text = request.form.get('text')

    client = command_text.split(" ")[0]
    c_value = command_text.split(" ")[1]

    if client == "차주" :
        url = f"http://10.75.142.35:8080/job/driverOrderCancel/buildWithParameters?driverId={c_value}"
    else :
        url = f"http://10.75.142.35:8080/job/ownerOrderCancel/buildWithParameters?ownerId={c_value}"


    headers = {
        "Jenkins-Crumb": "{jenkins-crumb}"
    }

    # Basic Auth를 위한 사용자명과 비밀번호 입력
    username = "{username}"
    password = "{password}"

    response = requests.post(url, headers=headers, auth=HTTPBasicAuth(username, password))

    if response.status_code == 201:
        print("Job triggered successfully!")
    else:
        print(f"Failed to trigger job. Status code: {response.status_code}")
    
    return make_response(f'{command_text} + {url} > OK', response.status_code)

 

 

+ jenkins 파라미터와 함께 빌드 api 요청

http://{jenkins_url}:8080/job/driverOrderCancel/buildWithParameters?driverId={c_value}

 

댓글