CircleCI 디버깅 방법 3가지
4391 단어 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.ymlversion: 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 탭에서 확인할 수 있습니다.
결론
본 기사의 내용은 이상입니다. 조금이라도 도움이 되었으면 좋겠습니다!
Reference
이 문제에 관하여(CircleCI 디버깅 방법 3가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mokuo/items/1f6e35abe3845c82253b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
brew install circleci
# Docker インストール済みの場合はこちら
brew install --ignore-dependencies circleci
circleci config validate
circleci local execute
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.ymlversion: 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 탭에서 확인할 수 있습니다.
결론
본 기사의 내용은 이상입니다. 조금이라도 도움이 되었으면 좋겠습니다!
Reference
이 문제에 관하여(CircleCI 디버깅 방법 3가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mokuo/items/1f6e35abe3845c82253b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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/
본 기사의 내용은 이상입니다. 조금이라도 도움이 되었으면 좋겠습니다!
Reference
이 문제에 관하여(CircleCI 디버깅 방법 3가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mokuo/items/1f6e35abe3845c82253b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)