Стратегия развертывания версионных ресурсов (для ресурсов приложения PHP в Amazon S3)

0

В настоящее время я развертываю статические ресурсы приложения PHP, используя s3cmd.

Если актив для Amazon S3 изменился (например, сценарий JavaScript), я переименую его вручную, чтобы новая версия была синхронизирована и обслуживалась Amazon Cloudfront.

Существуют ли документированные методы развертывания статических активов приложения PHP для Amazon S3? Я видел, что сайты используют хеш для ссылки на определенную версию развертывания своих активов. Мне интересно, как получить этот хэш (например, git commit SHA?), На который ссылается веб-приложение.

Подход, который я видел, работает, записывая автономный файл конфигурации, который содержит текущий SHA, и читает его для развертывания.

Обновление 1 с текущим процессом

Я хочу сделать автоматизацию развертывания активов:

  • Внесите изменения в приложение JavaScript
  • Переименуйте скрипт из app.23.js в app.24.js
  • Отредактируйте HTML-шаблон заголовка сайта, чтобы обратиться к app.24.js
  • Зафиксировать все изменения в git
  • Объединить ветвь develop в master
  • Пометьте фиксацию новым номером версии
  • Push-код для BitBucket
  • Используйте s3cmd для синхронизации нового скрипта с Amazon S3 (и, следовательно, с Cloudfront CDN)
  • SSH на сервер и вытащить последнее дерево git. Производственный сервер обслуживает master ветвь.
  • 0
    Можете ли вы пролить свет на ваш рабочий процесс, который вы упомянули. Я не могу собрать это воедино, чтобы предложить решение :(.
  • 0
    @NomanUrRehman Спасибо, я обновил его с «Обновление 1».
Показать ещё 1 комментарий
Теги:
amazon-s3
web-deployment

1 ответ

1
Лучший ответ

Я хотел бы думать, что нет конкретного ответа на этот вопрос, но здесь есть несколько вещей.

  1. Если вы только хотите автоматизировать ручную работу, которую вы делаете, может оказаться целесообразным изучить несколько инструментов развертывания. Capistrano и Magallanes - это два имени, которые приходят мне на ум, но вы можете сделать это для Google, и я уверен, что вы найдете много вариантов.

  2. Рамка Rails была основана на философии, что есть лучший способ сделать что-то. Он также использует хеши для создания статических активов и делает свою работу "на лету". Вы можете посмотреть, как реализовать хеширование в вашем случае.

  3. Grunt - еще один инструмент автоматизации, который вы можете изучить. Я нашел этот модуль, который может пригодиться https://github.com/theasta/grunt-assets-versioning

Я бы сказал, для меня 2,3,4 являются проблемными областями в вашем рабочем процессе. Переименование вручную и обновление кода каждый раз не звучит слишком хорошо. Как вы отметили, хеши GIT уникальны, поэтому, возможно, добавьте хеш GIT в свои активы во время развертывания и синхронизируйте их с S3/Cloudfront?

  • 0
    Спасибо за указатели. Похоже, что сообщество Rails обратилось к этому вопросу. Вот связанная статья Grunt, связанная с PHP тоже.
  • 0
    Извините, похоже, моя ссылка не была принята.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню