构建后自动的静态网站文件部署到S3

问题描述 投票:4回答:2

我有一个部署在S3和公开访问的应用程序的反应(SPA)。每个版本之后,我必须手动上传的index.html,和其他静态资产S3。有没有自动执行此过程中的任何方式?

我做了CD(持续部署)到S3穷举搜索,这里是一个差不多的SO question

我汇集来自我了详尽的研究所有信息。我已经写了下面的答案,有各种方法来实现这一目标。

amazon-web-services reactjs amazon-s3 automation
2个回答
7
投票

有很多方法可以做到S3部署的自动化。下面是我收集到的东西:

1. AWS SNS和Lambda:

这个过程是非常有用的,如果要触发GitHub上push.So任何AWS服务,这里的过程是:

  1. GitHub的推触发消息给SNS。
  2. 这是订阅的SNS主题拉姆达被调用。
  3. 拉姆达里面,我克隆GitHub的仓库。
  4. 使用AWS的S3 SDK来构建或dist目录上传到你的S3桶。这里是上述方法的高层体系结构:

Automation using SNS & Lambda

这种方法的缺点是克隆大回购需要时间和lambda表达式每秒计费。所以,这可能会成为大回购价格昂贵。

2.特拉维斯:

特拉维斯是著名的CI(持续集成)库。一个.travis.yml是整合过程是必不可少的。

如果你想使一些测试的构建之后再成功,将文件上传到S3。那么这种做法将是最好的方式。特拉维斯是免费的开源项目。

不足之处是,我无法找到一个方法来隔离回购目录,并单独上传特定目录。

3. AWS CLI:

这是将文件上传到S3最便宜最好的方式。我用这个方法。我从这个medium post此信息。

通常在反应的应用程序构建脚本被写为的package.json脚本故宫或纱线触发。下面是文件上传到S3的命令:

aws s3 sync build/ s3://<bucket-name>

我添加了这个脚本中的package.json构建脚本的一部分。这是非常方便的,因此自动将文件上传到S3的手动过程。

这个答案是基于我的观点。如果有什么不正确,或者如果我错过了什么,请随时发表评论,我将它添加到答案。


2
投票

我爱@lakshman's answer,但它不会为私人/的预置型到位桶回购和再碰上与商业世界的一些其他情况下工作。

类似的想法是到位桶型(和更多)是具有克隆到CodeCommit然后触发CodePipeline其包括CodeBuild步骤的代码。

CodeBuild可以推到S3。作为奖励,CodeBuild可以运行测试和包括额外的构建步骤根据需要(迁移,等)。到位桶具有钩镜允许CodeCommit克隆到位桶回购。我认为this是镜子挂钩联系,但仔细检查自己是有多个插件到位桶/扩展,包括名称中的字符串镜。

This SO question讨论了不同到位桶钩,还讨论克隆GitLab和JGit。同样,一旦代码是在CodeCommit然后CodePipeline可以从那里。

相反,使用到位桶钩的,你也可以使用一个Bitbucket pipeline

© www.soinside.com 2019 - 2024. All rights reserved.