Amazon web services AWS CodePipeline仅部署自上次部署以来已更改的文件,而不是简单地替换应用程序

Amazon web services AWS CodePipeline仅部署自上次部署以来已更改的文件,而不是简单地替换应用程序,amazon-web-services,aws-code-deploy,aws-codepipeline,aws-codecommit,Amazon Web Services,Aws Code Deploy,Aws Codepipeline,Aws Codecommit,TLDR我如何仅推动CodeDeploy部署从CodeCommit所做的更改 我使用CodePipeline构建了一个简单的CI/CD管道,其中我提交了CodeCommit,然后它使用CodePipeline将代码部署到我的Elastic Beanstalk应用程序中 问题在于,它似乎只是简单地复制整个应用程序并将其联机。这样,它将删除我以前在服务器上的所有日志。例如,.gitignore中的任何内容不仅不会提交到git,而且如果以前在服务器上,那么它将被删除 非常感谢您的任何意见或建议!❤️

TLDR我如何仅推动CodeDeploy部署从CodeCommit所做的更改

我使用CodePipeline构建了一个简单的CI/CD管道,其中我提交了CodeCommit,然后它使用CodePipeline将代码部署到我的Elastic Beanstalk应用程序中

问题在于,它似乎只是简单地复制整个应用程序并将其联机。这样,它将删除我以前在服务器上的所有日志。例如,.gitignore中的任何内容不仅不会提交到git,而且如果以前在服务器上,那么它将被删除

非常感谢您的任何意见或建议!❤️


谢谢

如果您想在代码管道激活时执行此操作,您需要有一个基于提交差异进行修剪的第一阶段(可能使用Lambda)。然后,这将替换进入实例的工件

请记住,CodeDeploy将用工件的内容替换文件夹的内容,因此您需要对此进行说明

然而这通常是一种不好的做法,事实上,您永远不应该依赖特定的服务器,尤其是用于日志记录的服务器

相反,构建您的服务器以将日志发送到分布式服务,例如服务器或第三方供应商。始终为基础架构的故障做好准备,通过允许轻松更换服务器,您的应用程序将更有弹性

这样,它将删除我以前在服务器上的所有日志

EB环境,无论是单实例还是负载平衡,始终在自动缩放组中运行。这意味着它们可以随时终止,例如由于AZ重新平衡或由于您的EB环境配置的更改


因此,您应该将所有应用程序构建为无状态,并且不依赖于它们上存储的任何信息。这迟早会导致一些问题(你现在正在经历其中的一些问题)。

另外,从答案中可以看出,你能澄清一下吗?CodeDeploy无法部署到ElasticBeanstaslk。EB实例不运行CD代理。那么CodeDeploy在您的设置中到底扮演什么角色呢?嗨,Marcin,实际上CodeDeploy可以部署到Elastic Beanstalk:)以下是可用的部署提供商:AWS CloudFormation、AWS CodeDeploy、AWS Elastic Beanstalk、AWS服务目录、Alexa Skills Kit、Amazon ECS、Amazon ECS(蓝色/绿色),还有AmazonS3。我觉得你把CodePipeline和CodeDeploy搞混了。它的CodePipline部署到EB,而不是CodeDeploy。。。你说得对。你完全正确。让我在上面编辑一下。抱歉搞混了!没问题。这是CD部署到EB的一个非常常见的误解。非常好的观点和好主意。我会把日志推到CloudWatch!没问题,希望一切顺利:)很好。好的:)我会确保将日志等与应用程序本身分开,这样就不会有问题了。:)谢谢