문제

내부 소프트웨어를 출시하는 방식을 재구성하려고합니다. 모든 코드 (PHP WebApps, 일부 Java 앱 및 Perl 스크립트)는 Subversion 리포지토리에 체크인하지만 분기 나 태그가 없으며 모든 것이 트렁크 (앱당 약 1-3 개발)에 체크됩니다. 프로덕션 Linux 서버에서 소프트웨어는 작동하는 SVN 사본에서 직접 실행됩니다 (실제로 대부분의 변경 사항도 발생합니다).

우리는 작은 앱이 많고 실행중인 시스템에 대한 작은 변경 사항이 많기 때문에 릴리스 엔지니어링을 수행 하고이 혼란을 정리할 수있는 매우 마른 또는 투명한 방법을 찾고 있습니다.

그런 이종 환경 (언어 별)에서 그렇게하는 데 도움이 될 수있는 도구가 있습니까? 아니면 올바른 방법 으로이 작업을 수행하는 방법이 있습니까?

그렇지 않으면 트렁크에서 전복 태그를 자동으로 생성 한 다음 해당 태그를 생산 서버에 체크 아웃하는 일부 릴리스 (Shell) 스크립트를 작성하는 것을 생각했습니다. 그러나 그것은 나에게도 일종의 해킹처럼 들린다.

감사,

haes.

도움이 되었습니까?

해결책

CI (Minimalist Batch 파일조차도)는 아무것도 아닌 CI (Minimalist Batch Files조차도)는 지속적인 통합입니다. 그러나 당신이 가지고있는 정책만큼이나 좋습니다. 파일은 실제로 '바이너리'또는 '분산 가능'이 아니기 때문에 릴리스를 표시하면 저장소에 태그가 표시되거나 어딘가에 전복 개정 번호를 보관해야 할 수도 있습니다. 필요한 중요한 정책은 필요할 때마다 릴리스를 재구성 할 수 있다는 것입니다. 따라서 현재 및 이전 릴리스를 비교하거나 문제가 발생하면 이전 릴리스로 돌아갈 수 있습니다. SVN에서 태그를 만드는 '오버 헤드'에 대해 걱정하지 마십시오. 매우 효율적입니다.

전복 태그를 수행하는 릴리스 스크립트가 잘 들립니다. CI 구현 (이질성이 약간 더 많은 구성 오버 헤드가 필요하지만 이질적인 작업에 이상적이므로 CruiseControl을 권장합니다). 태그가있을 정도로 충분합니다.

나는 릴리스 서버에 자동으로 배포하지 않았다. '스테이징 영역'( '야간 빌드', '베타 테스트'라고 부르는 것이 더 좋습니다. 프로덕션 서버에 롤아웃하기에 충분하다고 판단하기 전에 사용자가이를 강화하게하십시오. 그리고 이전 버전으로 롤백 할 수있는 정책이있는 한, 나쁜 롤아웃 가능성을 완화했습니다.

프로덕션 서버에 대한 자동 확인은 유일한 'Hackish'부분입니다. 자동 체크 아웃, 테스트, 태그, 베타 배포는 충분히 매끄 럽습니다. 그러나 생산에 대한 롤아웃에는 쉬운 버튼이 없어야합니다.

다른 팁

태그와 가지를 사용하십시오. 개발주기의 일부로 만드십시오. "STABLE-1.0"브랜치를 업데이트하면 변경 사항을 테스트하고 "Release-1.0.5"태그를 표시하면 서버의 "SVN 스위치"를 새 태그로 간단히 수행합니다. 테스트를 받았음에도 불구하고 작동하지 않았습니까? 뒤로 바꾸고 무엇이 잘못되었는지 알아 내십시오.

그러나, 전복의 분기는 최소한 사전 버전 1.5가 될 수 있습니다. 귀하 또는 귀하의 개발자가 지점에 경험이없는 경우 처음에는 약간의 번거 로움 및/또는 실수를 기대하십시오. 그러나 코드가없는 한 코드를 잃어 버리지 않아야합니다 (최악의 경우 병합하기가 어렵습니다).

개발자는 실제로 분기 사용법을 배워야합니다. 릴리스 엔지니어링뿐만 아니라 다양한 목적에 매우 유용 할 수 있습니다.

하다 ~ 아니다 프로덕션 서버에서 코드를 자동으로 전환합니다. 누군가가 실수로 잘못된 버튼을 누를 수 있습니다. 생산 업데이트는 항상주의해서 수행해야합니다. 새 태그를 추가하기위한 스크립트는 IMHO, 단순성으로 인해 불필요하지만 마일리지는 다를 수 있습니다.

마지막으로, 누군가가 생산 서버를 변경할 수 있도록 허용하지 마십시오. 충돌을 일으킬 수 있으며 해결하는 데 시간이 걸리는 경향이 있습니다. 말할 것도없이, 그것은 다른 워크 스테이션에서 주어진 릴리스를 재현 할 수있는 능력을 파괴합니다 (여기서 잘 작동하십시오! 서버에서는 왜? 흠).

일부 연속 통합 서버는 이런 종류의 일을합니다. 허드슨 강, 예를 들어, 전복 통합이 있습니다. 태그, 테스트 실행 및 배포 할 수 있습니다.

나는 허드슨을 사용할 것입니다. SVN (Ref Sblundy)에서 가져오고 태그를 붙이는 것 외에도 적절한 릴리스 관리에 유용 할 수 있습니다. 플러그인. F.Ex., 당신은 시도 할 수 있습니다 "홍보"를위한 플러그인 이 빌드는 제작에 배치하고 프로모션 된 빌드 자체와 다양한 버전의 변경/커밋 로그 목록을 유지합니다.

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