Slack 알림 (사용 중단됨)
경고: 이 기능은 GitLab 15.9에서 사용이 중단되었으며, 18.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하십시오. 이 변경 사항은 파괴적인 변경 사항입니다.
Slack 알림 통합을 사용하면 GitLab 프로젝트가 이벤트(예: 이슈 생성)를 기존 Slack 팀으로 알림으로 보낼 수 있습니다. Slack 알림 설정에는 Slack 및 GitLab의 구성 변경이 필요합니다.
또한 Slack 슬래시 명령을 사용하여 Slack에서 GitLab을 제어할 수도 있습니다. 슬래시 명령은 별도로 구성됩니다.
Slack 구성
- Slack 팀에 로그인하고 새로운 인커밍 웹훅 구성을 시작합니다.
- 기본적으로 알림을 전송해야 하는 Slack 채널을 식별합니다. 설정을 추가하려면 인커밍 웹훅 통합 추가를 선택합니다.
- 사용자가 나중에 GitLab을 구성할 때 사용할 웹훅 URL을 복사합니다.
GitLab 구성
- GitLab 15.9에서 Slack 채널을 이벤트당 10개로 제한하는 변경되었습니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 통합을 선택합니다.
- Slack 알림을 선택합니다.
- 통합 활성화란에서 활성 확인란을 선택합니다.
- 트리거 섹션에서 각 유형의 GitLab 이벤트마다 Slack으로 알림을 보낼 확인란을 선택합니다. 전체 목록은 Slack 알림을 위한 트리거를 참조하십시오. 기본적으로 메시지는 Slack 구성 중에 구성한 채널로 전송됩니다.
- 선택 사항. 다른 채널, 여러 채널 또는 다이렉트 메시지로 메시지를 보내려면:
- 채널로 메시지 보내기를 위해 쉼표로 구분된 Slack 채널 이름을 입력합니다.
- 다이렉트 메시지 보내기는 사용자의 Slack 프로필에서 찾을 수있는 Member ID를 사용합니다.
- 웹훅에는 Slack 구성 단계에서 복사한 웹훅 URL을 입력합니다.
- 선택 사항. 사용자 이름에 메시지를 보내는 Slack 봇의 사용자 이름을 입력합니다.
- 오직 실패한 파이프라인에 대해서만 알림을 보내려면 파이프라인이 실패했을 때만 알림하기 확인란을 선택합니다.
- 알림을 보낼 브랜치 유형을 선택하려면 알림을 받을 브랜치 드롭다운 목록을 선택합니다.
- 알림을 받기 위해 라벨 필드를 비워두거나, 이슈 또는 병합 요청이 알림을 트리거하려면 해당 라벨을 추가합니다.
- 선택 사항. 설정 테스트를 선택합니다.
- 변경 사항 저장을 선택합니다.
이제 Slack 팀은 구성대로 GitLab 이벤트 알림을 받기 시작합니다.
Slack 알림을 위한 트리거
다음 트리거가 Slack 알림을 위해 사용할 수 있습니다:
트리거 이름 | 트리거 이벤트 |
---|---|
Push | 저장소에 푸시됩니다. |
Issue | 이슈가 생성되거나 닫힙니다. |
Incident | 사고가 생성 또는 닫힙니다. |
Confidential issue | 비밀 이슈가 생성되거나 닫힙니다. |
Merge request | 병합 요청이 생성되거나 병합되거나 닫힙니다. |
Note | 코멘트가 추가되었습니다. |
Confidential note | 비밀 이슈에 대한 내부 코멘트가 추가되었습니다. |
Tag push | 새 태그가 저장소에 푸시되었거나 제거되었습니다. |
Pipeline | 파이프라인 상태가 변경되었습니다. |
Wiki page | 위키 페이지가 생성되거나 업데이트되었습니다. |
Deployment | 배포가 시작되거나 종료되었습니다. |
Alert | 새로운, 고유한 경보가 기록되었습니다. |
공개 그룹에서들림 | 공개 컨텍스트에서 그룹이 언급되었습니다. |
비공개 그룹에서들림 | 비밀 컨텍스트에서 그룹이 언급되었습니다. |
취약점 | 새로운, 고유한 취약점이 기록되었습니다. |
그룹 언급을 위한 알림 트리거
- GitLab 16.4에서 도입되었습니다.
그룹 언급을 위한 알림 이벤트를 트리거하려면 다음을 사용하십시오:
- 이슈 및 병합 요청 설명
- 이슈, 병합 요청 및 커밋에 대한 코멘트
문제 해결
Slack 통합이 작동하지 않는 경우, 먼저 Sidekiq 로그를 검색하여 문제를 해결합니다.
오류: ‘우리 쪽에서 문제가 발생했습니다’
GitLab UI에서이 일반적인 오류 메시지를 받을 수 있습니다. 오류 메시지를 찾으려면 로그를 확인한 다음 거기에서 문제를 해결하십시오.
오류: ‘인증서 확인 실패’
Sidekiq 로그에 다음과 유사한 항목을 볼 수 있습니다:
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로 대체합니다. result = Net::HTTP.get(URI('https://<SLACK URL>'));0 # 실제 GitLab URL로 대체합니다. result = Net::HTTP.get(URI('https://<GITLAB URL>'));0
GitLab이 자체에 HTTPS 연결을 신뢰하지 않는 경우, GitLab 신뢰 인증서를 추가하십시오.
Slack에 대한 GitLab의 신뢰 인증서를 추가하는 경우, 일반적인 원인은 다음과 같습니다:
-
gitlab_rails['env'] = {"SSL_CERT_FILE" => "/path/to/file.pem"}
를 사용하여 신뢰 저장소를 재정의합니다. - 기본 CA 번들
/opt/gitlab/embedded/ssl/certs/cacert.pem
을 실수로 수정합니다.
Slack 알림 통합 비활성화를 위한 대량 업데이트
Slack 통합이 활성화된 모든 프로젝트의 알림을 비활성화하려면, 레일즈 콘솔 세션을 시작하고 다음과 유사한 스크립트를 사용하세요:
경고: 데이터를 변경하는 명령은 올바르지 않게 실행되거나 올바른 조건 하에서 실행되지 않을 경우 피해를 줄 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 백업 인스턴스를 준비하세요.
# 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