如何在不需要重新上传的情况下本地测试 AWS Codepipeline (Codebuild+Codeploy)

How localy test an AWS Codepipeline (Codebuild+Codeploy) without need to reupload

我的应用程序需要能够对现有管道进行一些更改,因此我希望能够在本地对其进行测试,而无需一直提交我的代码以检查其功能。

你知道我该怎么做吗?我想做的是检查带有我的更改的管道是否会破坏我的构建过程,而无需实际进行远程构建和部署。

可以选择 运行 您使用 CodeBuild Local [1] 在本地构建,但是 CodeDeploy 或 CodePipeline 不存在这样的选项。

您也许可以用不同的方式解决问题。尝试禁用从构建到部署的转换或在部署阶段的部署操作之前放置手动批准操作以控制部署发生的时间。

参考:

[1] https://docs.aws.amazon.com/codebuild/latest/userguide/use-codebuild-agent.html#use-codebuild-agent

这可能不是您想要的,但如果它对 Google 的人有帮助,您可以使用此技巧。

确保你是唯一一个在回购上工作的人,然后提交一次你的第一批更改,然后在你测试的时候一遍又一遍地修改那个提交。当然,您需要强制推送它,但这允许您进行重复更改,而不会因大量实验性更改而污染提交历史记录,并且 CodeBuild 将尽职尽责地正常构建每个修改后的提交。

只需进行更改,添加它们就好像您要进行新的提交一样,但是 运行 git commit --amend 相反。您现在无法推送,因为远程仓库中的最新提交与您自己的不同,但您可以强制推送以覆盖您现在已更改的远程提交。

通常强制推送是不好的,因为它会导致很多问题,但这是适合工作的场景之一,只要你小心。

您可以使用 --amend 继续修改您的最新提交,一遍又一遍地强制推送它,CodeBuild 将在每次强制推送时重建它。

完成后,您可以使用最终的 --amend 清理提交,或者使用 git reset HEAD~1 之类的方式将其完全删除,执行最后一次强制推送以从中删除提交remote repo也是,然后继续正常开发。

只需确保在您执行此操作时没有其他人在推送代码,否则您的强制推送将覆盖他们的所有提交 - 让所有人等到您完成测试,然后让他们执行 git pull --rebase,然后他们终于可以正常推送来分享他们在等待你时所做的提交。