GitLab ChatOps
- GitLab Ultimate 10.6에서 소개됨.
 - GitLab Free 11.9로 이전됨.
 CHAT_USER_ID는 GitLab 14.4에서 소개됨.
CI/CD 작업을 슬랙과 같은 채팅 서비스를 통해 상호 작용하기 위해 GitLab ChatOps를 사용하세요.
많은 조직이 협력, 문제 해결 및 업무 계획을 위해 Slack 또는 Mattermost를 사용합니다. ChatOps를 사용하면 팀과 작업을 토론하고, CI/CD 작업을 실행하고, 작업 출력을 모두 동일한 애플리케이션에서 볼 수 있습니다.
슬래시 명령어 통합
run 슬래시 명령어로 ChatOps를 트리거할 수 있습니다.
다음 통합이 가능합니다:
- Slack용 GitLab 앱 (Slack에 권장됨)
 - Slack 슬래시 명령어
 - Mattermost 슬래시 명령어
 
ChatOps 워크플로 및 CI/CD 구성
ChatOps는 프로젝트의 기본 브랜치에 있는 .gitlab-ci.yml에서 지정된 작업을 찾습니다. 작업이 찾아지면, ChatOps는 지정된 작업만 포함하는 파이프라인을 생성합니다. when: manual을 설정하면, ChatOps는 파이프라인을 생성하지만 작업은 자동으로 시작되지 않습니다.
ChatOps로 실행된 작업은 GitLab에서 실행된 것과 동일한 기능을 갖습니다. 작업은 GITLAB_USER_ID와 같은 기존 CI/CD 변수를 사용하여 추가 권한 검증을 수행할 수 있지만, 이러한 변수는 재정의될 수 있습니다.
작업이 표준 CI/CD 파이프라인의 일부로 실행되지 않도록 하려면 rules을 설정해야 합니다.
ChatOps는 다음 CI/CD 변수를 작업에 전달합니다:
- 
CHAT_INPUT-run슬래시 명령어에 전달된 인수입니다. - 
CHAT_CHANNEL- 작업이 실행된 채팅 채널의 이름입니다. - 
CHAT_USER_ID- 작업을 실행한 사용자의 채팅 서비스 ID입니다. 
작업이 실행될 때:
- 작업이 30분 이내에 완료되면, ChatOps는 작업 출력을 채팅 채널로 전송합니다.
 - 작업이 30분 이상 걸리면, Slack API와 같은 방법을 사용하여 채널로 데이터를 전송해야 합니다.
 
ChatOps로부터 작업 제외
채팅에서 작업이 실행되는 것을 방지하려면:
- 
.gitlab-ci.yml에서 작업을except: [chat]로 설정합니다. 
ChatOps 응답 사용자 정의
ChatOps는 작업 출력을 채널로 단일 명령으로 응답합니다. 예를 들어, 다음과 같은 작업이 실행될 때, 채팅 응답은 Hello world입니다:
stages:
- chatops
hello-world:
  stage: chatops
  rules:
    - if: $CI_PIPELINE_SOURCE == "chat"
  script:
    - echo "Hello World"
작업에 여러 명령이 포함되거나 before_script가 설정된 경우, ChatOps는 명령과 해당 출력을 채널로 전송합니다. 명령은 ANSI 색상 코드로 둘러싸여 있습니다.
특정 명령의 출력으로 응답하려면 출력을 chat_reply 섹션에 넣으세요. 예를 들어, 다음 작업은 현재 디렉터리의 파일을 나열합니다:
stages:
- chatops
ls:
  stage: chatops
  rules:
    - if: $CI_PIPELINE_SOURCE == "chat"
  script:
    - echo "This command will not be shown."
    - echo -e "section_start:$( date +%s ):chat_reply\r\033[0K\n$( ls -la )\nsection_end:$( date +%s ):chat_reply\r\033[0K"
ChatOps를 사용하여 CI/CD 작업 트리거
전제 조건:
- 해당 프로젝트의 최소한 Developer 역할이 있어야 합니다.
 - 프로젝트가 슬래시 명령어 통합을 사용하도록 설정되어 있어야 합니다.
 
Slack이나 Mattermost에서 기본 브랜치에서 CI/CD 작업을 실행할 수 있습니다.
CI/CD 작업을 트리거하는 슬래시 명령어는 프로젝트에 구성된 슬래시 명령어 통합에 따라 다릅니다.
- GitLab for Slack 앱을 위해, 
/gitlab <프로젝트 이름> run <작업 이름> <인수>를 사용하세요. - Slack이나 Mattermost 슬래시 명령어를 위해, 
/<트리거 이름> run <작업 이름> <인수>를 사용하세요. 
여기서:
- 
<작업 이름>은 실행할 CI/CD 작업의 이름입니다. - 
<인수>는 CI/CD 작업에 전달할 인수입니다. - 
<트리거 이름>은 Slack 또는 Mattermost 통합에 구성된 트리거 이름입니다. 
ChatOps는 지정된 작업만 포함하는 파이프라인을 예약합니다.
도움말