在github上将静态站点部署到s3的最佳策略?

Mik*_*las 30 git deployment github amazon-s3 amazon-web-services

我想自动将我们的站点部署到AWS S3.我已经编写了一个节点脚本来自动构建和上传站点,但是我希望每当master我们的repo分支在github上更新时脚本就会自动运行.

我查看了AWS CodeDeploy,但它看起来像是专门部署到EC2.我也看过AWS Lambda,但似乎没有一个明确的方法来使用repo副本,git所以我可以运行脚本.

我可以使用的任何服务(最好是与AWS绑定)?

Mat*_*ock 12

我前段时间有同样的目标,现在已经发布了一个小工具,至少对我来说解决了这个问题.它采用AWS Lambda和部署存储库的具体分支S3push.您可以充分利用GitHub部署密钥,该密钥具有较少的个人访问令牌权限,并且可以按存储库进行配置.

请看一下github-bucket,它也可以帮到你.

GitHub的-S3部署架构


oce*_*ean 10

而不是直接使用的AWS服务(如你所说,他们几乎都希望一个更复杂的设置,部署到EC2等),你可能会更好使用CI提供商,如可发运,CodeshipWercker.

这些都能够从git更新,运行构建命令,将实用程序安装到其CI映像/容器并将文件复制到S3.

可能有一些创业公司为你的目的建立了一个精确的工具,但他们还没有出现在我的雷达上:-)


Dam*_*yer 9

我知道这不是git deploy ....但是我没有设置CI盒子,而是使用了s3cmd.

http://s3tools.org/s3cmd

执行此命令会将我的构建目录与s3同步.

s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed
Run Code Online (Sandbox Code Playgroud)

我在Linux上使用它.不确定他们的OSX和Windows故事是什么.

如果你真的在使用git push解决方案,你可以设置一个定时作业,将你的git repo拉到一个文件夹,然后对它执行.我在廉价的Linux VM上的其他地方这样做.除非你打算去完整的CI,否则可能没什么意义.


Pat*_*Chu 7

您可以使用非常简单的两步CodePipeline进行设置.基本上,您只需在AWS控制台中填写不同的部分.不需要单独的CI工具及其增加的复杂性.

在pipline的第一步,从Github拉出并存储在S3中.您可以通过AWS控制台轻松进行设置.

在下一个CodeDeploy步骤中,您可以使用AWS CLI(预先安装在CodeDeploy中)来执行操作

cd /path/to/public/directory && aws s3 sync --acl public-read --delete . s3://your.bucket.name
Run Code Online (Sandbox Code Playgroud)

您必须为AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY设置环境变量,以便AWS CLI可以在部署步骤中运行,也可以在AWS控制台中为CodeDeploy完成,在"环境变量"下的"高级"部分中.一旦设置了环境变量,并且该AWS用户具有正确的权限,您就可以在CodeDeploy中运行任何所需的aws-cli命令.

完成此操作后,当您登记到Github时,CodePipeline将启动,几分钟后您的文件将在S3上.


Mic*_*cky 6

如果您使用的是TravisCI,则部署非常简单.您需要添加的唯一部分.travis.yml是:

deploy:                         
  provider: s3                         
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key:
    secure: "w/DlbHt1+IAMENCRYPTED"
  bucket: "YOUR BUCKET"
Run Code Online (Sandbox Code Playgroud)

我的博客文章解释了AWS端的所有细节(用户设置,IAM和S3存储桶配置)以及github和travisCI端.