Моя виртуальная машина с вычислительным движком не принимает изменения из моего репозитория

У меня есть экземпляр вычислительного движка и сценарий запуска к нему включает в себя следующие строки.

# Get the application source code from the Google Cloud Repository.
# git requires $HOME and it's not set during the startup script.
export HOME=/root
git config --global credential.helper gcloud.sh
git clone https://source.developers.google.com/p/$PROJECTID /opt/app

Этот код сообщает ВМ, что нужно получить исходный код из облачного хранилища, моего кода приложения. Всякий раз, когда я изменяю свой исходный код и помещаю изменения в репозиторий и перезапускаю свой виртуальный компьютер, виртуальный компьютер не выполняет новый код. Как заставить виртуальную машину запустить новый код, не удаляя экземпляр и не создавая новый?

2 ответа

Решение

Сценарии запуска виртуальной машины GCE запускаются при каждой загрузке, а не только при первой загрузке, поэтому вы должны клонировать репозиторий только в первый раз, а затем обновлять каждый раз, например,

# Note: this script is untested but should work.

export HOME=/root
git config --global credential.helper gcloud.sh

declare -r LOCAL_GIT_REPO="/opt/app"
if ! [[ -e "${LOCAL_GIT_REPO}" ]]; then
  git clone https://source.developers.google.com/p/$PROJECTID "${LOCAL_GIT_REPO}"
else
  cd "${LOCAL_GIT_REPO}"
  git pull
fi

Затем вы можете в любое время повторно запустить этот сценарий вручную, чтобы обновить репо во время работы вашего экземпляра. Если вы хотите, чтобы экземпляр автоматически обновлял свой собственный код, вызовите этот скрипт из cron, Вы можете узнать, как настроить периодический запуск команд через man cron а также man crontab,

Чтобы ответить на ваш вопрос напрямую, в большинстве дистрибутивов GCE помещает ваш стартовый скрипт в это место: /usr/share/google/run-startup-scripts. Вам не нужно перезапускать свой экземпляр и иметь время простоя. Просто перезапустите его.

Ссылка здесь: https://cloud.google.com/compute/docs/startupscript?hl=en

Просто несколько советов. Я бы использовал автоматизированный инструмент для выполнения любых мерзавцев или развертывания кода. Дженкинс или Трэвис могут это сделать. Я бы посоветовал вам взглянуть и на инструменты CM. Ansible удобен в использовании и отлично подходит для изучения, если вы только начинаете с CM.

Удачи!

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