Опубликовать на S3 с помощью Git? - PullRequest
81 голосов
/ 11 августа 2011

Кто-нибудь знает, как это сделать? До сих пор я не смог найти ничего полезного через Google.

Мне бы очень хотелось настроить локальное репо и использовать git push для его публикации на S3, идея в том, чтобы иметь локальный контроль версий над ресурсами, но удаленное хранилище на S3.

Можно ли это сделать, и если да, то как?

Ответы [ 7 ]

50 голосов
/ 08 ноября 2011

1 Используйте JGit через http://blog.spearce.org/2008/07/using-jgit-to-publish-on-amazon-s3.html

Загрузите jgit.sh, переименуйте его в jgit и вставьте его в свой путь (например, $ HOME / bin).

Настройте файл конфигурации .jgit и добавьте следующее (заменив ключи AWS):

$ vim ~ / .jgit

accesskey: aws access key
secretkey: aws secret access key

Обратите внимание, не задавая acl: public вФайл .jgit, файлы git на S3 будут приватными (что мы и хотели).Затем создайте корзину S3 для хранения вашего репозитория, назовем его git-repos, а затем создайте репозиторий git для загрузки:

s3cmd mb s3://git-repos
mkdir chef-recipes
cd chef-recipes
git init
touch README
git add README
git commit README
git remote add origin amazon-s3://.jgit@git-repos/chef-recipes.git

В приведенном выше примере я использую инструмент командной строки s3cmd для созданияведро, но вы также можете сделать это через веб-интерфейс Amazon.Теперь давайте перейдем к S3 (обратите внимание, как мы используем jgit всякий раз, когда мы взаимодействуем с S3, а в противном случае - стандартный git):

jgit push origin master

Теперь перейдите в другое место (например, cd / tmp) и попробуйте клонировать его:1019 *

jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git

Когда приходит время обновить его (поскольку jgit не поддерживает слияние или извлечение), вы делаете это в 2 шага:

cd chef-recipes
jgit fetch
git merge origin/master

2 Использование Файловая система на базе FUSE, поддерживаемая Amazon S3

  1. Получите учетную запись Amazon S3!

  2. Загрузите, скомпилируйте и установите,(см. примечания по установке)

  3. Укажите свои учетные данные безопасности (идентификатор ключа доступа и секретный ключ доступа) одним из следующих способов:

    • с помощьюопция командной строки passwd_file

    • установка переменных среды AWSACCESSKEYID и AWSSECRETACCESSKEY

    • с использованием файла .passwd-s3fs в вашем домашнем каталоге

    • с использованием общесистемного файла / etc / passwd-s3fs

    • сделать это

.

/usr/bin/s3fs mybucket /mnt

Вот и все!содержимое вашего амазонского ведра "mybucket" теперь должно быть доступно для чтения / записи в / mnt

10 голосов
/ 04 апреля 2013

Dandelion - это еще один инструмент CLI, который будет синхронизировать репозитории Git с S3 / FTP / SFTP: http://github.com/scttnlsn/dandelion

8 голосов
/ 18 июля 2013

git-s3 - https://github.com/schickling/git-s3

Вам просто нужно запустить git-s3 deploy

Он имеет все преимущества репозитория git и загружает / удаляет толькофайлы, которые вы изменили.
Примечание. Развертывания не подразумеваются с помощью git push, но вы можете добиться этого с помощью git hook.

2 голосов
/ 18 марта 2016

Вы можете использовать mc aka Minio client , написанный на Golang и доступный по лицензии Open Source Apache. Он доступен для Mac, Linux, Windows, FreeBsd. Вы можете использовать команду mc mirror для выполнения ваших требований.

mc GNU / Linux Загрузить

64-bit Intel from https://dl.minio.io/client/mc/release/linux-amd64/mc
32-bit Intel from https://dl.minio.io/client/mc/release/linux-386/mc
32-bit ARM from https://dl.minio.io/client/mc/release/linux-arm/mc
$ chmod +x mc
$ ./mc --help

Настройка MC для Amazon S3

$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
  • Заменить на ваш доступ / секретный ключ
  • По умолчанию mc использует сигнатурную версию amazon S3 версии 4.
  • mys3 - псевдоним Amazon S3 для клиента minio

Зеркально отразите свой локальный репозиторий / каталог github с именем mygithub на имя корзины Amazon S3 mygithubbkp

$ ./mc mirror mygithub mys3/mygithubbkp

Надеюсь, это поможет Отказ от ответственности: я работаю на Minio

1 голос
/ 21 января 2016

Вы можете использовать службу deplybot (http://deploybot.com/), которая бесплатна для одного репозитория git.

Вы можете автоматизировать развертывание, выбрав «автоматический» в разделе режима развертывания.

Я использую его сейчас. Это очень просто и полезно.

0 голосов
/ 09 марта 2018

Вам нужно JGit .

Просто сохраните файл .jgit в каталоге пользователя с учетными данными aws, и вы сможете использовать git с s3.

Вот как будет выглядеть ваш git url.

amazon-s3://.jgit@mybucket/myproject.git

Вы можете делать все, что вы делаете с git с jgit.

Получить полное руководство по установке здесь.

https://metamug.com/article/jgit-host-git-repository-on-s3.php

0 голосов
/ 05 апреля 2017

версия контроля ваших файлов с Github? Этот сценарий (и связанные с ним конфигурации GitHub / AWS) будут принимать новые коммиты в репозиторий и синхронизировать их в корзину S3.

https://github.com/nytlabs/github-s3-deploy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...