본문 바로가기

CI+CD10

Jenkins + Slack 연동 - 5 (dialog 띄우기 + Interactivity & Shortcuts 설정) 챗지피티가 짜준 dialog 띄우기 코드를 복붙해서 실행 시켜 보았다. @app.route('/dialog', methods=['POST', 'GET'])def dialog(): trigger_id = request.form.get('trigger_id') # 슬래시 명령어의 트리거 ID user_id = request.form.get('user_id') # 슬랙 사용자 ID tmp_str = "ok to be seen" # 모달을 열기 위한 페이로드 생성 dialog_payload = { "trigger_id": trigger_id, "view": { "type": "modal", "callback_id": .. 2024. 11. 29.
Jenkins + Slack 연동 - 4 (parameter 받기 + jenkins job 원격빌드) 우선 다음과 같이 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(.. 2024. 11. 28.
Jenkins + Slack 연동 - 3 (Slash commands/Ngrok/Python Flask) 저번에는 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을 통해 외부에서.. 2024. 10. 22.
Jenkins 활용 - 5 (Grafana / InfluxDB 연동) Grafana 공식 홈페이지 설명을 따라가면서 설치https://grafana.com/docs/grafana/latest/setup-grafana/installation/mac/ Install Grafana on macOS | Grafana documentationEnterprise Open source Install Grafana on macOS You can use Grafana Cloud to avoid installing, maintaining, and scaling your own instance of Grafana. Create a free account to get started, which includes free forever access to 10k metrics, 50GB logs, .. 2024. 10. 6.
Jenkins 활용 - 4 (Prometheus 연동) 저번에 Api 활용을 통해서 Jenkins 데이터 값을 가져오긴 했지만, 이를 하나하나 맞춰보면서 그래프를 만들기는 너무 어려워보였다. 그래서 많이들 쓰고 있다는 Jenkins - Prometheus - Grafana 조합을 만들어보기로... https://medium.com/musinsa-tech/sre-fe8c7edfb772 늘어나는 개발 프로젝트, 빌드환경 모니터링을 어떻게 할까?Prometheus와 Grafana를 활용한 Jenkins 모니터링 및 Alarm 구현medium.com를 따라하면서 작성  1. Jenkins 관리 > plugins > Prometheus metrics  Jenkins 재시작 후, 2. curl http://localhost:8080/prometheus/ 명령어 입력 시.. 2024. 10. 6.
Jenkins 활용 - 3 (젠킨스 Api로 데이터 불러오기 + CORS 에러 해결) - jenkins api 토큰 발급http:///crumbIssuer/api/json - 원격빌드http:///job/build - Jenkins 대시보드http:///api/json - 특정 Jobhttp:///job/api/json - 특정 buildhttp:///job///api/json - 특정 build Reporthttp:///job///testReport/api/json  특정 build Report API 호출 시, Json 포맷으로 결과값 노출된다.Visualize 탭에서는 아래와 같이 결과값 표기된다.  위와 같이 원격 + Postman 으로 API 발송시에는 정상 요청 / 응답 동작된다. 이어서 웹페이지를 만들고 버튼을 눌러서 요청을 하도록 구현해보면... API.. 2024. 10. 2.
Jenkins 활용 - 1 (Publish JUnit test result report) 빌드 구성 > 빌드 후 조치 추가 > Publish JUnit test result report Test report XMLs 영역에 임의 xml 파일 입력 시,  'result_xml.xml' doesn't match anything 해당 에러가 노출된다. 다음과 같이 해결했다. 1. 베이스 경로에 result_xml.xml 파일을 만든 후,  git Push2. job run 해서 서버 경로에 result_xml.xml 파일 생기도록 동기화   pytest 에서 제공하는 --junit-xml 명령어를 다음과 같이 Execute shell > Command 에 입력해주자.(이 과정이 필수인지는 잘 모르겠다.)  이후 Job build 시, 다음과 같이 기록된다. 2024. 9. 30.
Jenkins 활용 - 2 (jenkins API 토큰 생성 / Crumb 토큰 생성 / Build) 우선 Jenkins에 job 은 생성해둔 상태 이를 API 요청으로 제어해보려고 한다. (원격 빌드 / 실행 결과 받아오기... 등) 1. Jenkins API 토큰 생성Jenkins 관리 > Users > 사용자 > 설정 > API Token > Add new Token > 토큰명 입력 후 Generate 토큰 값을 복사해두어야 한다.  2. Jenkins Crumb(토큰) 요청Postman > New > HTTP  - GET > http://{jenkins 주소}/crumbIssuer/api/json - Authourization > Basic Auth > 사용자 + 복사한 토큰 값 입력 후, Send 버튼 클릭 시 토큰이 발급된다.  3. 특정 Job 빌드 API 요청Postman > New > H.. 2024. 9. 4.
Jenkins + Slack 연동 - 1 (Jenkins CI 통합 앱 연동) 1. {워크스페이스}.slack.com/apps 진입 > Jenkins 검색 2. Jenkins CI Slack 에 추가 > 원하는 채널 선택 > Jenkins CI 통합 앱 추가 3. 통합 설정 내 토큰 복사 4. Manage Jenkins > System  5. Slack 설정 영역 > Workspace / Default channel 입력 후 [+ Add] 6. Screat text 선택 > Secret 영역 내 "Bot User OAuth Token" 붙여넣기 > Add 7. Test Connection 선택 > Default channel 에 테스트 슬랙이 온다. > System 저장 8. jenkins job 진입 > 구성 > Slack Notifications 선택 후... 9.  Job 실.. 2024. 7. 14.
Jenkins + Slack 연동 - 2 (Incoming Webhooks) https://api.slack.com/ Slack은 생산성 플랫폼입니다Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.slack.com 1. 위 사이트 진입 > Your apps > Create New app 선택  2. "From an app manifest" 선택 > Workspace 선택 display_information: name: {원하는 이름}features: bot_user: display_name: {원하는 이름} always_online: trueoauth_config: scopes: bot: - channels:read - chat:write - chat:write.cus.. 2024. 7. 14.