InfoGrab DocsInfoGrab Docs

Slack 알림 (제거됨)

요약

이 기능은 GitLab 15.9에서 지원 중단되었습니다. Slack 알림 통합을 사용하면 GitLab 프로젝트가 이슈 생성과 같은 이벤트를 기존 Slack 팀에 알림으로 보낼 수 있습니다. 두 통합은 같은 알림 설정으로 같은 이벤트를 보냅니다.

Warning

이 기능은 GitLab 15.9에서 지원 중단되었습니다. 대신 GitLab for Slack 앱을 사용합니다.

Slack 알림 통합을 사용하면 GitLab 프로젝트가 이슈 생성과 같은 이벤트를 기존 Slack 팀에 알림으로 보낼 수 있습니다. Slack 알림을 설정하려면 Slack과 GitLab 양쪽의 구성을 변경해야 합니다.

GitLab for Slack 앱과 비교#

두 통합은 같은 알림 설정으로 같은 이벤트를 보냅니다. 각 이벤트에 대해 쉼표로 구분하여 Slack 채널 이름을 최대 10개까지 입력합니다. 두 통합 모두 다음으로 알림을 제한할 수 있습니다:

  • 실패한 파이프라인만
  • 파이프라인 상태 변경만
  • 선택한 브랜치
  • 선택한 레이블이 있는 이벤트

두 통합 모두 프로젝트, 그룹 또는 인스턴스에 구성할 수 있습니다.

GitLab for Slack 앱은 프로젝트, 그룹 또는 인스턴스의 통합 설정에서 설치합니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 인스턴스에 앱을 구성한 뒤에야 앱이 해당 위치에 나타납니다. 자세한 내용은 GitLab for Slack 앱 관리를 참고합니다.

두 통합은 다음 점이 다릅니다:

기능 Slack 알림 GitLab for Slack 앱
상태 GitLab 15.9에서 지원 중단되었습니다. 현재 사용되며 권장됩니다.
설정 Slack 수신 웹훅 URL을 GitLab에 붙여넣습니다. GitLab에서 기본 Slack 앱을 설치합니다.
기능 알림만 제공합니다. 알림, 슬래시 명령어, GitLab Duo 통합을 제공합니다.
자격 증명 GitLab에 저장된 웹훅 URL입니다. URL이 있는 사람은 누구나 채널에 게시할 수 있습니다. GitLab에 저장된 OAuth 봇 토큰입니다.
사용 가능 여부 관리자 설정이 필요하지 않습니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 앱을 구성해야 앱이 나타납니다.

GitLab for Slack 앱으로 마이그레이션#

Slack 알림을 계속 받고 슬래시 명령어와 GitLab Duo 통합을 사용하려면 GitLab for Slack 앱으로 마이그레이션합니다.

설정은 자동으로 이전되지 않으므로 새 통합에서 구성을 다시 입력해야 합니다. 마이그레이션하는 동안 두 통합을 동시에 실행할 수 있습니다. Slack 알림을 끄기 전까지는 각 이벤트가 두 번 전달됩니다.

사전 요구 사항:

  • GitLab for Slack 앱을 인스턴스에서 사용할 수 있어야 합니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 먼저 앱을 구성해야 합니다.
  • Slack 알림이 구성된 프로젝트에 대한 Maintainer 이상의 권한, 그룹에 대한 Owner 권한, 또는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
  • Slack 워크스페이스에 앱을 추가할 권한이 있어야 합니다.

이 단계는 프로젝트 수준 통합의 마이그레이션을 설명합니다. Slack 알림이 그룹 또는 인스턴스 수준에 구성되어 있다면 해당 수준에서 같은 단계를 따릅니다:

  • 그룹의 경우 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
  • 인스턴스의 경우 오른쪽 상단에서 Admin을 선택합니다.

그런 다음 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.

GitLab for Slack 앱으로 마이그레이션하려면 다음과 같이 합니다:

  1. 현재 구성을 기록합니다. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다. 왼쪽 사이드바에서 Settings > Integrations를 선택한 다음 Slack notifications를 선택합니다. 선택한 이벤트, 각 이벤트의 채널 이름, 알림 설정을 기록합니다.
  2. GitLab for Slack 앱을 설치합니다.
  3. GitLab for Slack 앱에서 기록해 둔 이벤트 선택, 채널 이름, 알림 설정을 다시 입력합니다. 자세한 내용은 알림 구성을 참고합니다.
  4. 대상 채널이 비공개라면 채널에 앱을 추가합니다.
  5. Test settings를 선택하고 Slack에 알림이 도착하는지 확인합니다.
  6. Slack 알림 통합을 끕니다. 첫 번째 단계의 Slack notifications 설정으로 돌아갑니다. Enable integration 아래에서 Active 체크박스를 선택 해제한 다음 Save changes를 선택합니다. 구성은 그대로 유지되므로 필요하면 다시 켤 수 있습니다.
  7. GitLab for Slack 앱에서 알림이 계속 도착하는지 확인합니다.
  8. Slack에서 Slack 구성에서 만든 수신 웹훅 통합을 제거하여 더 이상 유효한 자격 증명으로 남지 않게 합니다. 이 단계는 되돌릴 수 없습니다. 웹훅을 제거하면 저장된 웹훅 URL이 작동하지 않으므로 Slack 알림을 다시 켜서 롤백할 수 없습니다.

