Git에서 모듈 정의 관리하기
여러 모듈 정의를 Git 저장소에서 관리하면 공동 작업, 풀 리퀘스트 검토와 CI 기반 검증 및 게시를 연결할 수 있습니다. 개별 사용자가 Apollo에 직접 모듈을 만들도록 운영한다면 Git 저장소가 필수는 아닙니다.
검토 기반 운영을 원하면 저장소의 승인 정책을 구성하고, 모든 사용자가 Apollo에서 직접 모듈을 만들 수 없도록 권한도 제한해야 합니다.
아래 명령은 현재 디렉터리에 apollo-cli 실행 파일이 있고 modules/에 정의 파일이 있는 예입니다. CLI 연결 설정은 설치와 인증을 따릅니다.
정의 검증과 게시
Module create는 새 모듈을 만들거나 같은 이름의 모듈을 갱신합니다.
게시하지 않고 수행할 작업을 확인하려면 다음과 같이 실행합니다.
./apollo-cli module create \
--module-definition-file ./modules/control-plane-module.yml \
--dry-run
검토한 정의는 다음 명령으로 게시합니다.
./apollo-cli module create \
--module-definition-file ./modules/control-plane-module.yml
디렉터리의 모든 모듈을 처리할 수도 있습니다. 정의가 바뀐 모듈에만 새 릴리스를 만듭니다.
./apollo-cli module create --module-directory ./modules --dry-run
./apollo-cli module create --module-directory ./modules
두 번째 명령은 실제 게시 작업입니다. 검증 명령과 게시 권한을 구분하여 CI에 배치합니다.
잠금 파일 생성
Module lock은 하위 모듈의 중첩을 펼친 정의를 만듭니다. 모든 배포 개체와 하위 모듈에서 필요한 변수까지 포함하므로 검토자가 최종 구성을 확인할 수 있습니다.
./apollo-cli module lock \
--module-definition-file ./modules/control-plane-module.yml
결과 파일은 정의 파일 이름에 .lock을 붙인 형태입니다. 위 예에서는 control-plane-module.yml.lock입니다.
최신 상태 검사
--verify는 기존 잠금 파일과 현재 정의로 생성될 파일을 비교합니다. 다르면 명령이 실패합니다.
./apollo-cli module lock --verify \
--module-definition-file ./modules/control-plane-module.yml
병합 전 필수 CI 검사로 사용하면 하위 모듈 변경의 효과까지 검토에 포함할 수 있습니다. 로컬 Git 훅에 연결할 수도 있지만 서버의 검토 정책을 대신하는 것으로 이해해서는 안 됩니다.
디렉터리 전체의 잠금 파일을 생성하거나 검사하려면 다음과 같이 실행합니다.
./apollo-cli module lock --module-directory ./modules
./apollo-cli module lock --verify --module-directory ./modules
하위 모듈 버전 갱신
Module update는 복합 모듈 정의 안의 하위 모듈 버전을 갱신합니다. 환경에 설치된 모듈을 직접 업데이트하는 명령과 다릅니다.
./apollo-cli module update \
--module-definition-file ./modules/example-composite-module.yml
./apollo-cli module lock \
--module-definition-file ./modules/example-composite-module.yml
예를 들어 하위 모듈 example-module-1의 0.1.0을 0.2.0으로, example-module-2의 0.1.0을 0.3.0으로 갱신할 수 있습니다. 실제 갱신 버전은 사용 가능한 버전에 따라 정해집니다. 갱신 뒤에는 잠금 파일도 다시 만들고 변경을 검토합니다.
같은 저장소의 정의를 local로 참조
하위 모듈 버전에 특정 버전 대신 local을 지정할 수 있습니다.
name: example-composite-module
submodules:
- name: backend-module
version: local
이 모드는 제공한 디렉터리의 모듈 정의를 사용하고 게시할 때 실제 버전으로 해석합니다. 하위 모듈 정의가 바뀌면 상위 복합 모듈의 새 버전도 생성하므로 상위 정의의 버전 문자열을 직접 갱신할 필요를 줄일 수 있습니다.
모든 관련 정의를 제공하기 위해 --module-directory를 사용합니다.
./apollo-cli module create --module-directory ./modules --dry-run
./apollo-cli module lock --module-directory ./modules
./apollo-cli module lock --verify --module-directory ./modules
검증과 검토를 마친 뒤 같은 디렉터리 대상으로 module create를 실행하면 게시합니다. 확정된 하위 모듈 버전을 따르는 방식과 저장소 안의 현재 정의를 함께 게시하는 방식의 차이를 명확히 해야 합니다.