CLI로 번들 다운로드와 업로드
Apollo CLI는 번들(Bundle) 전체와 개별 청크를 다운로드하거나 업로드하고, 받은 청크를 하나의 아카이브로 조립할 수 있습니다. 최소 버전은 0.425.0입니다. 허브 홈의 Quick Actions → Download Apollo CLI에서 해당 허브용 바이너리를 받고 ./apollo-cli version으로 버전을 확인합니다. 명령별 도움말은 -h를 사용합니다.
아래 명령은 사용 형식을 보여 주는 예시입니다. BUNDLE_RID, PIPELINE_ID, BUNDLE_VERSION과 인증 환경 변수는 실제 작업 대상으로 지정해야 합니다. 다운로드에는 원본 허브, 업로드에는 대상 허브의 URL과 토큰을 사용합니다.
전체 번들 다운로드
번들 RID는 파이프라인 번들 페이지 주소의 workspace/apollo/export/app/pipelines/{pipeline-id}/bundles/{bundle-rid} 부분에서 확인합니다.
./apollo-cli bundle download "$BUNDLE_RID" \
--apollo-token "$APOLLO_TOKEN" \
--apollo-url "$APOLLO_URL"
출력 파일을 별도로 지정하지 않으면 pipeline_id-bundle_version.tar로 저장합니다. 기본 출력은 비압축 .tar입니다. --gzip-compressed를 추가하면 .tar.gz로 압축하지만 조립 시간이 크게 늘어날 수 있습니다.
청크가 없는 번들은 그대로 다운로드합니다. 청크가 있으면 기본적으로 모든 청크를 받아 하나의 번들로 조립합니다. 각 청크를 출력 아카이브로 스트리밍하여 디스크에 한 번만 기록하므로 디스크 사용량이 작지만, 하나의 청크라도 다운로드에 실패하면 전체 명령이 실패합니다.
| 옵션 | 동작 |
|---|---|
--chunks-only | 청크를 다운로드하되 전체 번들로 조립하지 않습니다. |
--index-only | 번들 인덱스와 referrer를 다운로드합니다. |
--generate-urls | 번들 다운로드 URL을 생성합니다. |
--retry | 청크가 없는 번들의 다운로드 실패 재시도 최대 횟수를 지정합니다. |
--chunk-ids | 지정한 청크 번호만 다운로드합니다. |
실패한 청크 재다운로드
청크 번들에는 실패한 청크의 자동 재시도를 지원하지 않습니다. 오류 메시지가 다운로드하지 못한 번호와 성공한 번호를 구분하여 표시합니다.
Error: failed to download all chunks, chunk numbers not downloaded: 1,8,9,10,11,12, downloaded: 2,3,4,5,6,7,13,14,15,16,17,18: http2: client connection lost
이 예시에서 다시 받을 번호는 1,8,9,10,11,12입니다.
./apollo-cli bundle download "$BUNDLE_RID" \
--apollo-token "$APOLLO_TOKEN" \
--apollo-url "$APOLLO_URL" \
--chunk-ids 1,8,9,10,11,12
청크를 보관하고 재사용하려는 큰 전송에는 다음 분리 다운로드 절차를 사용할 수 있습니다.
청크와 인덱스를 따로 받은 뒤 조립
먼저 청크를 다운로드합니다.
./apollo-cli bundle download "$BUNDLE_RID" \
--apollo-token "$APOLLO_TOKEN" \
--apollo-url "$APOLLO_URL" \
--chunks-only
인덱스와 referrer를 받습니다.
./apollo-cli bundle download "$BUNDLE_RID" \
--apollo-token "$APOLLO_TOKEN" \
--apollo-url "$APOLLO_URL" \
--index-only
받은 청크 디렉터리와 기본 번들 아카이브를 지정하여 조립합니다.
./apollo-cli bundle assemble \
--archive-dir "$PIPELINE_ID-$BUNDLE_VERSION" \
--base-bundle-archive "$PIPELINE_ID-$BUNDLE_VERSION-index.tar"
결과는 pipeline_id-bundle_version-index.tar에 저장됩니다. --gzip-compressed true를 추가하면 gzip 출력으로 만들 수 있지만 시간이 더 걸릴 수 있습니다. 한 번에 옮길 데이터 크기를 줄이려면 청크와 인덱스 및 referrer 파일을 대상 환경의 작업 호스트로 나누어 전달하고 그곳에서 조립할 수도 있습니다. 로컬 파일 조립과 Apollo Import 애플리케이션의 가져오기는 별도 작업입니다.
대상 허브 업로드
--bundle-path에는 단일 tar 파일이나 청크 디렉터리를 지정합니다. 다음 예시의 APOLLO_URL과 APOLLO_TOKEN은 대상 허브 값입니다.
./apollo-cli bundle upload \
--apollo-token "$APOLLO_TOKEN" \
--apollo-url "$APOLLO_URL" \
--bundle-path "$PIPELINE_ID-$BUNDLE_VERSION"
업로드 이후 처리 상태와 승인 요청은 대상 허브의 Import 이력에서 확인합니다.
대상별 계층 중복 제거
중복 제거 번들을 받을 때는 특정 전송 대상을 지정해야 합니다. Download Bundle 메뉴에서 대상 허브를 고른 뒤 Copy CLI command로 해당 옵션과 RID가 들어간 명령을 가져옵니다. 계층 중복 제거 절차에 따라 대상 업로드가 끝난 뒤 원본 허브에서 전송 완료를 확인해야 이후 번들 크기를 줄일 수 있습니다.