使用Git发布到S3?

And*_*rew 82 git amazon-s3

有谁知道如何做到这一点?到目前为止,我还没有通过谷歌找到任何有用的东西.

我真的想设置一个本地仓库并用git push它将它发布到S3,这个想法是对资产进行本地版本控制,而在S3上进行远程存储.

可以这样做,如果是这样,怎么办?

Ric*_*LEE 50

1 通过http://blog.spearce.org/2008/07/using-jgit-to-publish-on-amazon-s3.html 使用JGit

下载jgit.sh,将其重命名为jgit并将其放在路径中(例如$ HOME/bin).

设置.jgit配置文件并添加以下内容(替换您的AWS密钥):

$ vim~/.jgit

accesskey: aws access key
secretkey: aws secret access key
Run Code Online (Sandbox Code Playgroud)

注意,通过在.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
Run Code Online (Sandbox Code Playgroud)

在上面我使用s3cmd命令行工具来创建存储桶,但您也可以通过Amazon Web界面执行此操作.现在让我们把它推到S3(注意我们在每次与S3交互时使用jgit,否则使用标准git):

jgit push origin master
Run Code Online (Sandbox Code Playgroud)

现在去其他地方(例如cd/tmp)并尝试克隆它:

jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git
Run Code Online (Sandbox Code Playgroud)

当需要更新它时(因为jgit不支持合并或拉动),你可以分2步完成:

cd chef-recipes
jgit fetch
git merge origin/master
Run Code Online (Sandbox Code Playgroud)

2 使用Amazon S3支持的基于FUSE的文件系统

  1. 获取Amazon S3帐户!

  2. 下载,编译和安装.(参见InstallationNotes)

  3. 通过以下方法之一指定您的安全凭证(访问密钥ID和秘密访问密钥):

    • 使用passwd_file命令行选项

    • 设置AWSACCESSKEYID和AWSSECRETACCESSKEY环境变量

    • 在主目录中使用.passwd-s3fs文件

    • 使用系统范围的/ etc/passwd-s3fs文件

    • 做这个

.

/usr/bin/s3fs mybucket /mnt
Run Code Online (Sandbox Code Playgroud)

而已!您的亚马逊水桶"mybucket"的内容现在应该可以在/ mnt中读/写

  • 你为什么不用git?这似乎是很多额外的工作/东西只是为了一个简单的远程git仓库... (4认同)
  • @cmculloh,如果您还没有 EC2 实例,那么仅仅拥有一个 git 存储库就可能会带来更多麻烦并且长期成本高昂。默认情况下,S3 存储也更加耐用;为了在 EC2 上获得相同的持久性,您必须将快照备份到 S3 (2认同)

sct*_*lsn 10

蒲公英是另一个CLI工具,它将使Git存储库与S3/FTP/SFTP保持同步:http: //github.com/scttnlsn/dandelion


sch*_*ing 8

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

你只需要跑 git-s3 deploy

它具有git repo和uploades /删除所有优点,只是您更改的文件.
注意:部署不是通过git push隐式的,但你可以通过git钩子实现.

  • 仅供参考,这取决于`Composer`,而后者依赖于`PHP`. (14认同)

b01*_*b01 5

您还可以使用 AWS CLI 和 Git(带钩子)执行此操作。已验证可在 Windows 10 上运行。应可在 Linux/Mac 上运行。

在提交时设置同步到 S3

  1. 安装 AWS CLI
  2. 设置 IAM 编程访问凭证(您可以限制为 S3,甚至可以限制为仅存储桶)。
  3. 使用凭证配置 AWS CLI
  4. 在 AWS 控制台或 CLI 上创建 S3 存储桶。
  5. 确保存储桶是私有的。
  6. bare为现有的 git 项目创建一个新的git 仓库:
mkdir myproject.git
cd myproject.git
git init --bare
Run Code Online (Sandbox Code Playgroud)

注意:使用裸存储库将作为上游,裸存储库将只包含您想要上传到 S3 存储桶的更改,而不会忽略文件、本地 git 配置等。

  1. 将此钩子安装post-updatehooksmyproject.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/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用正确的 S3 存储桶名称更新挂钩。
  3. 现在 cd 进入您的myproject目录并将裸仓库添加为上游,s3例如命名:
git remote add s3 path/to/bare/directory/myproject.git 
Run Code Online (Sandbox Code Playgroud)

注意:您可以使用相对路径作为裸目录的路径。

测试

  1. 将更改添加到您的存储库并提交。
  2. s3当您想要将更改同步到 S3 存储桶时,将更改推送到上游。
  3. 您应该会看到更改同步到您指定的 S3 存储桶,您还可以查看 S3 存储桶中的更改以验证一切正常。

参考: