문제

조엘 있는 것 같습니다 매일 빌드를 높이 생각하십시오. 전통적인 컴파일 된 응용 프로그램의 경우 분명히 그의 정당성을 볼 수 있지만, 이것이 웹 개발과 어떻게 유사합니까?

제가 요구하는 프로젝트에 대해 약간 - Django (Python) 웹 앱에서 작업하는 2 명의 개발자가 있습니다. 1 SVN 저장소가 있습니다. 각 개발자는 현지에서 실행되는 MySQL의 체크 아웃 및 자체 사본을 유지 관리합니다 (Django에 익숙하지 않은 경우 자체 테스트 서버와 함께 ASP 앱이 Visual Studio 내부에서 실행할 수있는 방식). 개발 및 테스트는 로컬로 수행 된 다음 저장소에 다시 커밋됩니다. 웹 사이트의 실제 작업 사본은 SVN 체크 아웃입니다 (SVN 수출에 대해 알고 있으며 너무 오래 걸립니다). 우리가 '빌드'에 가장 가까운 것은 작업 사본에서 SVN 업데이트를 실행하고 Django 비트 ( 'manage.py syncdb')를 수행하고 검색 엔진 캐시 (SOLR)를 업데이트 한 다음 Apache를 다시 시작하는 배치 파일입니다.

내가 보지 못하는 것은 웹 앱과 평행이라고 생각합니다.

'야간 빌드'가있는 소스 제어 웹 앱을 수행하고 있습니까? 그렇다면 어떻게 생겼습니까?

도움이 되었습니까?

해결책

Django 테스트 프레임 워크를 통해 야간 빌드를 통해 모든 Django 장치 테스트를 쉽게 실행할 수 있습니다.

그것이 우리가하는 일입니다.

또한 Django 기능을 활용하지 않는 일반적인 단위 테스트도 있습니다.

Python (및 Django)은 컴파일 된 언어가하는 야간 컴파일/링크/단위 테스트의 종류가 필요하지 않지만 여전히 "빌드를 깨지 말라"라는 매일의 징계의 혜택을 누릴 수 있습니다. 그리고 당신이 소유 한 모든 것을 테스트하는 단위의 일일주기는 좋은 것입니다.

우리는 Python 2.6 (우리에게 완벽하게 작동)을보고 단위 테스트를 -3 우리가 사용하고있는 더 이상 사용되지 않은 기능을 볼 수있는 옵션. 전체 단위 테스트 제품군을 사용하면 Python 3 호환성에 대한 변경이 빌드가 깨지지 않을 것입니다. 그리고 밤에 그들을 달리는 것은 우리가 확실한 우리는 올바르게 리팩토링합니다.

다른 팁

연속 통합은 주변에 올바른 프로세스가있는 경우 유용합니다. JetBrains의 TeamCity는 친숙 함을 구축하려면 훌륭한 출발점입니다.

http://www.jetbrains.com/teamcity/index.html

여기에는 Django와 직접 관련된 훌륭한 기사가 있습니다.

http://www.ajaxline.com/continuous-integration-in-django-project

이것이 당신을 시작하게되기를 바랍니다.

동적 언어로 내장 된 웹 애플리케이션에는 "컴파일"단계가 필요하지 않을 수 있지만 앱을 실행하는 데 여전히 많은 "빌드"단계가있을 수 있습니다. 빌드 스크립트는 종속성을 설치하거나 업그레이드하고 데이터베이스 마이그레이션을 수행 한 다음 테스트 스위트를 실행하여 코드가 리포지토리에서 실제 체크인 버전을 "청소"하는지 확인할 수 있습니다. 또는 코드 사본을 테스트 서버에 배포 한 다음 핵심 사이트 기능이 여전히 작동하는지 확인하기 위해 새 버전에 대해 셀레늄 통합 테스트 세트를 실행할 수 있습니다.

지속적인 통합 주제에 대한 독서를하는 데 도움이 될 수 있습니다. 매우 WebApp Dev 팀을위한 유용한 연습. 개발 프로세스가 빠르게 진행되고 민첩해질수록 자동화 된 테스트 및 품질 메트릭의 정기적 인 입력이 더 필요합니다.

그것이 실제로 당신과 다른 개발자가 일하는 다른 개발자라면, 야간 빌드는 아마도 당신에게 많은 것을주지 않을 것입니다.

