Slack 알림 (사용 중단됨)

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

경고: 이 기능은 GitLab 15.9에서 사용이 중단되었으며, 18.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하십시오. 이 변경 사항은 파괴적인 변경 사항입니다.

Slack 알림 통합을 사용하면 GitLab 프로젝트가 이벤트(예: 이슈 생성)를 기존 Slack 팀으로 알림으로 보낼 수 있습니다. Slack 알림 설정에는 Slack 및 GitLab의 구성 변경이 필요합니다.

또한 Slack 슬래시 명령을 사용하여 Slack에서 GitLab을 제어할 수도 있습니다. 슬래시 명령은 별도로 구성됩니다.

Slack 구성

  1. Slack 팀에 로그인하고 새로운 인커밍 웹훅 구성을 시작합니다.
  2. 기본적으로 알림을 전송해야 하는 Slack 채널을 식별합니다. 설정을 추가하려면 인커밍 웹훅 통합 추가를 선택합니다.
  3. 사용자가 나중에 GitLab을 구성할 때 사용할 웹훅 URL을 복사합니다.

GitLab 구성

  • GitLab 15.9에서 Slack 채널을 이벤트당 10개로 제한하는 변경되었습니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 통합을 선택합니다.
  3. Slack 알림을 선택합니다.
  4. 통합 활성화란에서 활성 확인란을 선택합니다.
  5. 트리거 섹션에서 각 유형의 GitLab 이벤트마다 Slack으로 알림을 보낼 확인란을 선택합니다. 전체 목록은 Slack 알림을 위한 트리거를 참조하십시오. 기본적으로 메시지는 Slack 구성 중에 구성한 채널로 전송됩니다.
  6. 선택 사항. 다른 채널, 여러 채널 또는 다이렉트 메시지로 메시지를 보내려면:
    • 채널로 메시지 보내기를 위해 쉼표로 구분된 Slack 채널 이름을 입력합니다.
    • 다이렉트 메시지 보내기는 사용자의 Slack 프로필에서 찾을 수있는 Member ID를 사용합니다.
  7. 웹훅에는 Slack 구성 단계에서 복사한 웹훅 URL을 입력합니다.
  8. 선택 사항. 사용자 이름에 메시지를 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 오직 실패한 파이프라인에 대해서만 알림을 보내려면 파이프라인이 실패했을 때만 알림하기 확인란을 선택합니다.
  10. 알림을 보낼 브랜치 유형을 선택하려면 알림을 받을 브랜치 드롭다운 목록을 선택합니다.
  11. 알림을 받기 위해 라벨 필드를 비워두거나, 이슈 또는 병합 요청이 알림을 트리거하려면 해당 라벨을 추가합니다.
  12. 선택 사항. 설정 테스트를 선택합니다.
  13. 변경 사항 저장을 선택합니다.

이제 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 보안 인증서가 항상 신뢰할 수 있기 때문에 덜 발생합니다.

이 문제의 원인을 확인하려면 다음을 수행합니다:

  1. Rails 콘솔을 시작합니다:

    sudo gitlab-rails console -e production
    
    # 소스 설치의 경우:
    bundle exec rails console -e production
    
  2. 다음 명령을 실행합니다:

    # 실제 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