当代码仓库不在 git 中时,如何在 AWS 网络服务器中部署代码?

Posted

技术标签:

【中文标题】当代码仓库不在 git 中时,如何在 AWS 网络服务器中部署代码?【英文标题】:How to deploy code in AWS webserver when code repo is NOT in git? 【发布时间】:2016-08-13 10:53:23 【问题描述】:

最近我参与了一个项目,我在 AWS 中设置了 LAMP 堆栈,并帮助团队构建其他基础设施。根据公司政策,我们需要每 60 天创建一个新实例,获取最新的 ami 并杀死前一个。为此,我要求开发团队将 php 代码移至 git repo。这将帮助我自动化构建,以便我可以直接从 git 中提取代码。但是,他们说出于某种许可原因,他们不想在 git 中移动代码,因为他们使用的代码是从 phpgrid(供应商)购买的。这对我来说有点奇怪......无论如何,如果代码不在 git 中,我们如何在 webserver 中自动化代码部署?关于最佳实践的任何想法?不想从某人的机器上 ftp 代码:(

【问题讨论】:

我怀疑他们不希望代码最终出现在公共 git 平台上。但是,git 不是 github(或任何其他公共 'git-ish' 服务。您可以在企业架构中安全的地方构建自己的 git 服务器,并将其用作 repo(即满足所有所谓的要求)保护知识产权)。 他们自己的代码应该放在 Git 中。任何外部依赖项都应由它们在其引用中自动解决。不过,您仍然可以将外部代码放在那里。这没有问题。如果您使用的是第三方代码,那么无论如何您都应该获得适当的许可才能使用它,因此您是否将该代码复制到您自己的 git 存储库中也没关系。 尝试 s3 并在启动新的 ec2 实例时使用用户数据? 谢谢大家!我最终说服了他们使用私有存储库 【参考方案1】:

AWS Code Deploy 服务专为此类代码部署而构建。

AWS CodeDeploy 是 AWS 部署服务系列的一部分, 包括 AWS Elastic Beanstalk、AWS CodePipeline、AWS CloudFormation、 和 AWS OpsWorks。 AWS CodeDeploy 协调应用程序部署 到 Amazon EC2 实例、本地实例或两者。 (现场 实例是不是 Amazon EC2 实例的物理设备。)

应用程序可以包含可部署的内容,例如代码、Web 和 配置文件、可执行文件、包、脚本等。 AWS CodeDeploy 从 Amazon S3 存储桶和 GitHub 部署应用程序 存储库。

您真的可以使用任何存储库。您只需要一个过程将代码从其存储库移动到指定的 S3 存储桶。代码可以在任何地方:SVN、本地等。只需将其压缩,移动到 S3 并注册修订并根据需要进行部署。 不需要 GIT 存储库,但 CodeDeploy 直接支持它。

我们将流程与我们的持续集成服务器 Jenkins 集成,因此所有构建都作为 CodeDeploy-ready 修订版发送到 S3。

有no cost for using this feature when deploying to AWS instances - 免费!

【讨论】:

感谢分享。虽然我最终说服了他们使用私有存储库,但我将尝试代码部署

以上是关于当代码仓库不在 git 中时,如何在 AWS 网络服务器中部署代码?的主要内容,如果未能解决你的问题,请参考以下文章

当用户不在 Yesod/Haskell 的数据库中时如何重定向到特殊页面

如何将目标(不在 AWS 上)注册到网络负载均衡器?

当节点不在视图中时如何删除它?

当用户不在聊天中时如何显示发送的最后一条消息?

而(真);当不在 void 中时,循环会抛出无法访问的代码

swift - 当persistentContainer不在App委托方法中时如何从核心数据中删除所有数据