95 votes

Publier sur S3 en utilisant Git ?

Quelqu'un sait-il comment faire ? Jusqu'à présent, je n'ai rien trouvé d'utile via Google.

J'aimerais vraiment mettre en place un dépôt local et utiliser git push pour le publier sur S3, l'idée étant d'avoir un contrôle de version local sur les actifs mais un stockage à distance sur S3.

Cela peut-il être fait, et si oui, comment ?

1 votes

OP, Actuellement, la réponse acceptée ne s'applique pas à la question posée. Serait-il possible de la mettre à jour pour le bien de tous ? Je crois s3fs pour être une solution viable.

1 votes

@Benjamin Merci d'avoir attiré mon attention sur celui-ci, il a été mis à jour.

1 votes

Ne serait-il pas plus judicieux de déployer vers n'importe quel dépôt distant (pour conserver un historique de sauvegarde des commits) et d'utiliser un fichier crochet git pour simplement se synchroniser avec un seau S3 (par exemple : s3cmd sync … ) ?

52voto

Riceball LEE Points 684

1 Utiliser JGit via http://blog.spearce.org/2008/07/using-jgit-to-publish-on-amazon-s3.html

Téléchargez jgit.sh, renommez-le en jgit et mettez-le dans votre chemin (par exemple $HOME/bin).

Configurez le fichier de configuration .jgit et ajoutez les éléments suivants (en remplaçant vos clés AWS) :

$vim ~/.jgit

accesskey: aws access key
secretkey: aws secret access key

Notez qu'en ne spécifiant pas acl : public dans le fichier .jgit, les fichiers git sur S3 seront privés (ce que nous voulions). Créez ensuite un seau S3 pour y stocker votre dépôt, appelons-le git-repos, puis créez un dépôt git à télécharger :

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

Dans l'exemple ci-dessus, j'utilise l'outil de ligne de commande s3cmd pour créer le seau, mais vous pouvez également le faire via l'interface web d'Amazon. Maintenant, poussons-le vers S3 (remarquez comment nous utilisons jgit quand nous interagissons avec S3, et git standard sinon) :

jgit push origin master

Maintenant, allez ailleurs (par exemple, cd /tmp) et essayez de le cloner :

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

Lorsqu'il est temps de le mettre à jour (parce que jgit ne supporte pas le merge ou le pull), vous le faites en 2 étapes :

cd chef-recipes
jgit fetch
git merge origin/master

2 Utilisez Système de fichiers basé sur FUSE et soutenu par Amazon S3

  1. Obtenez un compte Amazon S3 !

  2. Téléchargez, compilez et installez (voir les notes d'installation).

  3. Spécifiez vos informations d'identification de sécurité (ID de clé d'accès et accès secret). secrète) par l'une des méthodes suivantes :

    • en utilisant l'option de ligne de commande passwd_file

    • définition des variables d'environnement AWSACCESSKEYID et AWSSECRETACCESSKEY

    • en utilisant un fichier .passwd-s3fs dans votre répertoire personnel

    • en utilisant le fichier /etc/passwd-s3fs de l'ensemble du système.

    • faites ceci

.

/usr/bin/s3fs mybucket /mnt

C'est tout ! Le contenu de votre seau Amazon "mybucket" devrait maintenant être accessible en lecture/écriture dans /mnt.

1 votes

J'ai suivi ces instructions mais j'obtiens un The request signature we calculated does not match the signature you provided. Check your key and signing method erreur lorsque j'essaie de jgit push origin master . Une idée de comment je peux faire disparaître ça ?

5 votes

Pourquoi n'utiliseriez-vous pas simplement git ? Cela semble être beaucoup de travail/stuff supplémentaire juste pour un simple repo git distant sur aws...

1 votes

Je suggère de mettre à jour cette (vraie) réponse pour aller plus loin avec une post-receive qui vérifie le GIT_WORK_TREE . Voir ici pour plus de détails. J'ai fini par obtenir un bon fonctionnement avec s3fs . Hautement recommandé et merci de m'avoir aidé à démarrer.

9voto

scttnlsn Points 1137

Dandelion est un autre outil CLI qui permet de garder les dépôts Git synchronisés avec S3/FTP/SFTP : http://github.com/scttnlsn/dandelion

0 votes

Aucune idée de qui a rétrogradé ça. Je pense que cette solution est bonne si l'objectif est d'avoir des déploiements incrémentaux aux côtés de git pour la gestion des versions locales et de S3 pour l'hébergement. C'est ce qui semble être la question.

8voto

schickling Points 136

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

Tu dois juste courir git-s3 deploy

Il offre tous les avantages d'un dépôt git et ne télécharge/supprime que les fichiers que vous avez modifiés.
Note : Les déploiements ne sont pas implicites via git push mais vous pouvez le faire via un git hook.

14 votes

Pour info, cela dépend de Composer qui dépend à son tour de PHP .

0voto

jondavidjohn Points 28769

Ce service fonctionne avec Amazon Beanstalk

http://deploy.phpfog.com/

De même, pour une option plus robuste http://www.deployhq.com supporte le déploiement de git sur n'importe quel serveur qui supporte (s)ftp et suit les déploiements/fichiers de configuration d'environnement/etc...

0voto

bradt Points 149

J'ai recommandé de vérifier le CLI script que je viens de publier :

https://github.com/bradt/git-deploy-s3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X