GitLab ChatOps
GitLab ChatOps를 사용하여 Slack과 같은 채팅 서비스를 통해 CI/CD 작업과 상호 작용하세요.
많은 조직이 Slack 또는 Mattermost를 사용하여 협업하고 문제를 해결하며 작업을 계획합니다. ChatOps를 사용하면 팀과 작업에 대해 논의하고 CI/CD 작업을 실행하며 동일한 애플리케이션에서 작업 결과를 볼 수 있습니다.
슬래시 명령 통합
run
슬래시 명령을 통해 ChatOps를 트리거할 수 있습니다.
다음 통합이 가능합니다:
- GitLab for Slack 앱 (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 작업 트리거하기
전제 조건:
-
프로젝트에 대해 최소한 개발자 역할을 가져야 합니다.
-
프로젝트가 슬래시 명령 통합을 사용하도록 구성되어 있어야 합니다.
슬랙 또는 매터모스트에서 기본 브랜치에서 CI/CD 작업을 실행할 수 있습니다.
CI/CD 작업을 트리거하기 위한 슬래시 명령은 프로젝트에 구성된 슬래시 명령 통합에 따라 다릅니다.
-
GitLab for Slack 앱의 경우,
/gitlab <project-name> run <job name> <arguments>
를 사용하세요. -
Slack 또는 Mattermost 슬래시 명령의 경우,
/<trigger-name> run <job name> <arguments>
를 사용하세요.
어디서:
-
<job name>
은 실행할 CI/CD 작업의 이름입니다. -
<arguments>
는 CI/CD 작업에 전달할 인수입니다. -
<trigger-name>
은 Slack 또는 Mattermost 통합에 대해 구성된 트리거 이름입니다.
ChatOps는 지정된 작업만 포함된 파이프라인을 예약합니다.
관련 주제
-
ChatOps 스크립트의 일반 저장소 GitLab이 GitLab.com과 상호작용하는 데 사용하는 스크립트입니다.