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 프로필에서 찾은 회원 ID를 사용합니다.
- 웹훅에는 Slack 구성 중에 복사한 웹훅 URL을 입력합니다.
- 선택 사항. 사용자 이름에는 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
- 파이프라인이 실패할 때만 알림 보내기 확인란을 선택하여 실패 시에만 알림을 받습니다.
- 알림을 보낼 브랜치 드롭다운 디렉터리에서 알림을 보낼 브랜치 유형을 선택합니다.
- 모든 알림 받기 위해 알림을 받을 레이블 필드를 비워두거나 이슈 또는 Merge Request이 알림을 트리거하려면 가져야 하는 레이블을 추가합니다.
- 선택 사항. 설정 테스트를 선택합니다.
- 변경사항 저장을 선택합니다.
이제 Slack 팀이 구성한대로 GitLab 이벤트 알림을 받기 시작합니다.
Slack 알림 트리거
다음 트리거가 Slack 알림을 위해 사용 가능합니다:
트리거 이름 | 트리거 이벤트 |
---|---|
Push | 리포지터리로 푸시 |
Issue | 이슈가 생성되거나 닫히거나 다시 열림 |
Incident | 사건이 생성되거나 닫히거나 다시 열림 |
Confidential issue | 기밀 이슈가 생성되거나 닫히거나 다시 열림 |
Merge request | Merge Request이 생성되거나 Merge되었거나 닫히거나 다시 열림 |
Note | 댓글이 추가됨 |
Confidential note | 기밀 문제의 내부 노트 또는 댓글이 추가됨 |
Tag push | 새로운 태그가 리포지터리로 푸시되었거나 제거됨 |
Pipeline | 파이프라인 상태가 변경됨 |
Wiki page | 위키 페이지가 생성되거나 업데이트됨 |
Deployment | 배포가 시작되거나 완료됨 |
Alert | 새로운 고유한 경고가 기록됨 |
그룹 멘션 in public | 그룹이 공개 컨텍스트에서 언급됨 |
그룹 멘션 in private | 그룹이 비밀 컨텍스트에서 언급됨 |
취약점 | 새로운 고유한 취약점이 기록됨 |
그룹 언급의 알림 트리거
- GitLab 16.4에서 도입
그룹 언급의 알림 이벤트를 트리거하려면 다음 위치에서 @<group_name>
을 사용하십시오:
- 이슈 및 Merge Request 설명
- 이슈, Merge Request 및 커밋에 대한 댓글
문제 해결
Slack 통합이 작동하지 않는 경우 Sidekiq 로그를 검색하여 문제를 해결하세요.
우리 쪽에서 문제가 발생했습니다
GitLab UI에서이 일반적인 오류 메시지를 받을 수 있습니다. 문제 해결을 계속하기 위해 로그를 검토하여 오류 메시지를 찾으세요.
‘certificate verify failed’
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 신뢰할 수있는 인증서에 인증서를 추가합니다.
GitLab이 Slack에 대한 연결을 신뢰하지 않는 경우, GitLab OpenSSL 신뢰 리포지터리가 잘못된 것입니다. 전형적인 원인은 다음과 같습니다:
-
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