InfoGrab Docs

Slack 알림 (더 이상 사용되지 않음)

요약

이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다.

Warning

이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하세요. 이 변경은 호환성을 중단하는 변경입니다.

Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다. Slack 알림을 설정하려면 Slack과 GitLab 모두에 대한 구성 변경이 필요합니다.

Slack 구성#

  1. Slack 팀에 로그인하고 새 Incoming WebHooks 구성 시작.
  2. 기본적으로 알림을 보낼 Slack 채널을 식별합니다. Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.
  3. 나중에 GitLab을 구성할 때 사용하기 위해 Webhook URL을 복사합니다.

GitLab 구성#

히스토리
  • GitLab 15.9에서 Slack 채널을 이벤트당 10개로 제한하도록 변경됨.
  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 설정 > 통합을 선택합니다.
  3. Slack 알림을 선택합니다.
  4. 통합 활성화 아래에서 활성 체크박스를 선택합니다.
  5. 트리거 섹션에서 Slack에 알림으로 보낼 각 GitLab 이벤트 유형의 체크박스를 선택합니다. 전체 목록은 Slack 알림 트리거를 참조하세요. 기본적으로 메시지는 Slack 구성 중에 구성한 채널로 전송됩니다.
  6. 선택 사항. 다른 채널, 여러 채널로 메시지를 보내거나 다이렉트 메시지로 보내려면:
    • 채널로 메시지를 보내려면, 쉼표로 구분된 Slack 채널 이름을 입력합니다.
    • 다이렉트 메시지를 보내려면, 사용자의 Slack 프로필에 있는 멤버 ID를 사용합니다.
  7. WebhookSlack 구성 단계에서 복사한 webhook URL을 입력합니다.
  8. 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 실패 시에만 알림을 받으려면 파이프라인 실패 시에만 알림 체크박스를 선택합니다.
  10. ref에 대한 파이프라인 상태가 변경될 때만 알림을 보내려면 상태 변경 시에만 알림 체크박스를 선택합니다.
  11. 알림을 보낼 브랜치 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
  12. 모든 알림을 받으려면 알림을 보낼 레이블 필드를 비워 두거나, 알림을 트리거하기 위해 이슈 또는 머지 리퀘스트에 있어야 하는 레이블을 추가합니다.
  13. 선택 사항. 설정 테스트를 선택합니다.
  14. 변경 사항 저장을 선택합니다.

이제 Slack 팀이 구성된 대로 GitLab 이벤트 알림을 받기 시작합니다.

Slack 알림 트리거#

다음 트리거를 Slack 알림에 사용할 수 있습니다:

트리거 이름 트리거 이벤트
Push 리포지터리에 push.
이슈 작업 항목이 생성, 닫히거나 다시 열림.
인시던트 인시던트가 생성, 닫히거나 다시 열림.
기밀 이슈 기밀 작업 항목이 생성, 닫히거나 다시 열림.
머지 리퀘스트 머지 리퀘스트가 생성, 머지, 승인, 닫히거나 다시 열림.
노트 댓글이 추가됨.
기밀 노트 내부 노트 또는 기밀 작업 항목에 댓글이 추가됨.
태그 push 새 태그가 리포지터리에 push되거나 제거됨.
파이프라인 파이프라인 상태 변경.
위키 페이지 위키 페이지가 생성되거나 업데이트됨.
배포 배포가 시작되거나 완료됨.
알림 새로운 고유 알림이 기록됨.
그룹 멘션 (공개) 공개 컨텍스트에서 그룹이 멘션됨.
그룹 멘션 (비공개) 기밀 컨텍스트에서 그룹이 멘션됨.
취약점 새로운 고유 취약점이 기록됨.

그룹 멘션 알림 트리거#

히스토리
  • GitLab 16.4에서 도입됨.
  • GitLab 18.3에서 알림 트리거 제한이 group_mention_access_check라는 기능 플래그와 함께 도입됨. 기본적으로 비활성화됨.

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

어떤 문제가 문제의 원인인지 확인하려면:

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

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

    # 을 실제 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 콘솔 세션을 시작하고 다음과 유사한 스크립트를 사용합니다:

Warning

데이터를 변경하는 명령은 올바르게 또는 올바른 조건에서 실행되지 않으면 손상을 일으킬 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 백업 인스턴스를 준비해 두세요.

# 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

Slack 알림 (더 이상 사용되지 않음)

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다.

Warning