Slack 알림을 끈 후에도 통합은 프로젝트의 통합 목록에 남아 있습니다.

Slack 구성#

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

GitLab 구성#

히스토리
  • GitLab 15.9에서 이벤트당 Slack 채널이 10개로 제한되도록 변경되었습니다.
  • GitLab 19.5에서 사용한 적이 없는 프로젝트에는 통합이 표시되지 않도록 변경되었습니다.

Slack notifications가 프로젝트의 통합 목록에 없다면 Slack 알림 통합에 미치는 영향을 참고합니다.

Slack 알림을 구성하려면 다음과 같이 합니다:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
  3. Slack notifications를 선택합니다.
  4. Enable integration 아래에서 Active 체크박스를 선택합니다.
  5. Trigger 섹션에서 Slack에 알림으로 보낼 GitLab 이벤트 유형의 체크박스를 각각 선택합니다. 전체 목록은 Slack 알림 트리거를 참고합니다. 기본적으로 메시지는 Slack 구성 단계에서 설정한 채널로 전송됩니다.
  6. 선택 사항. 다른 채널, 여러 채널 또는 다이렉트 메시지로 보내려면 다음과 같이 입력합니다.
    • 채널로 메시지를 보내려면 Slack 채널 이름을 쉼표로 구분하여 입력합니다.
    • 다이렉트 메시지를 보내려면 사용자의 Slack 프로필에 있는 Member ID를 사용합니다.
  7. Webhook에 Slack 구성 단계에서 복사한 웹훅 URL을 입력합니다.
  8. 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 실패한 경우에만 알리려면 Notify only broken pipelines 체크박스를 선택합니다.
  10. ref의 파이프라인 상태가 바뀔 때만 알림을 보내려면 Notify only when status changes 체크박스를 선택합니다.
  11. Branches for which notifications are to be sent 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
  12. 모든 알림을 받으려면 Labels to be notified 필드를 비워 두고, 그렇지 않으면 알림을 트리거하기 위해 이슈나 머지 리퀘스트가 가져야 하는 레이블을 추가합니다.
  13. 선택 사항. Test settings를 선택합니다.
  14. Save changes를 선택합니다.

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

Slack 알림 트리거#

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

트리거 이름 트리거 이벤트
Push 리포지터리에 push가 발생합니다.
Issue 작업 항목이 생성, 종료 또는 재개됩니다.
Incident 인시던트가 생성, 종료 또는 재개됩니다.
Confidential issue 비공개 작업 항목이 생성, 종료 또는 재개됩니다.
Merge request 머지 리퀘스트가 생성, 머지, 승인, 종료 또는 재개됩니다.
Note 댓글이 추가됩니다.
Confidential note 비공개 작업 항목에 내부 노트나 댓글이 추가됩니다.
Tag push 리포지터리에 새 태그가 push 되거나 태그가 제거됩니다.
Pipeline 파이프라인 상태가 바뀝니다.
Wiki page 위키 페이지가 생성되거나 업데이트됩니다.
Deployment 배포가 시작되거나 완료됩니다.
Alert 새로운 고유 알림이 기록됩니다.
공개 컨텍스트의 그룹 멘션 공개 컨텍스트에서 그룹이 언급됩니다.
비공개 컨텍스트의 그룹 멘션 비공개 컨텍스트에서 그룹이 언급됩니다.
Vulnerability 새로운 고유 취약점이 기록됩니다.

그룹 멘션 알림 트리거#

히스토리
  • 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
    
    # for source installs:
    bundle exec rails console -e production
    
  2. 다음 명령을 실행합니다.

    # replace  with your actual Slack URL
    result = Net::HTTP.get(URI('https://'));0
    
    # replace  with your actual 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

데이터를 변경하는 명령은 올바르게 실행하지 않거나 조건이 맞지 않으면 손상을 일으킬 수 있습니다. 항상 테스트 환경에서 먼저 실행하고, 복구할 수 있도록 백업 인스턴스를 준비합니다.

# Grab all projects that have the Slack notifications enabled
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")

# Disable the integration on each of the projects that were found.
p.each do |project|
  project.slack_integration.update!(:active, false)
end

