CI+CD/Slack 연동

Jenkins + Slack 연동 - 3 (Slash commands/Ngrok/Python Flask)

salzzak 2024. 10. 22. 10:45
728x90

저번에는 Incoming Webhooks 을 활용해서 Slack에 메시지 발송하는 작업을 해봤고

이번에는 Slack 에서 / 명령어 입력하는 앱으로 설정해보려고 한다.

 

1. Slack api > Slash Commands > Create New command

 

2. Command, Short Description, Usage Hint 임의 입력

Request URL은 내가 만든 서버를 입력해야 하는데...

 

3. (일단) ngrok 를 이용해서 로컬 서버를 외부와 통신이 가능하게 만들어보자

 

https://ngrok.com/ 회원 가입 후 > Setup & Installation

 

순서대로 명령어 입력 시, (저는 8000 포트로 실행)

위과 같이 ngrok 가 실행이 되고 Forwarding URL을 통해 외부에서도 접근이 가능해진다.

 

4. Python Flask로 간단히 서버를 만들고 잘 동작되는지 확인 해보자

# qa_test.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World?'

@app.route('/makeorder')
def make_order():
    return 'make O_O rder bot'

if __name__ == '__main__':
    app.run('0.0.0.0', port=8000, debug=True)

 

python3 qa_test.py 로 서버 실행

 

우선 로컬에서 정상 동작되는지 확인

- localhost:8000 

- localhost:8000/makeorder

 

 

5. 3번에서 만든 ngrok 에서 할당받은 주소로 접근 시에도 서버 접근 잘되는지 확인

 

잘된다.

 

6. 2번에서 만든 slash command > Request URL 에 동일한 5번 URL 을 입력

 

7. Slack 에서 /makeorder_dev 를 호출

 

.. 하면 다음과 같이 에러가 발생되는데, 

 

 

8. Python 코드에 POST를 붙여주고 다시 확인해보자.

# qa_test.py

from flask import Flask
app = Flask(__name__)

@app.route('/', methods=['POST'])
def hello_world():
    return 'Hello World?'

@app.route('/makeorder', methods=['POST'])
def make_order():
    return 'make O_O rder bot'

if __name__ == '__main__':
    app.run('0.0.0.0', port=8000, debug=True)

 

9. Slack 에서 /makeorder_dev 를 호출

 

정상 동작 확인