Slack 알림 (사용 중지됨)

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
caution
이 기능은 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 프로필에서 찾을 수 있는 회원 ID를 사용합니다.
  7. 웹훅에는 나중에 복사한 웹훅 URL을 입력합니다.
  8. 선택 사항. 사용자 이름에는 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 삭제된 파이프라인에만 알림 보내기 확인란을 선택하여 실패 시에만 알림을 보냅니다.
  10. 알림을 보낼 브랜치 유형을 선택하는 알림을 보낼 브랜치 드롭다운 목록에서 원하는 브랜치 유형을 선택합니다.
  11. 알림을 받을 레이블 필드를 빈 채로 두거나 이슈 또는 병합 요청이 트리거될 레이블을 추가합니다.
  12. 선택 사항. 설정 테스트를 선택합니다.
  13. 변경 사항 저장을 선택합니다.

이제 당신의 Slack 팀은 구성대로 GitLab 이벤트 알림을 받게 됩니다.

Slack 알림을 위한 트리거

다음 트리거는 Slack 알림을 위해 사용할 수 있습니다:

트리거 이름 트리거 이벤트
Push 저장소로 push.
이슈 이슈가 생성되거나 닫혔거나 다시 열렸음.
사고 사고가 생성되거나 닫혔거나 다시 열렸음.
기밀 이슈 기밀 이슈가 생성되거나 닫혔거나 다시 열렸음.
병합 요청 병합 요청이 생성되거나 병합되거나 닫혔거나 다시 열렸음.
메모 댓글이 추가됨.
기밀 메모 기밀 이슈에 대한 내부 메모나 댓글이 추가됨.
태그 push 새로운 태그가 저장소에 push되거나 삭제됨.
파이프라인 파이프라인 상태가 변경됨.
위키 페이지 위키 페이지가 생성되거나 업데이트됨.
배포 배포가 시작되거나 완료됨.
경고 새로운 고유 경고가 기록됨.
공용 그룹 언급 중 그룹 언급 그룹이 공개적인 문맥에서 언급됨.
비공개 그룹 언급 중 그룹 언급 그룹이 비공개적인 문맥에서 언급됨.
취약점 새로운 고유 취약점이 기록됨.

그룹 언급을 위한 트리거 알림

  • GitLab 16.4에서 도입되었습니다.

그룹 언급에 대한 알림 이벤트를 트리거하기 위해 다음 위치에 @<group_name>을 사용하세요:

  • 이슈 및 병합 요청 설명
  • 이슈, 병합 요청, 커밋에 대한 댓글

문제 해결

Slack 통합이 작동하지 않는 경우, 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 보안 인증서가 항상 신뢰되어야 하므로 후자보다는 덜 발생합니다.

다음 중 어떤 문제 때문에 발생하는지 확인하려면:

  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 신뢰 인증서에 인증서를 추가하세요.

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