Slack 알림 (더 이상 사용되지 않음)
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다.
이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하세요. 이 변경은 호환성을 중단하는 변경입니다.
Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다. Slack 알림을 설정하려면 Slack과 GitLab 모두에 대한 구성 변경이 필요합니다.
Slack 구성#
- Slack 팀에 로그인하고 새 Incoming WebHooks 구성 시작.
- 기본적으로 알림을 보낼 Slack 채널을 식별합니다. Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.
- 나중에 GitLab을 구성할 때 사용하기 위해 Webhook URL을 복사합니다.
GitLab 구성#
히스토리
- GitLab 15.9에서 Slack 채널을 이벤트당 10개로 제한하도록 변경됨.
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 설정 > 통합을 선택합니다.
- Slack 알림을 선택합니다.
- 통합 활성화 아래에서 활성 체크박스를 선택합니다.
- 트리거 섹션에서 Slack에 알림으로 보낼 각 GitLab 이벤트 유형의 체크박스를 선택합니다. 전체 목록은 Slack 알림 트리거를 참조하세요. 기본적으로 메시지는 Slack 구성 중에 구성한 채널로 전송됩니다.
- 선택 사항. 다른 채널, 여러 채널로 메시지를 보내거나 다이렉트 메시지로 보내려면:
- 채널로 메시지를 보내려면, 쉼표로 구분된 Slack 채널 이름을 입력합니다.
- 다이렉트 메시지를 보내려면, 사용자의 Slack 프로필에 있는 멤버 ID를 사용합니다.
- Webhook에 Slack 구성 단계에서 복사한 webhook URL을 입력합니다.
- 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
- 실패 시에만 알림을 받으려면 파이프라인 실패 시에만 알림 체크박스를 선택합니다.
- ref에 대한 파이프라인 상태가 변경될 때만 알림을 보내려면 상태 변경 시에만 알림 체크박스를 선택합니다.
- 알림을 보낼 브랜치 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
- 모든 알림을 받으려면 알림을 보낼 레이블 필드를 비워 두거나, 알림을 트리거하기 위해 이슈 또는 머지 리퀘스트에 있어야 하는 레이블을 추가합니다.
- 선택 사항. 설정 테스트를 선택합니다.
- 변경 사항 저장을 선택합니다.
이제 Slack 팀이 구성된 대로 GitLab 이벤트 알림을 받기 시작합니다.
Slack 알림 트리거#
다음 트리거를 Slack 알림에 사용할 수 있습니다:
| 트리거 이름 | 트리거 이벤트 |
|---|---|
| Push | 리포지터리에 push. |
| 이슈 | 작업 항목이 생성, 닫히거나 다시 열림. |
| 인시던트 | 인시던트가 생성, 닫히거나 다시 열림. |
| 기밀 이슈 | 기밀 작업 항목이 생성, 닫히거나 다시 열림. |
| 머지 리퀘스트 | 머지 리퀘스트가 생성, 머지, 승인, 닫히거나 다시 열림. |
| 노트 | 댓글이 추가됨. |
| 기밀 노트 | 내부 노트 또는 기밀 작업 항목에 댓글이 추가됨. |
| 태그 push | 새 태그가 리포지터리에 push되거나 제거됨. |
| 파이프라인 | 파이프라인 상태 변경. |
| 위키 페이지 | 위키 페이지가 생성되거나 업데이트됨. |
| 배포 | 배포가 시작되거나 완료됨. |
| 알림 | 새로운 고유 알림이 기록됨. |
| 그룹 멘션 (공개) | 공개 컨텍스트에서 그룹이 멘션됨. |
| 그룹 멘션 (비공개) | 기밀 컨텍스트에서 그룹이 멘션됨. |
| 취약점 | 새로운 고유 취약점이 기록됨. |
그룹 멘션 알림 트리거#
히스토리
그룹 멘션에 대한 알림 이벤트를 트리거하려면 다음에서 @<group_name>을 사용합니다:
- 이슈 및 머지 리퀘스트 설명
- 이슈, 머지 리퀘스트 및 커밋의 댓글
알림은 직접 그룹 멤버 모두가 멘션이 이루어진 리소스(예: 머지 리퀘스트)를 볼 수 있는 권한이 있을 때만 트리거됩니다. 이벤트당 최대 3개 그룹에만 알림이 전송됩니다.
문제 해결#
Slack 통합이 작동하지 않는 경우 Sidekiq 로그에서 Slack 서비스와 관련된 오류를 검색하여 문제 해결을 시작합니다.
오류: Something went wrong on our end#
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://'));0 # 을 실제 GitLab URL로 교체 result = Net::HTTP.get(URI('https://'));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
