Лучшая стратегия для развертывания статического сайта в s3 на github push?
Я хотел бы автоматизировать развертывание нашего сайта на AWS S3. Я написал node script, чтобы автоматизировать создание и загрузку сайта, но я бы хотел, чтобы script автоматически запускался всякий раз, когда ветвь master
нашего репо обновляется на github.
Я просмотрел AWS CodeDeploy, но это похоже на то, что специально предназначено для EC2. Я также посмотрел на AWS Lambda, но, похоже, нет четкого способа вытащить копию репо с помощью git
, поэтому я могу запустить script.
Любые сервисы (желательно привязанные к AWS), которые я могу использовать?
Ответы
Ответ 1
Вместо использования службы AWS напрямую (как вы говорите, они почти все ожидают гораздо более сложной настройки, развертывания на EC2 и т.д.), вам может быть лучше использовать поставщика CI, например Shippable, Codeship или Wercker.
Все они имеют возможность запускать обновления git
, запускать команды сборки, устанавливать утилит в свои изображения/контейнеры CI и копировать файлы на S3.
Вероятно, есть некоторый запуск, который построил точный инструмент для вашей цели, но пока не появился на моем радаре: -)
Ответ 2
Я знаю, что это не git deploy.... Но вместо того, чтобы настраивать ящик CI, я просто использовал s3cmd.
http://s3tools.org/s3cmd
Выполнение этой команды синхронизирует мой каталог с s3.
s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed
Я использую его в Linux. Не знаете, каковы их истории OSX и Windows.
Если вы действительно после решения git push, вы можете настроить задание по времени, которое вытаскивает репозиторий git в папку, а затем выполняет это против него. Я делаю это в другом месте на дешевой Linux VM. Если вы не собираетесь идти полным CI, вероятно, не так много.
Ответ 3
У меня была одна и та же цель некоторое время назад, и теперь я выпустил небольшой инструмент, который решает проблему хотя бы для меня. Он использует AWS Lambda
и разворачивает конкретную ветвь репозитория до S3
после push
. Вы можете в полной мере использовать ключ развертывания GitHub, который имеет меньше разрешений в качестве токенов доступа и может быть настроен для каждого репозитория.
Пожалуйста, посмотрите github-bucket, это тоже может помочь.
![github-s3-deploy-architecture]()
Ответ 4
Если вы используете TravisCI, deployment довольно прямолинейно. Единственной частью, которую вам нужно добавить в свой .travis.yml
, является:
deploy:
provider: s3
access_key_id: "YOUR AWS ACCESS KEY"
secret_access_key:
secure: "w/DlbHt1+IAMENCRYPTED"
bucket: "YOUR BUCKET"
Мой пост в блоге объясняет все детали для стороны AWS (настройки пользователя, конфигурации IAM и S3), а также github и сторона travisCI.
Ответ 5
Вы можете установить это с помощью очень простой двухэтапной CodePipeline. В основном, вы просто заполняете различные разделы в консоли AWS. Нет необходимости в отдельном инструменте CI и его дополнительной сложности.
На первом этапе трубопровода вытащите из Github и сохраните его на S3. Вы можете легко установить это через консоль AWS.
На следующем шаге CodeDeploy вы можете использовать CLI AWS (предварительно установленный в CodeDeploy), чтобы сделать
cd /path/to/public/directory && aws s3 sync --acl public-read --delete . s3://your.bucket.name
Вам нужно будет установить переменные среды для AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, чтобы AWS CLI мог запускаться во время вашего шага развертывания, и это также можно сделать в консоли AWS для CodeDeploy в разделе Advanced в разделе "Переменные среды". Как только переменные окружения установлены, и если у этого пользователя AWS есть правильные разрешения, вы можете запустить любую команду aws-cli, которую вы хотите внутри своего CodeDeploy.
Как только это будет сделано, когда вы зарегистрируетесь в Github, начнется CodePipeline, а через несколько минут ваши файлы будут на S3.
Ответ 6
Возможно, вы отказались от вашего простого использования, но вы можете создать очень простой CodePipeline, чтобы подтолкнуть ваш репозиторий github к S3.
Ответ 7
Я также рекомендую использовать код, простой и простой, но вам нужно создать пользователя IAM с соответствующим разрешением (которое является политикой) на ведро S3.
базовый план кодекса бесплатный.
Ну, может быть, проблема в том, что до сих пор я вижу, что код не удалит файлы при удалении файлов в github, ведь s3 не является реестром github, но в любом случае операции putObject для большого количества обновлений github работают достаточно хорошо мне.
Ответ 8
Я использовал Deploy Bot в прошлом, и я был очень доволен этим.
Он может нажать на S3 или даже FTP через Git, а также запустить сценарии сборки и даже нажать на уведомление Slack для вас.
https://deploybot.com/