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. 웹훅에는 Slack 구성 중에 복사한 웹훅 URL을 입력합니다.
  8. 선택 사항. 사용자 이름에는 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 파이프라인이 실패할 때만 알림 보내기 확인란을 선택하여 실패 시에만 알림을 받습니다.
  10. 알림을 보낼 브랜치 드롭다운 디렉터리에서 알림을 보낼 브랜치 유형을 선택합니다.
  11. 모든 알림 받기 위해 알림을 받을 레이블 필드를 비워두거나 이슈 또는 Merge Request이 알림을 트리거하려면 가져야 하는 레이블을 추가합니다.
  12. 선택 사항. 설정 테스트를 선택합니다.
  13. 변경사항 저장을 선택합니다.

이제 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 그룹이 비밀 컨텍스트에서 언급됨
취약점 새로운 고유한 취약점이 기록됨

그룹 언급의 알림 트리거

그룹 언급의 알림 이벤트를 트리거하려면 다음 위치에서 @<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 보안 인증서가 항상 신뢰되어야 하므로 상대적으로 가능성이 낮습니다.

이러한 문제가 문제의 원인인지 확인하려면:

  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 통합이 활성화 된 모든 프로젝트의 알림을 비활성화하려면, 레일스 콘솔 세션 시작 및 다음과 유사한 스크립트를 사용하세요:

caution
데이터를 변경하는 명령은 올바르게 실행되지 않거나 올바른 조건에서 실행되지 않으면 손상을 초래할 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 준비가 된 백업 인스턴스가 있어야합니다.:
# 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