이 기능은 GitLab 15.9에서 더 이상 사용되지 않음으로 표시되었으며 19.0에서 제거될 예정입니다. 대신 GitLab for Slack 앱을 사용하세요. 이 변경은 호환성을 중단하는 변경입니다.

Slack 알림 통합을 통해 GitLab 프로젝트가 이벤트(이슈 생성 등)를 기존 Slack 팀에 알림으로 보낼 수 있습니다. Slack 알림을 설정하려면 Slack과 GitLab 모두에 대한 구성 변경이 필요합니다.

Slack 구성#

  1. Slack 팀에 로그인하고 새 Incoming WebHooks 구성 시작.
  2. 기본적으로 알림을 보낼 Slack 채널을 식별합니다. Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.
  3. 나중에 GitLab을 구성할 때 사용하기 위해 Webhook URL을 복사합니다.

GitLab 구성#

히스토리
  • GitLab 15.9에서 Slack 채널을 이벤트당 10개로 제한하도록 변경됨.
  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 설정 > 통합을 선택합니다.
  3. Slack 알림을 선택합니다.
  4. 통합 활성화 아래에서 활성 체크박스를 선택합니다.
  5. 트리거 섹션에서 Slack에 알림으로 보낼 각 GitLab 이벤트 유형의 체크박스를 선택합니다. 전체 목록은 Slack 알림 트리거를 참조하세요. 기본적으로 메시지는 Slack 구성 중에 구성한 채널로 전송됩니다.
  6. 선택 사항. 다른 채널, 여러 채널로 메시지를 보내거나 다이렉트 메시지로 보내려면:
    • 채널로 메시지를 보내려면, 쉼표로 구분된 Slack 채널 이름을 입력합니다.
    • 다이렉트 메시지를 보내려면, 사용자의 Slack 프로필에 있는 멤버 ID를 사용합니다.
  7. WebhookSlack 구성 단계에서 복사한 webhook URL을 입력합니다.
  8. 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 실패 시에만 알림을 받으려면 파이프라인 실패 시에만 알림 체크박스를 선택합니다.
  10. ref에 대한 파이프라인 상태가 변경될 때만 알림을 보내려면 상태 변경 시에만 알림 체크박스를 선택합니다.
  11. 알림을 보낼 브랜치 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
  12. 모든 알림을 받으려면 알림을 보낼 레이블 필드를 비워 두거나, 알림을 트리거하기 위해 이슈 또는 머지 리퀘스트에 있어야 하는 레이블을 추가합니다.
  13. 선택 사항. 설정 테스트를 선택합니다.
  14. 변경 사항 저장을 선택합니다.

이제 Slack 팀이 구성된 대로 GitLab 이벤트 알림을 받기 시작합니다.

Slack 알림 트리거#

다음 트리거를 Slack 알림에 사용할 수 있습니다:

트리거 이름 트리거 이벤트
Push 리포지터리에 push.
이슈 작업 항목이 생성, 닫히거나 다시 열림.
인시던트 인시던트가 생성, 닫히거나 다시 열림.
기밀 이슈 기밀 작업 항목이 생성, 닫히거나 다시 열림.
머지 리퀘스트 머지 리퀘스트가 생성, 머지, 승인, 닫히거나 다시 열림.
노트 댓글이 추가됨.
기밀 노트 내부 노트 또는 기밀 작업 항목에 댓글이 추가됨.
태그 push 새 태그가 리포지터리에 push되거나 제거됨.
파이프라인 파이프라인 상태 변경.
위키 페이지 위키 페이지가 생성되거나 업데이트됨.
배포 배포가 시작되거나 완료됨.
알림 새로운 고유 알림이 기록됨.
그룹 멘션 (공개) 공개 컨텍스트에서 그룹이 멘션됨.
그룹 멘션 (비공개) 기밀 컨텍스트에서 그룹이 멘션됨.
취약점 새로운 고유 취약점이 기록됨.

그룹 멘션 알림 트리거#

히스토리
  • GitLab 16.4에서 도입됨.
  • GitLab 18.3에서 알림 트리거 제한이 group_mention_access_check라는 기능 플래그와 함께 도입됨. 기본적으로 비활성화됨.

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

어떤 문제가 문제의 원인인지 확인하려면:

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

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

    # 을 실제 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 콘솔 세션을 시작하고 다음과 유사한 스크립트를 사용합니다:

Warning

데이터를 변경하는 명령은 올바르게 또는 올바른 조건에서 실행되지 않으면 손상을 일으킬 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 백업 인스턴스를 준비해 두세요.

# 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