>  기사  >  백엔드 개발  >  Cloud Build를 사용하여 Python 패키지를 Artifact Registry로 푸시

Cloud Build를 사용하여 Python 패키지를 Artifact Registry로 푸시

Linda Hamilton
Linda Hamilton원래의
2024-11-27 16:09:10789검색

Pushing Python Packages to Artifact Registry Using Cloud Build

Google Artifact Registry는 비공개적이고 안전하며 확장 가능한 방식으로 Python 패키지 아티팩트를 관리하고 호스팅하기 위한 강력한 솔루션입니다. 이 가이드에서는 인증을 위해 Google Cloud BuildGoogle Secret Manager의 비밀(creds)을 사용하여 Python 패키지 .whl 파일을 Artifact Registry에 푸시하는 단계별 안내를 제공합니다.


전제조건

  1. 아티팩트 레지스트리 설정:

    • Artifact Registry에 Python 저장소를 만듭니다.
     gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
    
  2. 비밀 설정:

    • Google Secret Manager에 키를 비밀로 저장하세요.
     gcloud secrets create creds --data-file=path/to/key.json
    
  • Cloud Build에 보안 비밀에 대한 액세스 권한 부여:(선택 사항, IAM을 사용하여 수행할 수도 있음)

     gcloud secrets add-iam-policy-binding creds \
       --member="serviceAccount:$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')@cloudbuild.gserviceaccount.com" \
       --role="roles/secretmanager.secretAccessor"
    
  1. 클라우드 빌드 권한: Cloud Build 서비스 계정에 Artifact Registry 및 Secret Manager에 액세스하는 데 필요한 권한이 있는지 확인하세요.

Cloud Build YAML 구성

전체 작동 cloudbuild.yaml 파일은 다음과 같습니다.

options:
  machineType: E2_HIGHCPU_8
  substitutionOption: ALLOW_LOOSE
  logging: CLOUD_LOGGING_ONLY

steps:
  # Step 1: Access the secret `creds` and save it as `key.json`
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: bash
    args:
      - '-c'
      - |
        gcloud secrets versions access latest --secret=creds > /workspace/key.json

  # Step 2: Configure `.pypirc` with the Artifact Registry credentials
  - name: 'python'
    entrypoint: bash
    args:
      - '-c'
      - |
        cat > ~/.pypirc << EOL
        [distutils]
        index-servers = tower-common-repo

        [tower-common-repo]
        repository: https://us-central1-python.pkg.dev/$PROJECT_ID/python-packages/
        username: _json_key_base64
        password: $(base64 -w0 /workspace/key.json)
        EOL

        # Step 3: Build and upload the Python package
        pip install twine build && \
        python -m build && \
        twine upload --repository tower-common-repo dist/* --verbose

단계별 설명

  1. 빌드 옵션 정의:

    • 머신 유형, 대체 동작, 로깅 옵션을 설정하세요.
    • 이러한 구성은 효율적인 빌드와 관리 가능한 로그를 보장합니다.
  2. key.json 비밀 검색:

    • gcloud secrets 버전 액세스를 사용하여 Secret Manager에서 key.json 파일을 안전하게 가져옵니다.
    • 알려진 위치(/workspace/key.json)에 파일을 저장합니다.
  3. .pypirc 구성:

    • .pypirc 파일을 동적으로 생성합니다. 이 파일은 Twine이 Artifact Registry를 인증하는 데 필요합니다.
    • 비밀번호는 key.json의 base64 인코딩 콘텐츠입니다.
  4. 패키지 구축 및 푸시:

    • 필요한 도구(끈, 빌드)를 설치합니다.
    • Python 패키지를 빌드합니다(python -m build).
    • twin 업로드를 사용하여 .whl 파일을 Artifact Registry에 푸시합니다.

빌드 트리거

cloudbuild.yaml 파일을 저장하고 빌드를 트리거하거나 github 저장소에 연결할 수 있습니다.

 gcloud artifacts repositories create python-packages \
   --repository-format=python \
   --location=us-central1 \
   --description="Python packages repository"

핵심 사항

  • 보안 비밀 관리: Google Secret Manager를 사용하여 비밀(key.json)에 안전하게 액세스합니다.
  • 동적 구성: 빌드 중에 .pypirc가 생성되므로 민감한 데이터가 저장소에 저장되지 않습니다.
  • 자동 업로드: 이 프로세스는 패키지 작성 및 푸시를 자동화하여 수동 개입을 줄입니다.

확인

빌드 완료 후:

  1. Artifact Registry에서 업로드된 패키지를 확인하세요.
 gcloud secrets create creds --data-file=path/to/key.json
  1. 빌드 로그에서 오류나 경고를 확인하세요.

위 내용은 Cloud Build를 사용하여 Python 패키지를 Artifact Registry로 푸시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.