Простое развертывание Google Cloud: копирование файлов Python из репозитория Google Cloud в механизм приложений

Я внедряю непрерывную интеграцию и непрерывную доставку для крупного корпоративного хранилища данных. Весь код находится в Google Cloud Repository, и я могу настроить триггер Google Cloud Build, чтобы каждый раз, когда код определенного типа файла (скрипты Python) передавался в основную ветку, запускалась сборка Google Cloud.

Скрипты Python не составляют приложение. Они содержат строку подключения ODBC и скрипт для извлечения данных из источника и сохранения их в виде CSV-файла. Сценарии Python должны выполняться на виртуальной машине Google Compute Engine с установленным AirFlow.

Таким образом, развертывание скриптов Python настолько простое, насколько это возможно: файлы.py следует копировать только из папки репозитория Google Cloud в определенную папку в экземпляре виртуальной машины Google. На самом деле традиционная сборка для запуска не существует, так как все файлы Python отделены друг от друга и не являются частью приложения.

Я думал, что это будет действительно легко, но теперь я потратил несколько дней, пытаясь понять это без удачи. Google Cloud Platform предоставляет несколько Cloud Builders, но, насколько я понимаю, ни один из них не может выполнить эту простую задачу. Использование GCLOUD также не работает. Он может копировать файлы, но только с локального компьютера на ВМ, а не из исходного хранилища на ВМ.

Что мне нужно, так это файл конфигурации сборки YAML или JSON для копирования этих файлов Python из исходного хранилища в экземпляр виртуальной машины Google Compute Engine.

Надеюсь на некоторую помощь здесь.

1 ответ

Решение

Файлы / папки в репозитории Google Cloud не доступны напрямую (это как пустой git-репозиторий), вам нужно сначала клонировать репо, а затем скопировать нужные файлы / папки из клонированного репозитория в их места назначения.

Возможно, будет возможно использовать стандарт Fetching dependencies шаг сборки для клонирования репо, но я не уверен на 100% в вашем случае, так как вы на самом деле не делаете сборку:

steps:
- name: gcr.io/cloud-builders/git
  args: ['clone', 'https://github.com/GoogleCloudPlatform/cloud-builders']

Если нет, вам может потребоваться один (или несколько) пользовательских шагов сборки. От создания пользовательских шагов сборки:

Настраиваемый этап сборки - это образ контейнера, который рабочая виртуальная машина Cloud Build извлекает и запускает, подключив исходный том к /workspace, Ваш пользовательский шаг сборки может выполнить любой скрипт или двоичный файл внутри контейнера; как таковой, он может делать все, что может делать контейнер.

Пользовательские шаги сборки полезны для:

  • Загрузка исходного кода или пакетов из внешних источников

    ...

Другие вопросы по тегам