2012-09-02 3 views
3

나는 백업을 처리하기 위해 cron 작업을 사용하는 Magento 사이트를 코딩했으나 이전 버전의 사이트로 되돌리려 고 시도 할 때 약간 거추장 스럽다. 필자는 기본적으로 백업을 파헤쳐 수동으로 되돌려 놓아야합니다. 나는 git에 대해 읽었으며 개발 사이클을 통해 변경 사항을 문서화하고 몇 가지 명령으로 변경 한 특정 작업으로 되돌릴 수있는 아이디어를 좋아한다.Magento 워크 플로우 프로세스 (자식)

현재 내 로컬 저장소 (마스터, 개발)에 두 개의 지점이 있습니다. 나는 본질적으로 개발 브랜치에서 모든 개발을하고, 모든 작업을 마스터 브랜치에 병합 할 때 백업 작업을 위해 gitbucket 레포로 작업을 밀어 넣을 뿐이다. 원격 저장소.

나는이 소리가 내 시나리오에 충분하거나 아무도 Magento와 함께 git를 사용하는 한 사람의 상점에서 좋은 워크 플로 프로세스를 추천 할 수 있습니까? 감사.

답변

11

Magento 개발을 위해 GitFlow 모델을 사용합니다. 그것은 당신과 비슷하지만 준비 사이트를위한 추가 분기가 있습니다. 개발 업무가 항상 안정적으로 이루어 지도록 별도의 지점에서 대규모 개발 작업/수정 작업을 완료합니다. 우리의 스테이징 사이트는 스테이징 분기를 체크 아웃하고 프로덕션 사이트에 마스터 분기를 체크 아웃 한 git repo입니다. 스테이징에 변경 사항을 적용 할 준비가되면 로컬 시스템에서 스테이징으로 병합하고 중앙 git 저장소로 이동 한 다음 서버를 당깁니다. 잘 작동하지만,/etc/local.xml 응용 프로그램은 각 환경마다 다르기 때문에주의해야합니다. 당신은 또한 미디어와 var 폴더가 git repo에서 끝나지 않도록해야 할 것입니다.

Github publishes a .gitignore Magento에 대해서는 문제가 있지만 모든 Magento 코어 파일은 제외됩니다. 결국 변경 사항 만 포함하고 배포 가능한 항목은 포함하지 않는 깨끗한 저장소로 끝납니다. 기본적으로 media var 및 app/etc/local.xml을 제외하는 훨씬 단순한 .gitignore를 사용합니다. 일반적으로 단일 원격 (예 : Github)을 사용하고 거기에서 배포합니다.

우리가 배포 할 서버에는 일반적으로 쉘 액세스와 자식이 설치되어 있으므로 배포는 일반 원격에서 git pull (또는 & 병합 가져 오기)을 실행하고 실행하는 문제입니다.

우리는 자식 사이트에서 별도의 지점으로 스테이징 사이트를 유지 관리하고 동일한 방식으로 배포합니다. 따라서 우리의 프로세스는 feature branch에서 개발하고 완료되면 "개발"로 병합하는 것처럼 보입니다. 통합 테스트가 완료되면 "개발"(또는 체리 선택 변경)을 "준비"및 병합으로 병합하십시오. 프로덕션 준비가되면 "준비"(또는 체리 선택 개별 변경)를 "마스터"분기에 병합하십시오. 이것은 기본적으로 GitFlow이지만 "릴리스 준비"분기는 오래되었습니다.

코멘트에서 링크 된 Sonassi tutorial은 미디어 링크를 심볼릭 링크 할 때 문제가되는데, 프로덕션에서 미디어 파일을 삭제하면 준비가 끊어진 링크가 표시되며 그 반대의 경우도 마찬가지입니다. 이 두 가지를 링크하는 대신 git에서 준비 코드를 업데이트하지만 그렇지 않으면 준비 및 제작 사이트를 별도로 실행합니다. 준비 단계에서 새로운 데이터가 필요한 경우 어떤 이유로 든 프로덕션 미디어 및 데이터베이스의 복사본을 가져 와서 준비 사이트로 복원합니다.

Gitflow 모델은 릴리스 태그에 버전 번호를 사용합니다. 팀에서 릴리스에 대해 동의 한 버전 번호가 있으면 사용합니다. 그렇지 않으면 일종의 마일스톤 계획이나 스프린트 시스템을 사용하고 있다면 그렇게 할 수 있습니다. 다른 모든 것이 실패하면 배포가 발생한 날짜/시간을 사용합니다. 예 :

git tag -a deployed-`date +%Y%m%d-%H%M` -m "Code release at `date`" 
+0

의견에 감사드립니다. 저는이 .gitignore 파일 https : // github을 사용하고 있습니다.co.kr/github/gitignore/blob/master/Magento.gitignore 어쩌면 준비 분기도 구현할 것입니다. 해당 지사에서 테스트 할 준비가되었을 때 밀어 넣는 리모컨으로 별도의 서버를 설치 했습니까? 또한 파일을 프로덕션으로 복사하는 방법은 무엇입니까? 생산 기계에 자식이 설치되어 있지 않아 원격으로 설정할 수 없습니다. 나는 당신이 망할 훅을 할 수 있지만 너무 많이 읽지는 ​​않았다는 것을 안다. – ringerce

+0

git hook을 통해 FTP 배치를 설정하는 방법을 안내하는 안내서가 있지만 그와 같은 설정은 사용하지 않았습니다. –

+0

감사합니다. 너는 큰 도움이되었다. 프로덕션 서버에 git을 설치했습니다. 이제 프로덕션 서버로 ssh하고 최신 안정 트렁크 (마스터 브랜치)를 프로덕션 서버로 가져와 향후 릴리스에서 프로세스를 반복해야합니까? – ringerce

관련 문제