Slack 알림 (제거됨)
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
이 기능은 GitLab 15.9에서 지원 중단되었습니다. Slack 알림 통합을 사용하면 GitLab 프로젝트가 이슈 생성과 같은 이벤트를 기존 Slack 팀에 알림으로 보낼 수 있습니다. 두 통합은 같은 알림 설정으로 같은 이벤트를 보냅니다.
이 기능은 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 앱으로 마이그레이션하려면 다음과 같이 합니다:
- 현재 구성을 기록합니다. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다. 왼쪽 사이드바에서 Settings > Integrations를 선택한 다음 Slack notifications를 선택합니다. 선택한 이벤트, 각 이벤트의 채널 이름, 알림 설정을 기록합니다.
- GitLab for Slack 앱을 설치합니다.
- GitLab for Slack 앱에서 기록해 둔 이벤트 선택, 채널 이름, 알림 설정을 다시 입력합니다. 자세한 내용은 알림 구성을 참고합니다.
- 대상 채널이 비공개라면 채널에 앱을 추가합니다.
- Test settings를 선택하고 Slack에 알림이 도착하는지 확인합니다.
- Slack 알림 통합을 끕니다. 첫 번째 단계의 Slack notifications 설정으로 돌아갑니다. Enable integration 아래에서 Active 체크박스를 선택 해제한 다음 Save changes를 선택합니다. 구성은 그대로 유지되므로 필요하면 다시 켤 수 있습니다.
- GitLab for Slack 앱에서 알림이 계속 도착하는지 확인합니다.
- Slack에서 Slack 구성에서 만든 수신 웹훅 통합을 제거하여 더 이상 유효한 자격 증명으로 남지 않게 합니다. 이 단계는 되돌릴 수 없습니다. 웹훅을 제거하면 저장된 웹훅 URL이 작동하지 않으므로 Slack 알림을 다시 켜서 롤백할 수 없습니다.
Slack 알림을 끈 후에도 통합은 프로젝트의 통합 목록에 남아 있습니다.
Slack 구성#
- Slack 팀에 로그인하고 새 Incoming WebHooks 구성을 시작합니다.
- 알림을 기본으로 보낼 Slack 채널을 정합니다. Add Incoming WebHooks integration을 선택하여 구성을 추가합니다.
- 나중에 GitLab을 구성할 때 사용하도록 Webhook URL을 복사합니다.
GitLab 구성#
히스토리
Slack notifications가 프로젝트의 통합 목록에 없다면 Slack 알림 통합에 미치는 영향을 참고합니다.
Slack 알림을 구성하려면 다음과 같이 합니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Integrations를 선택합니다.
- Slack notifications를 선택합니다.
- Enable integration 아래에서 Active 체크박스를 선택합니다.
- Trigger 섹션에서 Slack에 알림으로 보낼 GitLab 이벤트 유형의 체크박스를 각각 선택합니다. 전체 목록은 Slack 알림 트리거를 참고합니다. 기본적으로 메시지는 Slack 구성 단계에서 설정한 채널로 전송됩니다.
- 선택 사항. 다른 채널, 여러 채널 또는 다이렉트 메시지로 보내려면
다음과 같이 입력합니다.
- 채널로 메시지를 보내려면 Slack 채널 이름을 쉼표로 구분하여 입력합니다.
- 다이렉트 메시지를 보내려면 사용자의 Slack 프로필에 있는 Member ID를 사용합니다.
- Webhook에 Slack 구성 단계에서 복사한 웹훅 URL을 입력합니다.
- 선택 사항. Username에 알림을 보내는 Slack 봇의 사용자 이름을 입력합니다.
- 실패한 경우에만 알리려면 Notify only broken pipelines 체크박스를 선택합니다.
- ref의 파이프라인 상태가 바뀔 때만 알림을 보내려면 Notify only when status changes 체크박스를 선택합니다.
- Branches for which notifications are to be sent 드롭다운 목록에서 알림을 보낼 브랜치 유형을 선택합니다.
- 모든 알림을 받으려면 Labels to be notified 필드를 비워 두고, 그렇지 않으면 알림을 트리거하기 위해 이슈나 머지 리퀘스트가 가져야 하는 레이블을 추가합니다.
- 선택 사항. Test settings를 선택합니다.
- 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 보안 인증서는 항상 신뢰되므로 앞쪽일 가능성은 낮습니다.
두 문제 중 어느 쪽이 원인인지 확인하려면 다음과 같이 진행합니다.
-
Rails 콘솔을 시작합니다.
sudo gitlab-rails console -e production # for source installs: bundle exec rails console -e production -
다음 명령을 실행합니다.
# 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 콘솔 세션을 시작하고 다음과 비슷한 스크립트를 사용합니다.
데이터를 변경하는 명령은 올바르게 실행하지 않거나 조건이 맞지 않으면 손상을 일으킬 수 있습니다. 항상 테스트 환경에서 먼저 실행하고, 복구할 수 있도록 백업 인스턴스를 준비합니다.
# 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