문제

나는 전에 CI 도구를 사용한 적이 없지만 내가 읽은 내용에서 매일 코드를 작성하지 않는 솔로 개발자에게 어떤 이점이 있는지 확실하지 않습니다.

첫째 - CI는 모든 프로젝트에 어떤 이점을 제공합니까?

둘째 - 누가 CI를 사용해야합니까? 모든 개발자에게 도움이됩니까?

도움이 되었습니까?

해결책

CI의 기본 개념은 누군가가 버전 제어 시스템에 커밋 할 때마다 코드를 구축하고 자동 테스트를 실행하는 시스템이 있다는 것입니다. 이러한 테스트에는 단위 및 기능 테스트 또는 행동 중심 테스트가 포함됩니다.

이점은 누군가가 건물을 깨뜨렸을 때 즉시 알고 있다는 것입니다. 이는 A) 컴파일을 방지하는 코드를 커밋 한 것을 의미합니다. 이는 '업데이트'를 한 사람을 망치거나 b) 일부 테스트를 어기는 코드를 저지른 것입니다. 코드의 변경 사항을 반영하기 위해 테스트를 업데이트해야합니다.

솔로 개발자라면 CI는 그렇지 않습니다 상당히 커밋 전에 테스트를 실행하는 좋은 습관에있는 경우 유용합니다. ~해야 한다 하고 있습니다. 즉, CI가 테스트를 수행하게하는 나쁜 습관을 개발할 수 있습니다.

솔로 프로그래머로서 주로 징계로 이어집니다. CI를 사용하는 것은 유용한 기술이지만 팀 환경으로 해석되지 않는 나쁜 습관을 개발하지 않기를 원합니다.

다른 팁

다른 사람들이 지적했듯이 CI 하다 솔로 개발자에게는 이점이 있습니다. 그러나 당신이 스스로에게 물어봐야 할 질문은 다음과 같습니다. 오버 헤드의 가치가 있습니까? 당신이 나와 같은 경우, 프로젝트를위한 CI 시스템을 설정하는 데 1 ~ 2 시간이 걸릴 것입니다. 서버를 할당하고 모든 네트워킹을 설정하고 소프트웨어를 설치해야하기 때문입니다. CI 시스템은 한 번에 몇 초만 저장할 것임을 기억하십시오. 솔로 개발자의 경우이 시대는 CI 설정을 수행하는 데 걸리는 시간보다 더 이상 추가되지 않을 것입니다.

그러나 이전에 CI 시스템을 설정 한 적이 없다면, 어떻게하는 방법을 배우기 위해서만하는 것이 좋습니다. 학습 경험의 가치가없는 시간이 오래 걸리지 않습니다.

CI의 이점은 체크인이 빌드를 깨뜨릴 때 조기에 발견 할 수있는 능력에 있습니다. 또한 빌드에 대해 자동화 된 테스트 제품군을 실행하고 메트릭 등을 제공 할 수있는 모든 종류의 도구를 실행할 수 있습니다.

분명히, 이것은 당신이 커밋 팀을 가질 때 매우 가치가 있습니다. 솔로 개발자로서, 그것은 가치가 없습니다. 아마도 단위 테스트를 실행하고 통합 테스트를 수행 할 수도 있습니다. 그러나 개발자가 세트에서 파일을 확인하는 것을 잊는 여러 차례를 보았습니다.

CI 빌드는 또한 "릴리스"빌드로 생각할 수 있습니다. 환경은 안정적이어야하며 기계에 추가 한 개발 기즈모의 영향을받지 않아야합니다. 항상 빌드를 재현 할 수 있어야합니다. 프로젝트에 새로운 의존성을 추가하고 릴리스 빌드 환경을 설정하여이를 고려해야 할 경우에는 가치가 있습니다.

여러 컴파일러를 지원 해야하는 경우 CI 빌드 시스템이있어서 한 번에 한 번도 개발하는 동안 모든 작업을 수행하는 것이 편리합니다. 내 코드는 x86 및 x64에서 vc6 ~ vs2008을 사용하여 빌드를 구축하므로 vs2005 & 8을 구축하므로 프로젝트마다 프로젝트 당 7 개의 빌드입니다. 내가 지원하는 컴파일러는 여전히 빌드됩니다.

마찬가지로, 여러 프로젝트에서 사용하는 Libs를 구축하는 경우 CI는 현재 함께 일하는 프로젝트가 아닌 모든 프로젝트와 함께 작동하는지 확인합니다.

진실은, 지속적인 통합이 팀에서 가장 의미가 있다는 것입니다. 싱글 개발자는 또한 몇 가지 장점을 얻을 수 있으며, CI 시스템 설정에 투자하는 시간에 대응하기에 충분한 지 스스로 결정해야합니다.

  • 필요한 파일을 확인하는 것을 잊어 버린 경우 저장소에는 컴퓨터에서 작동하더라도 깨진 버전이 포함되어 있습니다. CI는이 사례를 감지합니다.
  • CI-Server가 다른 컴퓨터에서 실행되는 경우 빌드 환경에 대한 종속성을 나타낼 수 있습니다. 이를 의미합니다. 빌드 및 모든 테스트는 Dev-Box에서 작동 할 수 있지만 다른 컴퓨터에서는 일부 의존성이 충족되지 않고 빌드가 나옵니다.
  • 매일 빌드는 이전 소프트웨어가 OS/컴파일러/라이브러리의 최신 업그레이드와 함께 작동하지 않음을 나타냅니다.
  • CI-System에 Build-Artifacts 아카이브가있는 경우 이전 버전의 소프트웨어를 쉽게 배포 할 수 있습니다.
  • 일부 CI는 빌드에 대한 메트릭을 보여주는 멋진 인터페이스를 가지고 있으며 자동 생성 된 문서에 대한 링크가 있습니다.

우리는 CI 시스템을 사용하여 빌드를 릴리스하고 일반적인 자동 "온 커밋"빌드를 수행합니다.

설정을 해제하기 위해 모든 프로세스를 통해 릴리스 빌드를 시작하는 버튼을 클릭 할 수있는 것은 다음과 같습니다.

  • 빠른 (나는 다른 것들로 똑바로 갈 수 있고, 별도의 기계에서 실행되므로 속도를 늦추지 않습니다);
  • 반복적 (릴리스 폴더에 설정을 복사하고 알아야 할 모든 사람에게 알리는 것을 포함하여 아무것도 잊지 않습니다)
  • 신뢰할 수 있습니다 (인간과는 달리 실수가 없습니다!).

2-4 주마다 작업 소프트웨어를 제공 할 민첩한 환경에서는 1 팀에서도 확실히 가치가 있습니다.

CI는 무언가를 확인하는 것을 잊어 버린 경우 (빌드가 깨질 것이기 때문에) 솔로 개발자에게 혜택을줍니다. 그러나 다른 개발자가 없을 때 그것의 통합 값이 줄어 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top