지속적 통합(Continuous integration) 살펴보기
지속적 통합(Continuous integration) 살펴보기
GitHub Actions로 GitHub 리포지토리에서 직접 사용자 지정 지속적 통합(CI) 워크플로를 만들 수 있어요.
본문
지속적 통합 소개
지속적 통합(Continuous integration, CI)은 코드를 공유 리포지토리에 자주 커밋하도록 요구하는 소프트웨어 관행이에요. 코드를 더 자주 커밋하면 오류를 더 일찍 발견할 수 있고, 개발자가 오류의 원인을 찾을 때 디버깅해야 하는 코드 양이 줄어들어요. 빈번한 코드 업데이트는 소프트웨어 개발 팀의 여러 구성원이 변경 사항을 병합하는 것도 더 쉽게 만들어요. 이는 개발자에게 좋아요. 코드 작성에 더 많은 시간을 쓰고 오류 디버깅이나 병합 충돌 해결에 더 적은 시간을 쓸 수 있기 때문이에요.
리포지토리에 코드를 커밋하면 커밋이 오류를 도입하지 않았는지 확인하기 위해 코드를 지속적으로 빌드하고 테스트할 수 있어요. 테스트에는 코드 린터(스타일 형식 확인), 보안 검사, 코드 커버리지, 기능 테스트, 기타 사용자 지정 검사가 포함될 수 있어요.
코드를 빌드하고 테스트하려면 서버가 필요해요. 코드를 리포지토리에 푸시하기 전에 로컬에서 업데이트를 빌드하고 테스트하거나, 리포지토리에서 새 코드 커밋을 확인하는 CI 서버를 사용할 수 있어요.
GitHub Actions를 사용한 지속적 통합 소개
GitHub Actions를 사용한 CI는 리포지토리의 코드를 빌드하고 테스트를 실행할 수 있는 워크플로를 제공해요. 워크플로는 GitHub 호스팅 가상 머신 또는 직접 호스팅하는 머신에서 실행될 수 있어요. 자세한 내용은 GitHub 호스팅 러너와 자체 호스팅 러너를 참고하세요.
CI 워크플로는 GitHub 이벤트가 발생할 때(예: 새 코드가 리포지토리에 푸시될 때), 설정된 일정에 따라, 또는 리포지토리 디스패치 웹훅을 사용해 외부 이벤트가 발생할 때 실행되도록 구성할 수 있어요.
GitHub은 CI 테스트를 실행하고 각 테스트의 결과를 풀 리퀘스트에 제공하므로, 분기의 변경 사항이 오류를 도입하는지 확인할 수 있어요. 워크플로의 모든 CI 테스트가 통과하면 푸시한 변경 사항은 팀원이 검토하거나 병합할 준비가 된 거예요. 테스트가 실패하면 변경 사항 중 하나가 실패를 일으켰을 수 있어요.
리포지토리에서 CI를 설정하면 GitHub이 리포지토리의 코드를 분석하고 리포지토리의 언어와 프레임워크를 기반으로 CI 워크플로를 추천해요. 예를 들어 Node.js를 사용한다면 GitHub이 Node.js 패키지를 설치하고 테스트를 실행하는 워크플로 템플릿을 제안할 거예요. GitHub이 제안하는 CI 워크플로 템플릿을 사용하거나, 제안된 템플릿을 커스터마이즈하거나, CI 테스트를 실행하는 자체 사용자 지정 워크플로 파일을 만들 수 있어요.
프로젝트의 CI 워크플로 설정을 도와주는 것 외에도 GitHub Actions를 사용해 소프트웨어 개발 수명 주기 전체에 걸친 워크플로를 만들 수 있어요. 예를 들어 액션을 사용해 프로젝트를 배포, 패키징, 릴리스할 수 있어요. 자세한 내용은 워크플로 작성하기를 참고하세요.
일반적인 용어의 정의는 GitHub Actions 이해하기를 참고하세요.
다음 단계
GitHub은 다양한 언어와 프레임워크에 대한 CI 워크플로 템플릿을 제공해요. 이 템플릿으로 지속적 통합을 설정하는 튜토리얼은 코드 빌드 및 테스트를 참고하세요.