솔로 프로젝트에서 지속적인 통합 도구는 어떤 이점을 제공합니까?


18

단독 프로젝트를 수행하는 경우 CI 도구를 사용하여 리포지토리에서 빌드 하시겠습니까? 나는 팀 환경에서 Hudson과 Cruise Control을 사용했는데, 누군가가 체크인하는 즉시 빌드하는 것이 필수적입니다.

버전 제어의 가치는 여전히 분명하다고 생각하지만 모든 커밋 후에 로컬 컴퓨터에서 빌드 한 것처럼 보지 않고 다른 사람이 커밋하지 않고 빌드해야합니까?

답변:


12

글쎄, 나는 프로젝트에서 지속적인 통합 도구를 사용할 계획이고 나는 독특한 개발자입니다. 필요가 온다

  1. 하나의 목표는 크로스 플랫폼으로 만드는 것입니다. 통합 도구를 사용하면 통합 저장소 (또는 중앙 저장소 또는 변경 사항)에서 변경 사항을 푸시 한 후 여러 플랫폼에서 앱을 암시 적 (기본) 확인하는 데 도움이됩니다 정식으로 사용됩니다).
  2. 이 프로젝트는 장기적으로 구축되었으므로 나중에 팀과 협력해야합니다. 2012 년까지는 누구도 채용 할 계획이 없기 때문에 지속적인 통합은 1이 우선 순위가 될 때까지 기다릴 수 있습니다.

크로스 플랫폼 및 팀워크 준비 외에는 필요가 없습니다. 가장 중요한 것은 일종의 소스 제어 소프트웨어를 보유하고 백업을 유지하기위한 여러 저장소를 갖는 것입니다. 필요할 때 주변에 빌드 도구를 설정하는 데 도움이됩니다.

빌드 타이밍에 대해서는 Mercurial을 사용하고 팀워크 저장소가 아닌 통합 저장소를 설정하고 있습니다. 따라서 통합 시스템을 구축 할 때가 될 때까지 팀워크 리포지토리의 변경 사항을 푸시하십시오. 그런 다음 팀워크 리포지토리에서 통합 리포지토리로 푸시하면 빌드가 시작됩니다. 그런 다음 통합 리포지토리에서 팀워크 리포지토리를 매일 한 번씩 가져 오는 스크립트도 추가합니다.

여기서 나는 거의 하루 종일 내 프로젝트에서 일한다고 가정하지만 항상 사실은 아닙니다. 얼마나 자주 빌드해야 하는지를 기준으로 빌드 타이밍을 설정해야합니다. 이전에 근무했던 게임 회사에서 우리는 CruiseControle을 사용했으며 매 시간마다 전체 빌드를 구축했습니다. 필요한 경우 언제든지 빌드를 강제 할 수도 있습니다.

가정 프로젝트의 경우 하루에 한 번 이미 "종종"있을 수 있습니다. 주요 요구 사항은 사용자가 빌드를 강제로 쉽게 시작할 수 있도록하는 것입니다.


20

잠시 숙고 한 후에는 팀보다 솔로 개발자에게 중요 할 것입니다.

가장 기본적인 수준에서 CI 서버는 커밋 된 소스에서 처음부터 응용 프로그램을 빌드 할 수 있음을 보여줍니다. 적절한 테스트 세트와 함께 처음부터 빌드하고 실행할 수 있음을 보여줍니다.

내가하려고하는 것 중 하나는 내 빌드에 배포 가능한 패키지가 포함되어 있는지 확인하는 것이므로 배포 할 대상 (깨끗하고 알려진 상태 / 버전에서)을 얻을 수 있음을 알고 있습니다.

실제로 File | New Project를 수행 할 때는 리포지토리에 추가하거나 추가하고 CI 빌드 스크립트 및 배포 설정을 설정해야합니다 (xcopy 배포를 위해 파일 더미 만 압축하는 경우에도 해당)


부록 (2016) – 요즘 CI 시스템은 배포 프로세스의 필수 요소가 될 것이므로 그 가치가 높아져서 프로젝트 없이는 프로젝트를 실행하지 않을 것입니다. 자동화 된 푸시 버튼 배포는 프로세스에서 많은 스트레스를 받고 어떤 식 으로든 빌드 서버를 형성하거나 구성하는 것이 필수적입니다.


10
당신은 문제가 '내 컴퓨터에서 작업'의 위험에 더 있습니다 솔로 개발자로 일
JK.

이유가없는 다운 보트는 도움이되지 않습니다. 위의 문제점은 무엇입니까?
Murph

