Простое развертывание 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
, Ваш пользовательский шаг сборки может выполнить любой скрипт или двоичный файл внутри контейнера; как таковой, он может делать все, что может делать контейнер.Пользовательские шаги сборки полезны для:
Загрузка исходного кода или пакетов из внешних источников
...