Rails 8.1 로컬 CI: 클라우드 없이 로컬에서 CI/CD 실행하기

Rails 8.1 Local CI

작성자
jeff
발행일
2025년 10월 07일

핵심 요약

  • 1 Rails 8.1에 도입된 로컬 CI는 클라우드 기반 CI 없이 로컬 환경에서 테스트를 빠르게 실행하여 개발 효율성을 높입니다.
  • 2 로컬 CI는 `config/ci.rb`에 정의된 스크립트를 `bin/ci` 명령으로 실행하며, Rubocop, Bundler Audit, Import Map Audit, 테스트 실행 등 다양한 단계를 포함합니다.
  • 3 GitHub CLI 및 `gh-signoff` 확장을 통해 로컬 CI 결과를 GitHub Pull Request에 자동으로 연동하여 머지 가능 여부를 표시할 수 있습니다.

도입

Rails 8.1 버전부터 로컬 CI(Continuous Integration) 기능이 정식으로 도입되었습니다. 이 기능은 클라우드 기반의 CI/CD 시스템에 의존하지 않고 개발자의 로컬 환경에서 직접 CI 프로세스를 실행할 수 있도록 설계되었습니다. 37signals의 Jeremy Dar가 주도한 이 작업은 클라우드 환경보다 로컬 머신이 더 빠르고 효율적일 수 있다는 전제에서 출발했으며, 개발자에게 더 신속한 피드백 루프를 제공하여 생산성을 향상시키는 것을 목표로 합니다.

Rails 8.1의 로컬 CI는 config/ci.rb 파일에 정의된 CI 스크립트를 bin/ci 명령으로 실행합니다. 이 스크립트는 애플리케이션의 bin 디렉토리에 있는 다른 스크립트들을 호출하여 다양한 CI 단계를 수행합니다.

로컬 CI의 핵심 기능

  • 스크립트 정의: config/ci.rb 파일에 CI 스크립트가 정의되며, 사용자 정의가 가능합니다.
  • 실행 명령: bin/ci 명령으로 모든 CI 단계를 순차적으로 수행합니다.
  • 기본 단계: 개발 환경 설정(bin/setup), Rubocop 코드 검사(bin/rubocop), Bundler Audit(bin/bundler-audit), Import Map Audit(bin/importmap-audit), 애플리케이션 테스트(bin/test) 등이 포함됩니다. 이 스크립트들은 bin 디렉토리에서 직접 확인하고 수정할 수 있습니다.

CI 실행 및 GitHub 연동

  • 실행 예시: 초기 Import Map Audit 실패 후, 코드 수정 및 재실행을 통해 모든 CI 단계를 성공적으로 완료하는 과정을 시연합니다. 로컬 CI는 클라우드 CI보다 훨씬 빠른 시간 내에 완료될 수 있습니다.
  • GitHub Sign-off: GitHub CLI와 Basecamp의 gh-signoff 확장 기능 설치를 통해 로컬 CI 결과를 GitHub Pull Request에 자동으로 반영할 수 있습니다. * config/ci.rb에서 sign-off 기능을 활성화합니다. * 변경사항을 커밋하고 GitHub에 푸시해야 기능이 정상 작동합니다. * bin/ci 실행 후 CI가 성공하면, GitHub PR에 ‘Signed off’ 상태와 함께 ‘all systems go’ 메시지가 자동으로 추가됩니다. * 이를 통해 클라우드 CI 대기 없이 PR의 머지 가능 여부를 즉시 확인할 수 있어 개발 워크플로우가 간소화됩니다.

결론

Rails 8.1에 추가된 로컬 CI 기능은 개발자가 클라우드 CI 환경에 대한 의존도를 줄이고 로컬에서 더 빠르고 효율적인 피드백을 받을 수 있도록 돕습니다. `config/ci.rb`를 통한 유연한 설정과 `bin/ci` 명령의 간편한 실행은 CI 프로세스를 개발 워크플로우에 쉽게 통합할 수 있게 합니다. 특히 GitHub CLI와의 연동을 통한 Pull Request sign-off 기능은 로컬 CI의 결과를 원격 저장소에 자동으로 반영하여 개발팀의 협업 효율성을 크게 향상시킬 수 있습니다. 이 기능은 CI 설정을 간소화하고 개발 속도를 높이는 데 기여하므로, Rails 8.1 사용자라면 적극적으로 활용해 볼 가치가 있습니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!