많은 검색을 수행했지만 문제점에 맞는 솔루션을 찾을 수 없습니다.CodeIgniter 프로젝트의 빌드 및 배포 워크 플로
나는 내 프로젝트에 내 개발 워크 플로우이 Phing을 사용하여 개선 하고 싶습니다. 현재의 워크 플로가 너무 간단하고 실패하기 쉽습니다.
기계 : 나의 현재 상황은 다음과 같다
- 데브 : 내 기계와 개발 환경을 제공합니다.
- 테스트 : 테스트 및 VCS 서버. 프로젝트가 출시 준비가되면 테스트를 위해이 머신에 "배치"되고 코드는이 머신의 Git 중앙 저장소에도 푸시됩니다.
- 생산 : 프로젝트가 생산 준비가되면이 시스템에 "배치"됩니다.
현재 "배포"프로세스 :
변화가 feature
지점에서 내 컴퓨터에서 만들어진 응용 프로그램. 변경 내용이 출시 준비가되면 해당 컴퓨터를 develop
분기에 병합 한 다음 내 컴퓨터 작업 디렉토리 (로컬 또는 원격 VCS가 아닌)에서 테스트 서버 (물리적으로 동일합니다. VCS의 기계). 모든 것이 정상이면 develop
의 변경 사항을 master
분기로 병합 한 다음 테스트 서버와 동일한 방법으로프로덕션 서버에 "배포"합니다. 마지막으로 develop
및 master
분기의 로컬 변경 사항을 중앙 원격 리포지토리의 해당 지점으로 푸시합니다. 이러한 프로세스는 때로는 수동으로 또는 사용자 지정 셸 스크립트를 통해 수행됩니다.
문제점 :
- 수동으로 배포 프로세스는이 작업을 수행 할 수없는 전문적이고 안전한 방법입니다.
- 내 사용자 지정 셸 스크립트는 간단하며 (1) 배포해야하는 파일 목록을 수동으로 제공하고, (2) 다른 서버에 배포하기 위해 코드를 변경해야하며, (3) 롤백이 필요하지 않은 등의 몇 가지 문제가 있습니다. 작업 등.
- 테스트, 데이터베이스 마이그레이션, 캐시 및 로그 파일 정리, 권한 변경 등과 같은 일부 작업을 빌드 또는 배포 프로세스 중에 수행 할 수 없습니다.
- 즉,해야 할 것처럼 단순한 단일 작업이 아닙니다!
질문 :
- Phing이 빌드 도구입니다. 배포에도 사용할 수 있습니까?
- 필자는 응용 프로그램 코드가 각각 '테스트'및 '프로덕션'서버에 대한 중앙 원격 저장소 (및 작업 디렉토리가 아닌)의 '개발'및 '마스터'분기에서 배치되어야한다고 생각합니다 . 이것이 올바른 방법입니까?
- 이전 질문을 고려하고 Phing을 사용하고 싶습니다. 어디에서 Phing을 설치해야합니까? 내 개발 기계 또는 테스트 기계에서?
'테스트'및 '생산'배포 전략에 더 익숙한 '조리법'은 무엇입니까?
케이스 A1 - 테스트 배포 (로컬 컴퓨터에서 실행)
(1) 시험 장치에 연결 (2) 클론을 웹 루트 폴더에 대한 중앙의 repo에서 지점을 '개발'(3) .git 디렉토리, 캐시 및 로그 파일 제거, (4) 일부 권한 변경, (5) 데이터베이스 스크립트 실행, (6) 현재 릴리스로의 심볼릭 링크 변경 및 (7) 웹 서버 재시작.케이스 A2 - 테스트 배포 케이스 A1에서
같은 단계 (시험기에서 실행).케이스 B1 - 생산 배포 (로컬 컴퓨터에서 실행이)
(1) 웹 루트 폴더에 중앙의 repo에서 (2) 클론 '마스터'지점, 기계를 produciton에 연결, (3)을 제거합니다. git 디렉토리, 캐시 및 로그 파일, (4) 일부 권한 변경, (5) 데이터베이스 스크립트 실행, (6) 현재 릴리스로의 심볼릭 링크 변경 및 (7) 웹 서버 재시작.케이스 B2 - 생산 배포 케이스 B1에서
같은 단계 (시험기에서 실행).
전체 프로젝트 또는 변경된 파일 만 배포해야합니까? 더 좋고 안전한 무엇이 있습니까?
- 테스트, 품질 보증 및 축소 도구를 실행하기 위해 개발 컴퓨터에 빌드 프로세스를 설치해야합니까? 아니면 테스트 서버에서 실행해야합니까?
- 배포 전략을 수동으로 실행하거나 서버에서 Git 후킹으로 실행해야합니까?