CircleCI 디버깅 방법 3가지

4391 단어 CircleCI
올해는 직장에서 Rails 애플리케이션의 CI 환경을 Jenkins에서 CircleCI로 마이그레이션했습니다.
그 때, CircleCI 디버깅 방법은 의외로 정리되어 있지 않구나, 라고 느꼈습니다.

이 기사에서는 내가 실제로 했던 디버깅 방법에 대해 씁니다.

덧붙여서, 2018년 11월에 행해진 Sansan Builders Box 에서는, 이 기사의 내용도 포함해, CircleCI 이행에 대해서 이야기를 하였습니다. 그 때의 자료는 ↓↓입니다.
명함 데이터화 시스템을 지원하는 CI 기반에 대한 노력/GEES and CircleCI - Speaker Deck

로컬 빌드



기본적으로 CircleCI에서 테스트가 모두 통과되도록 .circleci/config.yml를 수정하는 작업이 될 것입니다. 그 때, 수정할 때마다 git push 하고 빌드를 달리게 하는 것은 시간이 걸립니다.

CircleCI CLI를 사용하면 로컬에서 빌드를 실행할 수 있습니다.

Mac의 경우 Homebrew에서 설치할 수 있습니다.
brew install circleci

# Docker インストール済みの場合はこちら
brew install --ignore-dependencies circleci
.circleci/config.yml의 검증
circleci config validate

로컬 빌드
circleci local execute

어느 정도까지는 로컬 빌드에서 .circleci/config.yml를 설정할 수 있다고 생각합니다.

참고 : Using the CircleCI Local CLI - CircleCI

컨테이너에 SSH 연결



CircleCI 빌드가 실행되는 컨테이너에 SSH 연결할 수 있습니다.

실행 경과를 확인할 수 있는 화면의 오른쪽 상단에서 Rerun job with SSH를 클릭합니다.


ssh -p xxx.xxx.xxx.xxx 라고 표시되므로, 평상시 GitHub 에 커밋등 할 때 사용하고 있는 비밀키를 사용해 SSH 접속할 수 있습니다. (CircleCI와 GitHub에서 협력하는 경우)
ssh -p xxx.xxx.xxx.xxx -i ~/.ssh/id_rsa_github

나는 이것으로 실제로 PhantomJS가 들어 있지 않은 것을 확인하기도했습니다.

참고 : Debugging with SSH - CircleCI

스크린샷을 찍고 확인하기



마지막은 CircleCI의 E2E 자동 테스트를 위해 스크린 샷을 찍는 방법입니다.

Ruby의 라이브러리 인 Capybara를 예로 들어 설명하겠습니다.
Capybara에서는 save_screenshot를 사용하여 스크린 샷을 찍을 수 있지만 아무 것도 지정하지 않으면 tmp/capybara/에 이미지가 저장됩니다.

이 경우 다음과 같이 작성하여 CircleCI 화면에서 스크린 샷을 볼 수 있습니다.

.circleci/config.yml
version: 2
jobs:
  build:
    parallelism: 3
    docker:
      - image: circleci/ruby:2.5.1-node-browsers-legacy
    (略)
    steps:
      - checkout 
   (略)
      - run:
          name: Run rspec in parallel
          command: |
            bundle exec rspec \
              $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
      - store_artifacts:
          path: tmp/capybara/

↓ 부분이 포인트입니다.
      - store_artifacts:
          path: tmp/capybara/

이제 Artifacts 탭에서 확인할 수 있습니다.



결론



본 기사의 내용은 이상입니다. 조금이라도 도움이 되었으면 좋겠습니다!

좋은 웹페이지 즐겨찾기