슬랙 알림 (사용 중단)
Offering: GitLab.com, Self-managed, GitLab Dedicated
이 기능은 사용 중단되었습니다 GitLab 15.9에서
18.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하세요.
이 변경은 중단 호환성 변경입니다.
슬랙 알림 통합을 통해 귀하의 GitLab 프로젝트는 이벤트(예: 이슈 생성)를 기존 슬랙 팀에 알림으로 보내는 기능을 제공합니다. 슬랙 알림 설정은 슬랙과 GitLab 모두에서 구성 변경이 필요합니다.
또한 슬랙 슬래시 명령어를 사용하여 슬랙에서 GitLab을 제어할 수 있습니다. 슬래시 명령어는 별도로 구성됩니다.
슬랙 구성
- 슬랙 팀에 로그인하고 새 수신 웹 훅 구성 시작.
-
기본적으로 알림이 전송될 슬랙 채널을 식별합니다.
Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.
- 나중에 GitLab을 구성할 때 사용할 Webhook URL을 복사합니다.
GitLab 구성
- GitLab 15.9에서 변경되어 각 이벤트당 슬랙 채널을 10개로 제한했습니다.
- 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Settings > Integrations를 선택합니다.
- 슬랙 알림을 선택합니다.
- Enable integration 아래의 Active 체크박스를 선택합니다.
-
Trigger 섹션에서 슬랙으로 알림으로 보낼 GitLab 이벤트 유형에 대한 체크박스를 선택합니다.
전체 목록은 슬랙 알림에 대한 트리거를 참조하세요.
기본적으로 메시지는 슬랙 구성 중에 구성한 채널로 전송됩니다.
-
선택 사항. 다른 채널, 여러 채널 또는 직접 메시지로 메시지를 보내려면:
- 채널로 메시지를 보내려면, 슬랙 채널 이름을 입력하되, 쉼표로 구분합니다.
- 직접 메시지를 보내려면, 사용자의 슬랙 프로필에서 찾은 사용자 ID를 사용합니다.
- Webhook에 슬랙 구성 단계에서 복사한 웹 훅 URL을 입력합니다.
- 선택 사항. Username에 알림을 보내는 슬랙 봇의 사용자 이름을 입력합니다.
- Notify only broken pipelines 체크박스를 선택하여 실패 시에만 알림을 받도록 합니다.
- Branches for which notifications are to be sent 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
-
Labels to be notified 필드를 비워두면 모든 알림을 받으며,
알림을 트리거하기 위해 이슈 또는 병합 요청이 가져야 하는 레이블을 추가합니다.
- 선택 사항. Test settings를 선택합니다.
- Save changes를 선택합니다.
이제 귀하의 슬랙 팀은 구성한 대로 GitLab 이벤트 알림을 받기 시작합니다.
슬랙 알림을 위한 트리거
슬랙 알림에 사용할 수 있는 트리거는 다음과 같습니다:
Trigger name | Trigger event |
---|---|
Push | 저장소에 푸시가 발생했습니다. |
Issue | 이슈가 생성, 종료 또는 재개되었습니다. |
Incident | 사고가 생성, 종료 또는 재개되었습니다. |
Confidential issue | 비공개 이슈가 생성, 종료 또는 재개되었습니다. |
Merge request | 병합 요청이 생성, 병합, 종료 또는 재개되었습니다. |
Note | 댓글이 추가되었습니다. |
Confidential note | 비공식 이슈에 대한 내부 메모 또는 댓글이 추가되었습니다. |
Tag push | 새로운 태그가 저장소에 푸시되거나 제거되었습니다. |
Pipeline | 파이프라인 상태가 변경되었습니다. |
Wiki page | 위키 페이지가 생성되거나 업데이트되었습니다. |
Deployment | 배포가 시작되거나 종료되었습니다. |
Alert | 새롭고 고유한 경고가 기록되었습니다. |
Group mention in public | 공개 맥락에서 그룹이 언급되었습니다. |
Group mention in private | 비공식 맥락에서 그룹이 언급되었습니다. |
Vulnerability | 새롭고 고유한 취약점이 기록되었습니다. |
그룹 멘션에 대한 알림 트리거
- GitLab 16.4에 도입됨 Introduced
그룹 멘션에 대한 알림 이벤트를 트리거하려면 다음에서 @<group_name>
을 사용하세요:
- 이슈 및 병합 요청 설명
- 이슈, 병합 요청 및 커밋에 대한 댓글
문제 해결
Slack 통합이 작동하지 않는 경우, 사이드키크 로그에서 Slack 서비스와 관련된 오류를 검색하여 문제 해결을 시작하세요.
오류: 우리 쪽에서 문제가 발생했습니다
GitLab UI에서 이 일반적인 오류 메시지가 표시될 수 있습니다.
로그를 검토하여 오류 메시지를 찾고 거기서부터 문제 해결을 계속하세요.
오류: certificate verify failed
다음과 같은 항목이 사이드키크 로그에 나타날 수 있습니다:
2019-01-10_13:22:08.42572 2019-01-10T13:22:08.425Z 6877 TID-abcdefg Integrations::ExecuteWorker JID-3bade5fb3dd47a85db6d78c5 ERROR: {:class=>"Integrations::ExecuteWorker :integration_class=>"SlackService", :message=>"SSL_connect returned=1 errno=0 state=error: certificate verify failed"}
이 문제는 GitLab이 Slack과 통신하거나 GitLab이 자체적으로 통신하는 데 문제가 있을 때 발생합니다.
전자는 발생할 가능성이 낮으며, Slack 보안 인증서는 항상 신뢰되어야 합니다.
이 문제의 원인이 무엇인지 보려면:
-
Rails 콘솔을 시작합니다:
sudo gitlab-rails console -e production # 소스 설치용: bundle exec rails console -e production
-
다음 명령을 실행합니다:
# <SLACK URL>을 실제 Slack URL로 교체 result = Net::HTTP.get(URI('https://<SLACK URL>'));0 # <GITLAB URL>을 실제 GitLab URL로 교체 result = Net::HTTP.get(URI('https://<GITLAB URL>'));0
GitLab이 자체 HTTPS 연결을 신뢰하지 않는 경우, GitLab 신뢰할 수 있는 인증서에 인증서를 추가하세요.
GitLab이 Slack과의 연결을 신뢰하지 않는 경우, GitLab OpenSSL 신뢰 저장소가 잘못되었습니다. 일반적인 원인은 다음과 같습니다:
-
gitlab_rails['env'] = {"SSL_CERT_FILE" => "/path/to/file.pem"}
로 신뢰 저장소를 재정의하는 것. - 기본 CA 번들
/opt/gitlab/embedded/ssl/certs/cacert.pem
을 실수로 수정하는 것.
Slack 알림 통합 비활성화를 위한 일괄 업데이트
Slack 통합이 활성화된 모든 프로젝트에 대한 알림을 비활성화하려면, Rails 콘솔 세션 시작하고 다음과 유사한 스크립트를 사용하세요:
경고: 데이터를 변경하는 명령은 올바르게 실행되지 않거나 올바른 조건에서 실행되지 않으면 손상을 초래할 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 백업 인스턴스를 준비하여 복원할 준비를 하세요.
# Slack 알림이 활성화된 모든 프로젝트 가져오기
p = Project.find_by_sql("SELECT p.id FROM projects p LEFT JOIN integrations s ON p.id = s.project_id WHERE s.type_new = 'Integrations::Slack' AND s.active = true")
# 찾은 각 프로젝트에서 통합 비활성화.
p.each do |project|
project.slack_integration.update!(:active, false)
end