+1, 나는 매우 비슷한 상황에 직면하고 있습니다. 하나의 개발자 만 각 프로젝트를 관리 할 수있을 정도로 작은 프로젝트와 팀이 하나의 큰 프로젝트를 관리합니다. 소규모 프로젝트의 경우 특정 소스 코드 파일을 체크 인하는 것을 잊어 버리는 문제가 종종 발생합니다. 팀 중 하나가 소스 제어에 새 파일을 추가하는 것을 잊어 버린 경우 다른 프로젝트는 즉시 이에 대해 불평하기 때문에 큰 프로젝트의 경우 이는 결코 문제가되지 않습니다. 작은 프로젝트부터 시작하여 다음 달에 CI 서버를 설치할 예정입니다.
Doc Brown

7

내가 유일하게 커밋하는 경우 실제로 커밋 하기 전에 빌드하고 테스트 합니다. 나는 보통 다음과 같은 makefile 대상을 사용합니다 :

make sense

구성, 빌드, 모든 테스트 (valgrind 인식), 보푸라기 등을 실행합니다. 내가 유일하게 추진할 것이므로 허드슨과 같은 힘이 필요하지 않습니다.

또한 주 리포지토리에 공급하는 여러 분기가있는 환경에서 커밋 또는 푸시하기 전에 항상 풀을 따르는 경우 CI 서버가 약간 과도하게 종료 될 수 있습니다. 금요일 마지막 빌드에서 파산 한 피자의 저자가 피자를 구입한다는 일반적으로 잘 쓰여진 규칙은 일반적으로 물건을 매우 매끄럽게 운영합니다 :)

프로젝트가 자신의 리더가있는 하위 시스템으로 명확하게 구분되는 상황에 처하게되면 실제로 Hudson과 같은 것을 사용해야합니다. 누군가가 로컬에서 테스트하고 다른 하위 시스템과의 경쟁에서 패배하여 유독 한 것을 밀어 낼 수 있습니다.

또한 빠르게 움직이는 프로젝트의 포크를 유지하는 경우 (예를 들어 Linux 커널에 대한 자체 패치 세트) 해당 프로젝트에서 '솔로'인 경우에도 Hudson과 같은 것을 사용하는 것이 좋습니다. 메인 라인에서 직접 분기 / 리베이스하는 경우에 특히 그렇습니다.


11
'센스'대상을 코딩해야합니다 make: don't know how to make sense. Stop. 그렇지 않으면 얻을 수 있습니다. 아아!
Alan Pearce

@Alan-그들은 이후 버전 (최소한 GNU make)에서 우리의 재미를 모두 망쳤습니다. 이제 "make : *** 대상을 '센스'로 만드는 규칙이 없습니다. 그만하십시오."
Tim Post

1
그런 다음 FreeBSD로 전환하십시오. :)
Alan Pearce

1

나는 이것이 단지 좋은 보너스라고 말하지는 않을 것입니다. 저희가 솔로 아티스트를 위해 고품질 소프트웨어 엔지니어링에 필수적이라고 말하고 싶습니다. 대부분의 사람들은 나중에 고칠 수있을 정도로 쉽다고 생각하면 급히 품질 기준을 약간 떨어 뜨릴 것입니다. 해당 상태에서 소프트웨어를 커밋하면 소스 제어에 가치가없는 코드베이스가 저장됩니다.

CI를 올바르게 준수하면 (즉, 테스트를 건너 뛰지 않고 커밋 할 때마다 빌드해야 함) CI는 어쨌든 커밋 할 때보 다 더 높은 품질 표준을 준수하도록합니다.


CI 서버의 오버 헤드없이 성공적인 사내 데이터베이스 응용 프로그램을 실행할 수 있습니다. 일부 영역에서는 약간의 훈련이 필요하지만 모든 것을 설정하는 오버 헤드보다 적습니다.
wobbily_col

0

대기 시간을 단축하여 모든 것이 여전히 잘 진행되고 있는지 확인하는 것이 중요합니다. IDE가 저장하자마자 물건을 컴파일하도록 할 수는 있지만 자동으로 단위 테스트를 실행하지는 않으므로 CI 서버에서 단위 테스트 및 테스트 케이스 적용 범위 보고서 및 기타 코드의 품질 분석을 즉시 실행합니다. 밀어 넣습니다.

내가해야 할 유일한 트리거는 현재 변경 사항을 버전 제어로 푸시하고 코딩으로 돌아갈 수 있습니다. 그리고 코딩에 대해 생각하고있는 동안 CI 시스템은 뇌가 약해졌을 때 한 번에 살펴볼 긴 바람 품질 보고서를 작성하는 데 바쁘게 움직입니다.

동일한 랩톱에 별도의 VMWare 시스템이 있으며 코드를 빌드합니다.이 작업을 수행하려면 Turnkey Linux VMWare 이미지를 가져와 apt-get을 사용하여 jenkins를 설치하고 약간의 구성 변경을 수행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.