Моя виртуальная машина с вычислительным движком не принимает изменения из моего репозитория
У меня есть экземпляр вычислительного движка и сценарий запуска к нему включает в себя следующие строки.
# 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.
Удачи!