슬랙 알림 (사용 중단)

Tier: Free, Premium, Ultimate

Offering: GitLab.com, Self-managed, GitLab Dedicated

caution

이 기능은 사용 중단되었습니다 GitLab 15.9에서

18.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하세요.

이 변경은 중단 호환성 변경입니다.

슬랙 알림 통합을 통해 귀하의 GitLab 프로젝트는 이벤트(예: 이슈 생성)를 기존 슬랙 팀에 알림으로 보내는 기능을 제공합니다. 슬랙 알림 설정은 슬랙과 GitLab 모두에서 구성 변경이 필요합니다.

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

슬랙 구성

  1. 슬랙 팀에 로그인하고 새 수신 웹 훅 구성 시작.
  2. 기본적으로 알림이 전송될 슬랙 채널을 식별합니다.

    Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.

  3. 나중에 GitLab을 구성할 때 사용할 Webhook URL을 복사합니다.

GitLab 구성

  • GitLab 15.9에서 변경되어 각 이벤트당 슬랙 채널을 10개로 제한했습니다.
  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Integrations를 선택합니다.
  3. 슬랙 알림을 선택합니다.
  4. Enable integration 아래의 Active 체크박스를 선택합니다.
  5. Trigger 섹션에서 슬랙으로 알림으로 보낼 GitLab 이벤트 유형에 대한 체크박스를 선택합니다.

    전체 목록은 슬랙 알림에 대한 트리거를 참조하세요.

    기본적으로 메시지는 슬랙 구성 중에 구성한 채널로 전송됩니다.

  6. 선택 사항. 다른 채널, 여러 채널 또는 직접 메시지로 메시지를 보내려면:

    • 채널로 메시지를 보내려면, 슬랙 채널 이름을 입력하되, 쉼표로 구분합니다.
    • 직접 메시지를 보내려면, 사용자의 슬랙 프로필에서 찾은 사용자 ID를 사용합니다.
  7. Webhook슬랙 구성 단계에서 복사한 웹 훅 URL을 입력합니다.
  8. 선택 사항. Username에 알림을 보내는 슬랙 봇의 사용자 이름을 입력합니다.
  9. Notify only broken pipelines 체크박스를 선택하여 실패 시에만 알림을 받도록 합니다.
  10. Branches for which notifications are to be sent 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
  11. Labels to be notified 필드를 비워두면 모든 알림을 받으며,

    알림을 트리거하기 위해 이슈 또는 병합 요청이 가져야 하는 레이블을 추가합니다.

  12. 선택 사항. Test settings를 선택합니다.
  13. 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 새롭고 고유한 취약점이 기록되었습니다.

그룹 멘션에 대한 알림 트리거

그룹 멘션에 대한 알림 이벤트를 트리거하려면 다음에서 @<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 보안 인증서는 항상 신뢰되어야 합니다.

이 문제의 원인이 무엇인지 보려면:

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

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

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