야간 빌드와 동등한 웹 앱은 스테이징 사이트 (야간에 제작할 수 있음)라고 말합니다.

야간이 준비 영역으로 구축되는 경우 실제 배당금을 지불하기 시작하는 경우 고객, 프로젝트 관리자 및 QA 사람들이 최신 상태이지만 비교적 안정적인 버전의 앱을 볼 수있는 경우입니다. 개발자 샌드 박스 (적어도 나와 같은 경우)는 다음 기능을 구현하려고 시도하는 물건을 깨뜨릴 때 사용할 수없는 상태에서 많은 시간을 소비 할 것입니다. 따라서 일반적인 문제는 QA 담당자가 버그가 고정되어 있는지 확인하거나 PM이 일부 계획된 기능이 올바르게 구현되었는지 확인하려고하거나 고객이 귀하가 관리하는 문제를 진전시키는 것을 확인하려고합니다. 에 대한. 개발자 샌드 박스에만 액세스 할 수있는 경우, 샌드 박스를 볼 때 샌드 박스 버전이 실행되지 않을 가능성이 높습니다. 다른 것 때문에 깨진 상태에서. 그것은 실제로 팀 전체를 느리게하고 많은 시간을 낭비합니다.

프로덕션 버전을 자동으로 업데이트하기 때문에 스테이징 설정이없는 것 같습니다. 당신이 있다면 괜찮을 수도 있습니다 방법 저 (그리고 대부분의 개발자라고 생각하는 것)보다 더 신중하고 징계를 받고 있으며 완전히 방탄이 아닌 것을 저지르지 않습니다. 개인적으로, 나는 제작이 제작에 도달하기 전에 나 이외의 다른 사람에 의해 최소한의 QA를 통해 내 작업을 만들었 음을 확인하고 싶습니다.

결론적으로, 내가 일하는 곳 설정 :

  • 각 개발자는 자신의 샌드 박스를 로컬로 운영합니다 (당신과 동일)
  • Dev 서버에는 Cronjob에서 밤마다 업데이트되는 "일반적인"스테이징 샌드 박스가 있습니다. PMS, 클라이언트 및 QA는 그곳으로 이동합니다. 그들은 개발자 샌드 박스에 직접 액세스 할 수 없습니다.
  • 생산에 자동화 된 (수동으로 시작되었지만) 배포가 있습니다. 개발자 나 PM은 일이 충분히 Qa가 충분하고 안정적이고 안전하다고 느낄 때 생산을 "밀어"할 수 있습니다.

나는 유일한 단점 (야간 스테이징 빌드를 설정하는 약간의 여분의 오버 헤드 외에도)은 버그 검증에서 턴어라운드의 날을 만듭니다. 즉, QA는 소프트웨어의 버그를보고 (그 날의 야간 빌드를 바탕으로) 개발자가 버그를 수정하고 커밋 한 다음 QA는 버그가 실제로 고정되어 있는지 확인하기 위해 다음날 빌드까지 기다려야합니다. 모든 사람이 일정에 영향을 미치지 않을 정도로 충분한 일이 있기 때문에 일반적으로 그다지 문제가되지 않습니다. 이정표가 다가오고 있고 우리가 기능이 큰 버그 픽스 전용 모드에있을 때, 스테이징 사이트의 더 빈번한 수동 업데이트를 수행 할 것입니다.

나는 큰 성공을 거두었습니다 허드슨 강 지속적인 통합을 위해. Python과 함께 Hudson 사용에 대한 자세한 내용 레졸로.

몇 달 전, 몇 가지 기사가 묘사되었습니다 지속적인 배포 온라인으로 상당히 저어주었습니다. IMVU 그것들에 대한 세부 사항이 있습니다 하루에 최대 5 번 배포하십시오.

빈번한 빌드의 배후에있는 전체 아이디어 (지속적인 통합에서와 같이 야간 또는 더 자주)는 문제의 도입과 탐지 사이의 경과 시간을 줄이기 위해 즉각적인 피드백을 얻는 것입니다. 따라서 컴파일을 통해 피드백을 생성 할 수있는 경우에만 유용합니다. (이상적으로 자동화 된) 테스트, 품질 검사 등의 피드백이 없으면 실제 점이 없습니다.

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