문제

현재 상점 전체 제품을 포장하기위한 릴리스 프로세스를 자동화/개선하려고합니다. 현재 제품은 다음의 조합입니다.

  • Java 서버 측 코드베이스
  • XML 구성 및 응용 프로그램 파일
  • 관리자를위한 쉘 및 배치 스크립트
  • 정적으로 HTML 페이지를 제공했습니다
  • 그리고 다른 것들이 있지만 그게 대부분

모든 또는 대부분은 다양한 버전 정보가 포함되어 있으며 다양한 목적으로 사용됩니다. 릴리스 패키징 프로세스의 일부는 정보를 업데이트하기 위해 많은 발견, 그레 잉 및 Sed'ing (스크립트)을 수행하는 것이 포함됩니다. 제품을 포장하는이 접착제는 유기적이고 정시에 함께 자발적 인 것처럼 보이며 유지하기가 매우 끔찍합니다. 예를 들어, 일부 Java 메소드는 릴리스 시간 동안 날짜 객체를 생성하며, 인수는 컴파일러 검증없이 텍스트 교체로 업데이트됩니다.

"CVS, SVN, Ant 등을 사용한 실제 소프트웨어 (예 : XYZ의 기능을 사용하여이를 수행하기 위해 XYZ의 기능”을 피하고 일반적인 관행에 더 집중하고 싶기 때문에 사용하는 실제 소프트웨어의 예를 제공하지 않습니다. 문제에 대해 Shoddy Design을 비난하고 싶지만 다시 시작해야한다면 여전히 다양한 기술을 사용하여 컨벤션을 놓는 것 이상 으로이 작업을 처리하는 것이 가장 좋은 방법을 확신 할 수 없습니다.

내 질문은 다양한 기술, 파일 타입, 플랫폼 및 버전 제어 시스템에서 버전 정보를 유지하고 업데이트하기위한 모범 사례 또는 힌트 및 팁이 있습니까?

도움이 되었습니까?

해결책

실제로 Craig Angus의 답변을 완료하려면 여기의 경험 법칙은 일반 전달 파일에 메타 정보를 포함하지 마십시오, 그러나 해당 메타 데이터 (버전 번호, 출시일 등)를 하나 특수 파일 -릴리스에 포함 -.

이는 개발에서 상 동체, 사전 생산에 이르기까지 하나의 VCS (버전 제어 시스템) 도구를 사용할 때 도움이됩니다.
즉, 작업 공간을로드 할 때마다 (개발 또는 테스트 또는 프로덕션에 릴리스를 준비하기 위해) 모든 세부 사항을 제공하는 버전의 도구입니다.

배송 (패키지 파일 세트)을 준비 할 때 VCS 도구에 보관하려는 모든 메타 정보에 대해 요청하고 해당 파일 세트에 포함 된 특수 파일 자체에 작성해야합니다.

해당 배송은 외부 디렉토리 (작업 공간 외부)에 포장되어야하며 :

  • 공유 디렉토리 (또는 Maven 저장소)에 복사 한 경우 비공식 릴리스 (그러나 배송을 기다리는 옆집 팀을 돕기위한 빠른 포장. 그렇게하면 하루에 10 또는 20을 제공 할 수 있습니다. 문제가되지 않습니다. 쉽게 일회용 할 수 있습니다.

  • 공식 배송 역할을하기 위해 VCS로 가져 와서 쉽게 배포하기 위해서는 쉽게 배포되기 때문에 버전의 도구에 올바른 버전의 올바른 버전을 요청하는 것만으로도 배포되기 시작할 수 있습니다.

참고 : 방금 많은 상호 의존적 인 프로젝트에 주로 사용되는 릴리스 관리 프로세스를 설명했습니다. 하나의 작은 단일 프로젝트의 경우 VCS 도구에서 가져 오기를 건너 뛰고 다른 곳에 배송을 저장할 수 있습니다.

다른 팁

버전 번호를 포함하고 다른 구성 요소가 속성 파일을 참조하는 속성 파일을 만듭니다.

  • Java 파일은 속성을 참조 할 수 있습니다
  • XML은 포함 할 수 있습니까?
  • HTML은 JavaScript를 사용하여 HTML의 속성에서 버전 번호를 작성할 수 있습니다.
  • 쉘 스크립트는 파일에서 읽을 수 있습니다

Craig Angus의 것 외에도 사용 된 도구 버전이 포함되어 있습니다.

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