以下は、Git Actions を使用して Python コードを Cloud Run 上にデプロイするための手順です。
GCP でプロジェクトを作成します。
Cloud Run サービスを作成します。
Cloud Run サービスにデプロイするために使用する Dockerfile を作成します。例えば、以下のようになります。
# Dockerfile
# Use the official Python image
FROM python:3.9-slim-buster
# Copy the application directory to the container
COPY . /app
# Set the working directory
WORKDIR /app
# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Expose the port
EXPOSE 8080
# Start the application
CMD ["python", "app.py"]
GCP の認証情報を設定します。以下の手順で実行します。
GCP コンソールにログインします。
「IAM & 管理」 > 「サービス アカウント」を選択します。
「新しいサービス アカウント」をクリックし、適切な権限を与えたサービス アカウントを作成します。
サービス アカウントを選択し、JSON 形式の認証情報ファイルをダウンロードします。
作成した Dockerfile を GCR にプッシュします。以下の手順で実行します。
Cloud Shell を開始します。
gcloud auth configure-docker コマンドを実行して Docker の認証情報を設定します。
docker build -t gcr.io/[PROJECT-ID]/[IMAGE-NAME] . コマンドを実行して Docker イメージをビルドします。
docker push gcr.io/[PROJECT-ID]/[IMAGE-NAME] コマンドを実行して Docker イメージを GCR にプッシュします。
Git リポジトリでの設定について以下の手順で説明します。
ソースコードと Dockerfile を Git リポジトリに追加します。
GitHub でリポジトリを作成します。
Cloud Run にデプロイするために使用するサービス アカウントのキーを保存します。以下の手順で保存します。
GCP コンソールにログインします。
「IAM & 管理」 > 「サービス アカウント」を選択します。
使用するサービス アカウントを選択し、「鍵の作成」をクリックします。
JSON 形式の鍵を作成し、ダウンロードします。
GitHub のリポジトリの「Settings」 > 「Secrets」を開き、保存したサービス アカウントのキーを追加します。以下の手順で追加します。
「New repository secret」をクリックします。
Name に GCP_SA_KEY を入力します。
Value に保存したサービス アカウントのキーを貼り付けます。
.github/workflows/main.yml を作成し、以下の内容を追加します。
yaml
name: Deploy to Cloud Run
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v0.4.0
with:
project_id: [PROJECT-ID]
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Build and deploy to Cloud Run
run: |
gcloud builds submit --tag gcr.io/[PROJECT-ID]/[IMAGE-NAME] .
gcloud run deploy [SERVICE-NAME] --image gcr.io/[PROJECT-ID]/[IMAGE-NAME] --platform managed --region [REGION]
上記の YAML ファイルでは、以下の内容を実行します。
main ブランチに push された場合にジョブがトリガーされます。
Google Cloud SDK をセットアップし、サービス アカウントのキーを使用して認証します。
Docker イメージをビルドし、GCR にプッシュします。
Cloud Run にデプロイします。
各項目で使用する値は、自分のプロジェクトに合わせて適宜変更してください。