誰かがこれを行う方法を知っていますか?これまでのところ、Googleで役立つものを見つけることができませんでした。
ローカルリポジトリをセットアップし、git push
それをS3に公開するために使用したいと思います。つまり、アセットをローカルバージョンで管理し、S3ではリモートストレージを使用するというアイデアです。
これは可能ですか?もしそうなら、どのように?
誰かがこれを行う方法を知っていますか?これまでのところ、Googleで役立つものを見つけることができませんでした。
ローカルリポジトリをセットアップし、git push
それをS3に公開するために使用したいと思います。つまり、アセットをローカルバージョンで管理し、S3ではリモートストレージを使用するというアイデアです。
これは可能ですか?もしそうなら、どのように?
回答:
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
.jgitファイルでacl:publicを指定しないことにより、S3のgitファイルはプライベートになります(これは私たちが望んでいたことです)。次に、リポジトリを保存する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コマンドラインツールを使用してバケットを作成していますが、AmazonWebインターフェイスを介して作成することもできます。それをS3にプッシュしましょう(S3と対話するときは常にjgitを使用し、それ以外の場合は標準のgitを使用することに注意してください)。
jgit push origin master
次に、別の場所(cd / tmpなど)に移動して、クローンを作成してみます。
jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git
更新するときは(jgitはマージまたはプルをサポートしていないため)、2つのステップで更新します。
cd chef-recipes
jgit fetch
git merge origin/master
2 AmazonS3に裏打ちされたFUSEベースのファイルシステムを使用する
Amazon S3アカウントを取得してください!
ダウンロード、コンパイル、インストールします。(InstallationNotesを参照)
次のいずれかの方法で、セキュリティ資格情報(アクセスキーIDとシークレットアクセスキー)を指定します。
passwd_fileコマンドラインオプションを使用する
AWSACCESSKEYIDおよびAWSSECRETACCESSKEY環境変数の設定
ホームディレクトリの.passwd-s3fsファイルを使用する
システム全体の/ etc / passwd-s3fsファイルを使用する
これを行う
。
/usr/bin/s3fs mybucket /mnt
それでおしまい!これで、Amazonバケット「mybucket」のコンテンツに/ mntで読み取り/書き込みアクセスできるようになります。
The request signature we calculated does not match the signature you provided. Check your key and signing method
しようとするとエラーが発生しjgit push origin master
ます。どうすればそれをなくすことができるのでしょうか?
post-receive
をチェックアウトするフックでさらに一歩進むことをお勧めしますGIT_WORK_TREE
。詳細については、こちらをご覧ください。私はこれをで非常にうまく機能させることになりましたs3fs
。強くお勧めし、私が始めるのを手伝ってくれてありがとう。
Dandelionは、GitリポジトリをS3 / FTP / SFTPと同期させるもう1つのCLIツールです:http: //github.com/scttnlsn/dandelion
git-s3 - https://github.com/schickling/git-s3
あなたはただ走る必要があります git-s3 deploy
gitリポジトリのすべての利点があり、変更したファイルだけをアップロード/削除します。
注:デプロイはgit pushを介して暗黙的に行われるわけではありませんが、gitフックを介して実現できます。
Composer
までに、これはに依存し、これはに依存しPHP
ます。
Golangで記述され、オープンソースのApacheライセンスで利用可能なmc akaMinioクライアントを使用できます。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
AmazonS3用のmcの設定
$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
githubローカルリポジトリ/ディレクトリの名前mygithub
をAmazonS3バケット名にミラーリングしますmygithubbkp
$ ./mc mirror mygithub mys3/mygithubbkp
AWS CLIとGit(フック付き)を使用してこれを行うこともできます。Windows10で動作することを確認しました。Linux/ Macで動作するはずです。
bare
既存のgitプロジェクトの新しいgitリポジトリを作成します。mkdir myproject.git
cd myproject.git
git init --bare
注:ベアリポジトリを使用するとアップストリームとして機能し、ベアリポジトリには、S3バケットにアップロードする変更のみが含まれ、無視されたファイル、ローカルgit構成などは含まれません。
post-update
にインストールします。
hooks
myproject.git
#!/bin/sh; C:/Program\ Files/Git/usr/bin/sh.exe
# Sync the contents of the bare repo to an S3 bucket.
aws s3 sync . s3://myproject/
myproject
ディレクトリにcdして、ベアリポジトリをアップストリームとして追加します。s3
たとえば、次のように名前を付けます。git remote add s3 path/to/bare/directory/myproject.git
注:ベアディレクトリへのパスには相対パスを使用できます。
s3
変更をS3バケットに同期する場合は、変更をアップストリームにプッシュします。単一のgitリポジトリで無料のdeplybot(http://deploybot.com/)サービスを使用できます。
[展開モード]セクションで[自動]を選択すると、展開を自動化できます。
今使っています。とても簡単で便利です。
Githubでファイルをバージョン管理しますか?このスクリプト(および関連するGitHub / AWS構成)は、リポジトリへの新しいコミットを取得し、それらをS3バケットに同期します。
s3fs
実行可能な解決策であると信じています。