【发布时间】:2017-12-06 04:32:09
【问题描述】:
在 Google App Engine app.yaml 文件中,您指定 a version property(尽管当前首选项而不是 app.yaml:“...改为使用 command-line flag (--version) 来指定您的版本 ID”)。
就我而言,我将它用于不同的环境。 (见底部注释)如 app.yaml 中所述,唯一的版本值会产生唯一的 URL:
注意:版本名称应以字母开头,以将它们与始终由数字指定的数字实例区分开来。这避免了 URL 像 123.my-service.appspot.com...
的歧义
我使用两个版本,第一个作为我的“QA 环境”,第二个作为我的“生产环境”:
- 开发
- 1
我希望我的代码设置一个变量is_prod,并且我希望该值是布尔值True如果版本值等于'dev'。我该怎么做?
*注意,正如@Dan Cornilescu 在 cmets 中所说,使用环境版本可能不是一个好主意,例如 this 和 this 之类的帖子
【问题讨论】:
-
旁注:使用版本控制来实现环境是有问题的,请参阅stackoverflow.com/questions/40192557/…。推荐使用服务或整个应用程序,请参阅stackoverflow.com/questions/43218971/…
-
我认为将其纳入我的问题本身是一个很好的警告。谢谢你。您能否举例说明为什么/如何/应该使用版本控制(如果不是环境?)
-
不是真的 - 我不会使用版本控制来实现环境开始;)主要是因为我会失去(或至少变得非常困难)对环境和应用程序代码本身进行版本控制: 某个版本字符串代表一个环境(如果是,该环境的哪个版本?)或某个版本的应用程序代码?
-
我个人更喜欢单独的应用程序来实现环境以确保数据存储隔离 - 我不希望行为不端的环境污染或可能破坏另一个环境的数据,尤其是生产环境:stackoverflow.com/questions/43118879/…
-
该版本的最初目标是对应用程序部署进行版本控制。但是为此,您必须明确更改版本,因此它实际上取决于您想用它做什么。版本控制的重要用途是在将实时流量切换到新版本之前进行测试,traffic splitting 用于实时 A-B 测试,traffic merging 用于无中断应用升级