ChatOps
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab ChatOps를 사용하여 Slack과 같은 채팅 서비스를 통해 CI/CD 잡과 상호작용합니다. 많은 조직이 Slack 또는 Mattermost를 사용하여 협업, 문제 해결 및 작업 계획을 수립합니다. run 슬래시 명령어로 ChatOps를 트리거할 수 있습니다.
GitLab ChatOps를 사용하여 Slack과 같은 채팅 서비스를 통해 CI/CD 잡과 상호작용합니다.
많은 조직이 Slack 또는 Mattermost를 사용하여 협업, 문제 해결 및 작업 계획을 수립합니다. ChatOps를 통해 팀과 작업에 대해 논의하고, CI/CD 잡을 실행하고, 잡 출력을 볼 수 있습니다. 이 모든 것을 동일한 애플리케이션에서 수행할 수 있습니다.
슬래시 명령어 통합#
run 슬래시 명령어로 ChatOps를 트리거할 수 있습니다.
다음 통합을 사용할 수 있습니다:
- GitLab for Slack 앱 (Slack에 권장)
- Mattermost 슬래시 명령어
ChatOps 워크플로우 및 CI/CD 구성#
ChatOps는 프로젝트의 기본 브랜치에 있는 .gitlab-ci.yml에서 지정된 잡을 찾습니다. 잡을 찾으면 ChatOps는 지정된 잡만 포함하는 파이프라인을 생성합니다. when: manual을 설정하면 ChatOps는 파이프라인을 생성하지만 잡이 자동으로 시작되지 않습니다.
ChatOps로 실행된 잡은 GitLab에서 실행된 잡과 동일한 기능을 가집니다. 잡은 추가 권한 유효성 검사를 수행하기 위해 기존 CI/CD 변수(GITLAB_USER_ID 등)를 사용할 수 있지만, 이러한 변수는 재정의될 수 있습니다.
표준 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, Maintainer, 또는 Owner 역할이 있어야 합니다.
- 프로젝트가 슬래시 명령어 통합을 사용하도록 구성되어 있습니다.
Slack 또는 Mattermost에서 기본 브랜치의 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는 지정된 잡만 포함하는 파이프라인을 예약합니다.
관련 항목#
- GitLab이 GitLab.com과 상호작용하는 데 사용하는 일반적인 ChatOps 스크립트 저장소
- GitLab for Slack 앱
- Mattermost 슬래시 명령어
