Миграция Django из действий Github

Здравствуйте, у меня есть база данных в Google Cloud Platform, и я пытаюсь понять, как запустить миграцию django из действий github после развертывания моего приложения на App engine GCP.

Я пробовал использовать cloud_sql_proxy, но не могу заставить его подключиться к моей базе данных. Я бы внес в белый список ip-адреса действий github, но я не совсем уверен, что это за ip-адреса.

Вот конфигурация, которую я сейчас имею:

name: deploy-app-to-gcp
on:
  push:
    branches: [ main]
    paths:
      - '**'
jobs:
  migrate:
    name: Migrate Database
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: get env file
        run: echo "${{secrets.ENV_FILE}}" | base64 --decode > ./env_variables.yaml
      - name: Set up Python 3.9
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Get Cloud SQL Proxy
        run: |
          wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
          chmod +x cloud_sql_proxy
      - name: migrate Database
        env:
          DATABASE_CONNECTION_ADDRESS: 127.0.0.1
        run: |
          pip install ruamel.yaml
          set -a; eval $(python -c 'from pathlib import Path;from ruamel.yaml import YAML; print( "".join( [f"{k}={v!r}\n" for k, v in YAML().load(Path("env_variables.yaml"))["env_variables"].items() if not k.__eq__("DATABASE_CONNECTION_ADDRESS")] ) )'); set +a
          ./cloud_sql_proxy -instances=com-cjoshmartin:us-central1:cms-db=tcp:5432 &
          python manage.py migrate
          exit 0;

Чтобы заставить Cloud SQL Proxy работать с действиями GitHub, вам понадобится некоторая форма учетных данных, присутствующих в среде. Подробности смотрите в README.

Другим вариантом может быть включение Workload Identity Federation и использование действия auth, хотя этот подход требует гораздо больше настроек.

На основе ответа @enocom я смог выполнить нужные мне миграции, используя Cloud SQL Proxy и задав путь к файлу учетных данных.

Вот что я изменил:

Сохранение учетных данных GCloud в json-файл

#...
      - name: get env file
        run: |
          echo "${{secrets.ENV_FILE}}" | base64 --decode > ./env_variables.yaml
          echo "${{secrets.GCLOUD_GITHUB_CREDENTIALS}}" | base64 --decode > ./secrets.json

#...

использование облачного sql-прокси с секретным файлом

./cloud_sql_proxy -instances=com-cjoshmartin:us-central1:cms-db=tcp:5432 -credential_file secrets.json &

Вернуться на верх