1

好的,这是交易。我使用弹性豆茎并有两个环境。他们每个人都有自己的名字和网址,比如说 env-one = foo.elasticbeanstalk.com 和 env-two = bar.elasticbeanstalk.com。

然后我们有生产域:example.com。

example.com 有一个指向 foo.elasticbeanstalk.com 的 cname

默认推送环境是 env-two。

我推送到默认环境并检查一切是否正常,就像正常的开发环境一样。当每个人都高兴时,我切换 url,以便开发环境变成生产环境,反之亦然。

所以现在,env-two = foo.elasticbeanstalk.com 和 env-one = bar.elasticbeanstalk.com

问题是,默认的推送环境还是 env-2,但是现在变成了生产环境。所以下次我需要推送到 dev 时,我必须定义我想要推送到 env-one。

git aws.push --environment env-one

所以,我正在寻找的是一种不必定义我想要推送到什么环境的方法。

提前感谢您的回答。我希望有一个解决方案。

4

2 回答 2

1

一些想法:

1)这有点超出了您询问的范围(而且我不是 AWS 专家),但是如果这是一个公共站点,则考虑到 DNS 传播延迟,DNS 切换可能会给您留下一个冲突窗口。

2)您可以定义第二个 DNS 别名“dev.elasticbeanstalk.com”并同时交换它,然后总是推送到那个。

3) 如果你只是从一个本地仓库推送,你可以做一些“git remote set-url”魔术来切换 URL,这样你就可以推送到正确的仓库。但是,这对我来说似乎很容易出错。

如果我要继续使用 DNS,我会使用选项 #,然后设置一个监控系统,如果“开发”将触发该系统。和“example.com”指向同一个 A 记录。

于 2013-03-06T18:15:54.767 回答
1

当您使用此指令创建要在 AWS EB 上部署的 git 存储库时(我选择了 PHP 一种,其他语言的工作流程相同)并运行eb init命令,它会创建包含环境描述的特殊.elasticbeanstalk文件夹。

当您运行eb start命令时,将使用该描述创建环境。

每次调用git aws.push命令时 - 都会生成新的远程 git URL。它取决于应用程序名称、环境名称、提交 ID、本地时间和 AWS 凭证。在git aws.push命令中仅使用生成的 URL - git 存储库远程 URL 被忽略。由于 URL 取决于当前时间,因此它总是不同的。

要默认部署在另一个环境中,您只需更改.elasticbeanstalk\config文件中的EnvironmentName选项(如果您的环境在同一个应用程序中并且具有相似的设置)。

如果您的环境在另一个应用程序中或一个设置不同,我认为您应该删除.elasticbeanstalk文件夹并再次运行eb init命令,根据您已经存在的环境参数传递答案。之后,您可以传递eb init命令(因为环境已经存在)并继续使用git aws.push

于 2013-12-27T18:25:30.633 回答