Slack 알림 (제거됨)

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

요약

이 기능은 GitLab 15.9에서 지원 중단되었습니다. Slack 알림 통합을 사용하면 GitLab 프로젝트가 이슈 생성과 같은 이벤트를 기존 Slack 팀에 알림으로 보낼 수 있습니다. 두 통합은 같은 알림 설정으로 같은 이벤트를 보냅니다.

Warning

이 기능은 GitLab 15.9에서 지원 중단되었습니다. 대신 GitLab for Slack 앱을 사용합니다.

Slack 알림 통합을 사용하면 GitLab 프로젝트가 이슈 생성과 같은 이벤트를 기존 Slack 팀에 알림으로 보낼 수 있습니다. Slack 알림을 설정하려면 Slack과 GitLab 양쪽의 구성을 변경해야 합니다.

GitLab for Slack 앱과 비교#

두 통합은 같은 알림 설정으로 같은 이벤트를 보냅니다. 각 이벤트에 대해 쉼표로 구분하여 Slack 채널 이름을 최대 10개까지 입력합니다. 두 통합 모두 다음으로 알림을 제한할 수 있습니다:

  • 실패한 파이프라인만
  • 파이프라인 상태 변경만
  • 선택한 브랜치
  • 선택한 레이블이 있는 이벤트

두 통합 모두 프로젝트, 그룹 또는 인스턴스에 구성할 수 있습니다.

GitLab for Slack 앱은 프로젝트, 그룹 또는 인스턴스의 통합 설정에서 설치합니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 인스턴스에 앱을 구성한 뒤에야 앱이 해당 위치에 나타납니다. 자세한 내용은 GitLab for Slack 앱 관리를 참고합니다.

두 통합은 다음 점이 다릅니다:

기능 Slack 알림 GitLab for Slack 앱
상태 GitLab 15.9에서 지원 중단되었습니다. 현재 사용되며 권장됩니다.
설정 Slack 수신 웹훅 URL을 GitLab에 붙여넣습니다. GitLab에서 기본 Slack 앱을 설치합니다.
기능 알림만 제공합니다. 알림, 슬래시 명령어, GitLab Duo 통합을 제공합니다.
자격 증명 GitLab에 저장된 웹훅 URL입니다. URL이 있는 사람은 누구나 채널에 게시할 수 있습니다. GitLab에 저장된 OAuth 봇 토큰입니다.
사용 가능 여부 관리자 설정이 필요하지 않습니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 앱을 구성해야 앱이 나타납니다.

GitLab for Slack 앱으로 마이그레이션#

Slack 알림을 계속 받고 슬래시 명령어와 GitLab Duo 통합을 사용하려면 GitLab for Slack 앱으로 마이그레이션합니다.

설정은 자동으로 이전되지 않으므로 새 통합에서 구성을 다시 입력해야 합니다. 마이그레이션하는 동안 두 통합을 동시에 실행할 수 있습니다. Slack 알림을 끄기 전까지는 각 이벤트가 두 번 전달됩니다.

사전 요구 사항:

  • GitLab for Slack 앱을 인스턴스에서 사용할 수 있어야 합니다. GitLab Self-Managed와 GitLab Dedicated에서는 관리자가 먼저 앱을 구성해야 합니다.
  • Slack 알림이 구성된 프로젝트에 대한 Maintainer 이상의 권한, 그룹에 대한 Owner 권한, 또는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
  • Slack 워크스페이스에 앱을 추가할 권한이 있어야 합니다.

이 단계는 프로젝트 수준 통합의 마이그레이션을 설명합니다. Slack 알림이 그룹 또는 인스턴스 수준에 구성되어 있다면 해당 수준에서 같은 단계를 따릅니다:

  • 그룹의 경우 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
  • 인스턴스의 경우 오른쪽 상단에서 Admin을 선택합니다.

그런 다음 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.

GitLab for Slack 앱으로 마이그레이션하려면 다음과 같이 합니다:

  1. 현재 구성을 기록합니다. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다. 왼쪽 사이드바에서 Settings > Integrations를 선택한 다음 Slack notifications를 선택합니다. 선택한 이벤트, 각 이벤트의 채널 이름, 알림 설정을 기록합니다.
  2. GitLab for Slack 앱을 설치합니다.
  3. GitLab for Slack 앱에서 기록해 둔 이벤트 선택, 채널 이름, 알림 설정을 다시 입력합니다. 자세한 내용은 알림 구성을 참고합니다.
  4. 대상 채널이 비공개라면 채널에 앱을 추가합니다.
  5. Test settings를 선택하고 Slack에 알림이 도착하는지 확인합니다.
  6. Slack 알림 통합을 끕니다. 첫 번째 단계의 Slack notifications 설정으로 돌아갑니다. Enable integration 아래에서 Active 체크박스를 선택 해제한 다음 Save changes를 선택합니다. 구성은 그대로 유지되므로 필요하면 다시 켤 수 있습니다.
  7. GitLab for Slack 앱에서 알림이 계속 도착하는지 확인합니다.
  8. Slack에서 Slack 구성에서 만든 수신 웹훅 통합을 제거하여 더 이상 유효한 자격 증명으로 남지 않게 합니다. 이 단계는 되돌릴 수 없습니다. 웹훅을 제거하면 저장된 웹훅 URL이 작동하지 않으므로 Slack 알림을 다시 켜서 롤백할 수 없습니다.

