首頁 > 後端開發 > Python教學 > GCP 在生產中發布 python 包

GCP 在生產中發布 python 包

Mary-Kate Olsen
發布: 2024-11-20 12:29:13
原創
608 人瀏覽過

GCP publish python package in production

GCP:在生產環境中發布 Python 套件

本指南介紹如何使用 Google ArtifactRegistry 將共享 Python 程式碼作為套件進行管理。這種方法消除了 Cloud Functions 和伺服器之間的程式碼重複。


第 1 步:建立您的共享程式碼

為您的共享邏輯建立一個新的 Python 套件(例如 common_logic)。

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py
登入後複製
登入後複製

步驟2:建立setup.py

在 setup.py 檔案中定義你的套件配置:

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py
登入後複製
登入後複製

步驟 3: 設定 Google Artifact 註冊表

  1. 啟用 ArtifactRegistry API:
from setuptools import setup, find_packages

setup(
    name="common_logic",
    version="0.1.0",
    packages=find_packages(),
    install_requires=[
        "pandas>=1.3.0",
    ],
    author="Your Name",
    author_email="your.email@example.com",
    description="Common logic for app",
)
登入後複製
  1. 建立Python儲存庫:
   gcloud services enable artifactregistry.googleapis.com
登入後複製

步驟 4:設定身份驗證

  1. 建立服務帳戶:
   gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
登入後複製
  1. 授予必要的權限:
   gcloud iam service-accounts create artifact-publisher \
       --description="Service account for publishing to Artifact Registry"
登入後複製
  1. 建立並下載金鑰:
   gcloud artifacts repositories add-iam-policy-binding python-packages \
       --location=us-central1 \
       --member="serviceAccount:artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/artifactregistry.writer"
登入後複製

第 5 步:建置並上傳包

  1. 安裝建置工具:
   gcloud iam service-accounts keys create key.json \
       --iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
登入後複製
  1. 建置包:
   pip install build twine
登入後複製
  1. 為 ArtifactRegistry 配置 twine:
   python -m build
登入後複製
  1. 上傳包:
   cat > ~/.pypirc << EOL
   [distutils]
   index-servers = common-logic-repo
   [common-logic-repo]
   repository: https://us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/
   username: _json_key_base64
   password: $(base64 -w0 key.json)
   EOL
登入後複製

第 6 步:使用套件

在雲函數中

  1. 建立requirements.txt檔案:
   twine upload --repository common-logic-repo dist/*
登入後複製
  1. 在您的雲函數中使用該套件:
   --index-url https://pypi.org/simple
   --extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/
   common-logic==0.1.0
登入後複製
登入後複製

在伺服器程式碼中

  1. 新增到伺服器的requirements.txt:
   from common_logic import ...

   def cloud_function(request):
       # Your cloud function code using the imported functions
       pass
登入後複製
  1. 在您的伺服器程式碼中使用它:
   --index-url https://pypi.org/simple
   --extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/
   common-logic==0.1.0
登入後複製
登入後複製

第 7 步:CI/CD 集成

  1. 將服務帳戶金鑰新增為 GitHub 儲存庫中的秘密。
  2. 更新您的 Cloud Build 設定:
   from common_logic import ...
   # Your server code using the imported functions
登入後複製

步驟8:版本管理

  1. 更新setup.py中的版本。
  2. 建置並上傳新版本。
  3. 更新 Cloud Functions 和伺服器程式碼中的requirements.txt。
  4. 部署兩個元件。

最佳實踐

  • 為您的套件使用語意版本控制
  • 在requirements.txt中固定特定版本。
  • 在部署之前徹底測試新版本。
  • 保留版本變更的變更日誌。
  • 使用 PROJECT_ID 和 LOCATION 的環境變數。
  • 在您的包中包含全面的文件。

常見問題及解決方案

身份驗證錯誤

  • 驗證服務帳戶權限。
  • 確保 key.json 已正確編碼。
  • 檢查 .pypirc 配置。

找不到包裹

  • 驗證儲存庫 URL 格式。
  • 檢查包是否上傳成功。
  • 確保requirements.txt使用正確的URL格式。

版本衝突

  • 固定依賴項的特定版本。
  • 使用虛擬環境進行測試。
  • 明確文檔依賴性要求。

以上是GCP 在生產中發布 python 包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板