Использование GIT и CDN для статического контента - PullRequest
3 голосов
/ 04 ноября 2011

Проблема:

У меня есть приложение, которое я развертываю с помощью GIT.Когда я хочу обновить файлы на моем сервере, я делаю простой git pull, чтобы получить последнюю версию приложения из репозитория GitHub.Дело в том, что я вроде как хочу обслуживать весь статический контент из своей учетной записи Amazon S3, но хочу, чтобы эти файлы были синхронизированы с версией на главном сервере.

Вопросы:

  1. Когда я git pull мой проект из GitHub, как я могу перетащить эти файлы в свою учетную запись S3?
  2. Если я хочу переключить версию на моем сервере (через тег), как это может тогдабыть отраженным на моем счете S3?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2012

Ах, добро пожаловать в мир управления версиями контента.

Это не вопрос GIT, а на самом деле распространенная проблема при попытке синхронизировать статический контент, обслуживаемый из одного местоположения, с версионным контентом (из управления исходным кодом), который подается из другого местоположения. Распространенным вариантом использования является веб-сайт с динамическим и статическим контентом.
Случайный пример: hotels.com . Если вы посмотрите фотографии на первой странице, вы увидите такие URL-адреса, как , этот . Очевидно, что имя этого ресурса автоматически генерируется Asset Manager.

Мы используем Django и Python для некоторых задач, следовательно, используем Django Mediagenerator . Мы генерируем версионный каталог статических файлов, который мы загружаем в S3.

Как видно из этого сравнения , существует множество других вариантов!
В качестве бонуса за использование менеджеров активов вы также получаете сжатие, запутывание, слияние и т. Д.

В другой части приложения мы вручную делаем версии файлов. Я автоматически вычисляю модуль python для файловых хэшей (хэш для каждого статического файла). Я загружаю статические файлы в S3, переименовывая файлы, чтобы добавить MD5-хеш их содержимого. Таким образом, some_file.txt становится some_file_123123123123.txt на S3, и я могу загрузить конкретную версию файла с S3. Модуль с хешами хранится в системе контроля версий (GIT).

1 голос
/ 04 ноября 2011

Я думаю, Git hooks должен делать то, что вы хотите. Может быть, после проверки (для переключения тегов) или после слияния (для извлечения) достаточно. Затем вам придется написать скрипт bash, который скопирует ваши статические файлы на ваш S3 и выполнит этот скрипт bash в хуках.

0 голосов
/ 11 ноября 2012

Это может оказаться полезным, если вы используете PHP для своего приложения (в противном случае этот код может быть адаптирован к вашим потребностям): https://github.com/SupersonicAds/git-hook-php-s3-files-revisions

...