CircleCI Orbs에서 job의 결과를 슬랙에 알립니다.

7489 단어 CircleCI슬랙
CircleCI에서 작업 결과 알림

TL;DR


  • CircleCI Orbs를 사용하여 slack으로 작업 결과를 쉽게 알리기
  • 성공, 실패를 IF 등으로 조건 분할할 필요 없음
  • webhook 취득

  • 환경


    CircleCI 2.1
    orbs: slack: circleci/[email protected]
    

  • Circleci Orbs이란?

  • Orbs는 간단히 말해서 CircleCI에 제공된 패키지를 사용하는 것입니다 (공식 CircleCI Orbs란?)
    Orbs를 사용하면 설명을 줄이고 쉽게 CI 구현할 수 있습니다

    흐름


  • webhook 취득
  • circleci에 webhook 설정
  • .circleci/config.yml 설정
  • 완료
  • 실패시에만 알림

  • 1. webhook 취득



    아래 URL에서 결과를 흐르고 싶은 슬랙 채널을 선택하여 webhook을 취득

    이런 URL을 얻을 수 있기 때문에 복사해 둡시다.

    https://hooks.slack.com/services/hoge/huga
    

    2. CircleCI 환경 변수에 webhook URL을 설정





    CircleCI 설정 화면 (기어 ⚙ 같은 사람)


    Environment Variables

    「Add Variable」을 포치🐶
    SLACK_WEBHOOK라는 변수 이름으로 추가



    실제 값은 xxxx로 표시되어 등록 완료되었습니다

    3. .circleci/config.yml 설정



    어쨌든 최소한의 코드에서

    circleci/config.yml
    version: 2.1
    
    orbs:
      slack: circleci/[email protected]
    
    jobs:
      deploy-and-notify:
        executor: container
        steps:
          - checkout
          - run: ./deploy.sh
          - slack/status:
              success_message: ':circleci-pass: $CIRCLE_BRANCH のデプロイが完了しました\n:github_octocat: User:$CIRCLE_USERNAME'
              failure_message: ':circleci-fail: $CIRCLE_BRANCH のデプロイが失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
              webhook: '${SLACK_WEBHOOK}'
    

    포인트


  • orbs를 처음으로 선언하고 싶다
  • steps가 성공 상태 → slack에 success_message가 흐른다
  • steps가 실패 상태 → slack에 failure_message가 흐른다
  • 메시지에서 :circleci-pass:, :circleci-fail: 등의 이모티콘을 사용할 수 있습니다

  • 4. 완료



    ↓ 성공시의 메시지는 이런 느낌입니다 (모자이크 많아서 미안해)


    ↓실패시의 메세지는 이런 느낌입니다(모자이크 많이 테리벤처럼 죄송합니다)


    실패 시에만 알림



    통지 까다로워지고, 실패시에만 통지시키고 싶을 때는 아래와 같이 파라미터 설정하면 OK입니다

    circleci/config.yml
    orbs:
      slack: circleci/[email protected]
    
      test:
        executor: container
        steps:
          - checkout
          - attach_workspace:
              at: .
          - run: npm test
          - slack/status:
              fail_only: true #これを設定する
              failure_message: ':circleci-fail: テスト失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
              webhook: '${SLACK_WEBHOOK}'
    

    후기



    circleci에서 기본적으로 사용할 수 있는 환경 변수 또한 slack 메시지에 포함될 수 있기 때문에
  • 어떤 브랜치 (CIRCLE_BRANCH),
  • 누가 푸시했는지 (CIRCLE_USERNAME) 등도 사용할 수있어 편리합니다 -

  • Orbs에서 제공하는 패키지를 사용하면 CircleCI에서의 설명이 줄어들므로 Orbs에서 제공되는 패키지를 적극적으로 사용하고 싶습니다

    사용할 수 있는 Orbs 목록은 이쪽

    다음은 ECR, ECS 배포를 Orbs로 구현한 기사는 여기입니다

    참고



    CircleCI Orbs란?

    좋은 웹페이지 즐겨찾기