2011-01-27 1 views
2

우리는 많은 프로젝트 그룹을 가지고 있습니다. 별도의 maven 프로젝트를 호출하는 ant 대상을 사용하여 빌드합니다.스냅 샷을 빌드하기위한 인수 대 로컬로 코드를 컴파일하는 인수는 무엇입니까?

동료 개발자가 내가 작업하고있는 프로젝트와 별도의 코드에 코드를 커밋 할 때마다 코드를 업데이트하고 최신 빌드에 맞춰 코드를 로컬로 다시 빌드해야합니다. 이는 코드 변경을 테스트하기 위해 매 30-60 분 사이에 대기하는 것을 포함합니다.

모든 프로젝트를 '스냅 샷'병에서 실행하고 싶습니다. 따라서 코드 변경이 발생할 때마다 로컬 빌드는 최신 스냅 샷을 다운로드해야합니다.

연속적인 통합 서버가 프로젝트를 빌드하는 데 1 시간 이상이 걸리므로 우리의 스냅 샷은 최신 코드보다 한 시간 늦을 수 있으므로 코드를 빌드하면 그 코드가 컴파일 될 보증되지 않습니다 최신.

일반적인 우려 사항입니까, 그렇다면 어떻게 완화시킬 수 있습니까? 스냅 샷 사용으로 전환 할 때 얻게 된 가치에 대해 팀원이 할 수있는 좋은 주장이 있습니까?

+0

저는 30-60 분의 빌드주기를 가지고 있다고 약간 걱정하고 있습니다. Maven을 사용하여 거대한 기존 시스템 (Ant를 사용하는 시스템)을 구축했으며 총 시간은 약 7-10 분입니다. 나는 아마도 DB와 같은 실제 외부 종속성을 사용하여 테스트가 너무 많은 작업을 수행하고있을 것이라고 추측합니다. 더 빠른 피드백주기를 얻으려면 빌드 시간을 길게 처리하는 것이 좋습니다. 당신이 이것을 시도한다면 전체 Maven 종속성 문제는 사라질 수 있습니다. –

+0

DB 연결없이 로컬에서 실행되는 빌드에서이 문제가 발생합니다. 내 인상은 프로젝트의 모든 단일 코드 줄을 다시 컴파일하기 때문입니다 ... – Cuga

답변

1

구성 요소의 인터페이스를 변경하는 사람도 인터페이스에 따라 모든 구성 요소가 작동하는지 확인해야합니다. 즉, 단일 커밋에는 API 변경, 구현 변경 및 모든 다른 구성 요소를 빌드하는 데 필요한 변경이 포함됩니다. 새 버전에 대한

이렇게하면 호환되지 않는 API 변경 사항에 대해 오랫동안 생각해보고 더 이상 컴파일하지 않는 구성 요소를 커밋 할 때 버전 컨트롤에서 명백한 충돌이 발생합니다.

내부 정책에 따라 새 API를 도입 할 수 있도록 허용하면서 기능을 그대로 유지하면서 이전 버전을 더 이상 사용하지 않는 것으로 표시 할 수도 있습니다. 그러나 나는 그것이 동료 개발자들에게는 다소 무례한 것으로 알고 있습니다.

0

코드가 최신 상태인지 확인할 때 몇 시간 오래된 코드가 실제로 거래 차단기가됩니까? 중요한 변경이나 재 작성이 없다면 한 가지 변경이 다른 모든 것을 무너 뜨리는 것을 볼 수 없습니다.

나는 현재 상황이 약 30-60 분이 걸릴 각 빌드에 대한 모든 종속성을 컴파일하는 것입니다. 가장 최근에 사용 가능한 빌드와 비교하여 프로젝트를 컴파일하는 것이 좋지 않습니까? 5-10 분 정도 걸릴 것으로 예상되고 프로그래밍으로 넘어 갑니 까?

어쨌든 중요한 변화가 어찌 될지 모르겠습니다. 한 시간 오래된 빌드 종속성에 대해 코드를 체크인 할 때 종속성이 코드를 손상시키는 위치로 변경되면 코드가 여전히 손상됩니다. 수정이 일어 났을 때 주위를 변화하고 있습니다.

관련 문제