Git 프로덕션 / 스테이징 서버 워크 플로


108

현재 내 웹 사이트 (프로덕션 서버)에는 이미 많은 코드가 있습니다. 이제 프로젝트에 Git을 사용하고 팀을위한 스테이징 서버를 설정하려고합니다. 아무도 나에게 조언을 줄 수 있습니까?

내 마음 속의 그림은 다음과 같습니다.

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

제 질문은 어떻게 시작해야합니까?

내 마음 속에있는 몇 가지 단계는 다음과 같습니다.

  1. git init프로덕션 서버에서 수행 (안전합니까?)
  2. clone 프로덕션에서 스테이징 서버로의 저장소
  3. 개발자 clone는 스테이징에서 로컬 머신으로 저장소를
  4. push 변경 완료 후 스테이징 서버에 파일 전송
  5. 스테이징이 준비되면 push모든 것을 프로덕션으로

이 작업 흐름이 타당합니까, 아니면 더 나은 방법이 있습니까?

하나의 파일 만 변경하려면 어떻게해야합니까?

오리진 / 마스터는이 과정에서 그것과 관련이 있습니까 ?? 기원은 누구입니까? 나는 여러 기원을 갖게 될까요 ??

또한 branch이 경우 개발자는 언제 사용해야 합니까?

답변:


59

스테이징을 위해 프로덕션 및 개발 분기에만 마스터 분기를 사용하는 것이 좋습니다. 각 개발자는 새로운 기능을 추가하기 위해 로컬 브랜치를 생성 한 다음 개발 브랜치와 병합해야합니다. git을 처음 사용하는 경우 http://github.com/nvie/gitflow git 분기 모델을 설명하는 좋은 그림도 있습니다 -http://nvie.com/posts/a-successful-git- 분기 모델 /


이것이 더 나은 대답입니다. 나는 Git 분기의 개념에 익숙하지 않았습니다.
kayue

@곤충. 개발 브랜치-> 스테이징 시스템마스터 브랜치로 푸시-> 프로덕션 서버 로 더 자세히 설명하는 리소스에 대한 링크가 있습니까? 훌륭한 기사 A 성공적인 Git 분기 모델 은 분기 및 버전 관리에 대한 아주 좋은 개념을 언급하더라도 해당 부분을 언급하지 않습니다.
Edgar Alloro

19

귀하의 제안은 괜찮아 보이지만 개발자가 스테이징 서버로 직접 푸시하도록 허용하지 않습니다. 대신 통합 자는 브랜치를 신중하게 검토하고 기본 브랜치 (또는 bUg에서 제안한대로 git flow 모델을 사용하는 경우 개발 브랜치 )에 통합 해야합니다. * 같은 사람이 스테이징 서버로 푸시합니다.

* 통합 자 : " 그룹 프로젝트에서 통합 자 역할을하는 상당히 중심적인 사람이 다른 사람이 변경 한 내용을 받아 검토 및 통합하고 다른 사람이 사용할 수 있도록 결과를 게시합니다 ... "


1. 프로덕션 서버에서 git init 수행 (안전합니까?)

예, 안전하지만 물론이 저장소에 대해 매우 제한적인 권한을 설정해야합니다. curl웹 사이트 전체를 로컬 디스크 에 저장 하는 것부터 시작할 것입니다 .

2. 프로덕션에서 스테이징 서버로 리포지토리 복제

프로덕션 서버와 스테이징 서버 모두에서 분리 된 "중앙"저장소가 있어야합니다. 필요에 따라 복제 및 푸시 할 수 있습니다.

3. 개발자는 스테이징에서 로컬 머신으로 저장소를 복제합니다.

4. 변경 완료 후 스테이징 서버로 파일 푸시

5. 스테이징이 준비되면 모든 것을 프로덕션으로 푸시합니다.

"staging"을 "central"으로 바꾸면 괜찮다고 생각합니다. 그러나 더 큰 문제는 bUg가 지적한 것처럼 분기 및 병합 작업 방법입니다.


10
1 : 프로덕션에서 Git 저장소를 안전하게 만들려면 내부에 "Deny All"이 포함 된 .htaccess 파일을 추가해야합니다.
kayue

2
2 : Felixyz의 "Central"리포지토리는 베어 리포지토리를 가리 킵니다. --bare 명령을 사용하여 베어 리포지토리를 만듭니다.
kayue

1
@keyue 1 : 더 좋은 방법은 .gitignore , .gitattributes.git 폴더 를 보호하기 위해 RedirectMatch 404 /\.git프로덕션 .htaccess 에 추가 하는 것 입니다.
Leo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.