CircleaCI를 통한 알림 처리 사용자 정의

6779 단어 CircleCICircleCI2.1

개시하다


현재 참여 중인 프로젝트에서는 한 창고로 여러 모듈의 코드(단일 보고 구조)를 관리합니다.
모든 모듈은 lint과 단일 테스트 등 임무를 수행한다. 모든 임무는 성공 여부를 알리는 설정이 있기 때문에 대량의 알림에서 채팅 도구의 시간선이 곧 흘러나오기 때문에 나는 매우 괴롭다.
따라서 작업이 실패했을 때, 또는 모든 작업이 성공했다는 형식만 알려주지만, 일반적인 설정만 대응할 수 없습니다.Orb (확장 기능 등)을 사용하면 슬랙의 알림을 사용자 정의할 수 있지만 현재 사용하는 채팅이 지원되지 않기 때문에 명령을 정의하고 자체적으로 처리를 만들었습니다.
(제작시 슬랙용 Orb소스 코드 참조
이 설정에는 명령 정의에 사용할 수 있는 CircleaCI 버전 2.1이 필요합니다.

절차.


단계 1: 명령 정의


통지할 처리를 명령으로 정의합니다.여기에 조개껍질이 bash인 상황을 예로 들어 설명한다.
최초의 두 단계 (steps) 는 작업의 성공 여부입니다. 그 중 하나를 실행합니다.작업이 성공하면Success, 실패하면Failure 환경 변수CI_JOB_STATUS에 저장됩니다.
마지막 3단계(성공 여부와 상관없이)에서 전처리에 저장된CI_JOB_STATUS을 참조하여 통지가 필요한지 판단한다.
이 예에서는 생략되었지만 # ここで通知を実施와 리뷰가 적힌 곳에서는 알림용 API 등을 호출하여 실제 알림 처리를 한다.
알림에 필요한 정보는 환경 변수를 통해 얻을 수 있습니다.자세한 내용은 참고 자료를 참조하십시오.
commands:
  notify-result:
    description: ジョブの処理結果通知処理
    parameters:
      event:
        description: |
          通知条件("Always": 常に通知, "Success": 成功時のみ, "Failure": 失敗時のみ)
        enum:
          - Always
          - Success
          - Failure
        type: enum
    steps:
      - run:
          name: ジョブのステータス検知(失敗)
          command: |
            echo 'export CI_JOB_STATUS="Failure"' >> $BASH_ENV
          when: on_fail
      - run:
          name: ジョブのステータス検知(成功)
          command: |
            echo 'export CI_JOB_STATUS="Success"' >> $BASH_ENV
          when: on_success
      - run:
          name: 通知処理の呼び出し
          command: |
            if [ "${CI_JOB_STATUS}" = "${NOTIFY_PARAM_EVENT}" ] || [ "${NOTIFY_PARAM_EVENT}" = "Always" ]; then
              source $BASH_ENV
              # ここで通知を実施
            else
              echo "Notification skipped."
              echo "Job status: ${CI_JOB_STATUS}, Parameters(event: ${NOTIFY_PARAM_EVENT})"
              exit 0
            fi
          environment:
            NOTIFY_PARAM_EVENT: <<parameters.event>>
          when: always

단계 2: 작업 정의


1단계에서 생성한 명령을 작업에 포함합니다.
다음 예에서 lint에서 오류가 발견되면 알림을 합니다.
jobs:
  exec-lint:
    description: lintの実行
    executor: sample-executor
    steps:
      - run:
          name: lintコマンドの実行
          command: yarn lint
      - notify-result:
          event: Failure

3단계: 워크플로우 포함


작업흐름에 작성된 작업을 포함합니다.
다음 예에서 임무에 별명을 붙이도록 지정하십시오.
workflows:
  version: 2
  workflow-sample:
    jobs:
      - build
      - exec-lint:
          name: lint-backend
          requires:
            - build
      - exec-ut:
          name: ut-backend
          requires:
            - lint-backend


구성 파일의 유효성 검사


CircleaCI의 CLI가 설치된 경우 설정 파일을 확인할 수 있습니다.
MacOS에서 Homebrew를 사용할 수 있는 경우 다음 명령을 사용하여 CLI를 설치할 수 있습니다.
brew install circleci
창고의 루트 디렉터리 ((name 디렉터리가 있는 위치) 에서 명령을 실행합니다.결과가 정상이면 출력은 다음과 같다.
$ circleci config validate
Config file at .circleci/config.yml is valid.

좋은 웹페이지 즐겨찾기