Slack 알림을 끈 후에도 통합은 프로젝트의 통합 목록에 남아 있습니다.

Slack 구성#

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

GitLab 구성#

히스토리
  • GitLab 15.9에서 이벤트당 Slack 채널이 10개로 제한되도록 변경되었습니다.
  • GitLab 19.5에서 사용한 적이 없는 프로젝트에는 통합이 표시되지 않도록 변경되었습니다.

Slack notifications가 프로젝트의 통합 목록에 없다면 Slack 알림 통합에 미치는 영향을 참고합니다.

Slack 알림을 구성하려면 다음과 같이 합니다:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
  3. Slack notifications를 선택합니다.
  4. Enable integration 아래에서 Active 체크박스를 선택합니다.
  5. Trigger 섹션에서 Slack에 알림으로 보낼 GitLab 이벤트 유형의 체크박스를 각각 선택합니다. 전체 목록은 Slack 알림 트리거를 참고합니다. 기본적으로 메시지는 Slack 구성 단계에서 설정한 채널로 전송됩니다.
  6. 선택 사항. 다른 채널, 여러 채널 또는 다이렉트 메시지로 보내려면 다음과 같이 입력합니다.
    • 채널로 메시지를 보내려면 Slack 채널 이름을 쉼표로 구분하여 입력합니다.
    • 다이렉트 메시지를 보내려면 사용자의 Slack 프로필에 있는 Member ID를 사용합니다.
  7. Webhook에 Slack 구성 단계에서 복사한 웹훅 URL을 입력합니다.
  8. 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
  9. 실패한 경우에만 알리려면 Notify only broken pipelines 체크박스를 선택합니다.
  10. ref의 파이프라인 상태가 바뀔 때만 알림을 보내려면 Notify only when status changes 체크박스를 선택합니다.
  11. Branches for which notifications are to be sent 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
  12. 모든 알림을 받으려면 Labels to be notified 필드를 비워 두고, 그렇지 않으면 알림을 트리거하기 위해 이슈나 머지 리퀘스트가 가져야 하는 레이블을 추가합니다.
  13. 선택 사항. Test settings를 선택합니다.
  14. Save changes를 선택합니다.

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

Slack 알림 트리거#

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

트리거 이름 트리거 이벤트
Push 리포지터리에 push가 발생합니다.
Issue 작업 항목이 생성, 종료 또는 재개됩니다.
Incident 인시던트가 생성, 종료 또는 재개됩니다.
Confidential issue 비공개 작업 항목이 생성, 종료 또는 재개됩니다.
Merge request 머지 리퀘스트가 생성, 머지, 승인, 종료 또는 재개됩니다.
Note 댓글이 추가됩니다.
Confidential note 비공개 작업 항목에 내부 노트나 댓글이 추가됩니다.
Tag push 리포지터리에 새 태그가 push 되거나 태그가 제거됩니다.
Pipeline 파이프라인 상태가 바뀝니다.
Wiki page 위키 페이지가 생성되거나 업데이트됩니다.
Deployment 배포가 시작되거나 완료됩니다.
Alert 새로운 고유 알림이 기록됩니다.
공개 컨텍스트의 그룹 멘션 공개 컨텍스트에서 그룹이 언급됩니다.
비공개 컨텍스트의 그룹 멘션 비공개 컨텍스트에서 그룹이 언급됩니다.
Vulnerability 새로운 고유 취약점이 기록됩니다.

그룹 멘션 알림 트리거#

히스토리
  • 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
    
    # for source installs:
    bundle exec rails console -e production
    
  2. 다음 명령을 실행합니다.

    # replace  with your actual Slack URL
    result = Net::HTTP.get(URI('https://'));0
    
    # replace  with your actual 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

데이터를 변경하는 명령은 올바르게 실행하지 않거나 조건이 맞지 않으면 손상을 일으킬 수 있습니다. 항상 테스트 환경에서 먼저 실행하고, 복구할 수 있도록 백업 인스턴스를 준비합니다.

# Grab all projects that have the Slack notifications enabled
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")

# Disable the integration on each of the projects that were found.
p.each do |project|
  project.slack_integration.update!(:active, false)
end