首頁  >  文章  >  後端開發  >  使用 Cloud Build 將 Python 套件推送到 ArtifactRegistry

使用 Cloud Build 將 Python 套件推送到 ArtifactRegistry

Linda Hamilton
Linda Hamilton原創
2024-11-27 16:09:10789瀏覽

Pushing Python Packages to Artifact Registry Using Cloud Build

Google ArtifactRegistry 是一個強大的解決方案,用於以私密、安全且可擴展的方式管理和託管 Python 包工件。本指南提供了使用Google Cloud Build 和來自Google Secret Manager 的金鑰(信用)將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 所需的權限。

雲端建置 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 versions access 從 Secret Manager 安全地取得 key.json 檔案。
    • 將檔案儲存到已知位置 (/workspace/key.json)。
  3. 配置.pypirc:

    • 動態產生 .pypirc 檔案。 twine 需要此文件才能透過 Artifact Registry 進行身份驗證。
    • 密碼為key.json的base64編碼內容。
  4. 建置並推送套件:

    • 安裝必要的工具(纏繞、建造)。
    • 建構 Python 套件 (python -m build)。
    • 使用 twine upload 將 .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. 在ArtifactRegistry中驗證上傳的套件:
 gcloud secrets create creds --data-file=path/to/key.json
  1. 檢查建置日誌中的錯誤或警告。

以上是使用 Cloud Build 將 Python 套件推送到 ArtifactRegistry的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn