正确配置开发服务器和生产服务器之后,我想在Google App Engine上设置一个临时环境,可以在将新版本部署到生产环境之前对其进行实时测试.
我知道两种不同的方法:
答:第一个选项是修改app.yaml 版本参数.
version: app-staging
Run Code Online (Sandbox Code Playgroud)
我不喜欢这种方法的是生产数据受到我的临时测试的污染,因为(如果我错了,请纠正我):
关于第一点,我不知道是否可以使用新的命名空间python API "修复"它.
B.第二个选项是修改app.yaml 应用程序参数
application: foonamestaging
Run Code Online (Sandbox Code Playgroud)
通过这种方法,我将创建一个完全独立于Production版本的第二个应用程序.
我看到的唯一缺点是我被迫配置第二个应用程序(管理员设置).
使用像Gaebar这样的备份\还原工具,此解决方案也可以正常运行.
您使用什么样的方法为Web应用程序设置临时环境?
另外,在部署之前,您是否有任何自动脚本来更改yaml?
我遇到了这个错误将近一个小时,但找到了一个解决方案,导致了一个令人担忧的困境。该解决方案让我们意识到,当任务队列中有一个任务要由要替换的服务器版本提供服务时,无法运行 gcloud app deploy。
错误是:ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build XXXXXXXXXXXX status: FAILURE
那个 xxxx 部分是一些自动生成的 base64 值。
解决方法是:删除任务队列中的所有任务
问题:是否有解决方法或者我必须在部署之前删除任务队列中的所有任务(就像我所做的那样)?
详细信息:服务器是用 nodejs 编写的。
google-app-engine task-queue google-tasks-api google-cloud-platform gcloud
我们正在使用 google Cloud Build 将我们的应用程序的拉请求特定版本部署到 GAE,以便我们可以在将其发布到野外之前与利益相关者共享开发版本。在 GAE 上,网址看起来像http://[VERSION_ID]-dot-[YOUR_PROJECT_ID].appspot.com
或https://my-pr-name-dot-projectname.appspot.com
我们希望允许利益相关者预览并运行 E2E 测试(包括 Firebase 登录),但由于本质上是通配符子域,因此我们必须在 Firebase 控制面板中的“授权域”下手动将每个子域列入白名单部署。不幸的是,Firebase 不允许使用通配符样式白名单(例如 *-dot-projectname.appspot.com)。
我们已联系 Google 支持人员,但他们确认白名单只能手动完成。
我们最近在 Google App Engine 上设置了一个 nodejs webapp 的持续集成/部署/交付。CI 服务器 (GitLabCI) 根据分支 (develop/master) 运行依赖项安装、构建、测试和部署到集成/生产。
在今天,我们面临的唯一错误是在依赖步骤期间,所以我们并没有太在意它。但是昨天(21/10/16)发生了大规模的 DNS 中断,并且管道在部署步骤中间失败,导致生产中断。只需重新运行管道即可完成工作,但问题随时可能重现。
我的问题是:
目前我们只有两个版本“dev”和“prod”在提交后更新,但在随机时间我可以观察到奇怪的行为。
非常欢迎任何回应/建议/反馈!
关于我正在谈论的网络问题的堆栈跟踪示例:
DEBUG: Error sending result: 'MetadataServerException(HTTPError(),)'. Reason: 'PicklingError("Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed",)'
Traceback (most recent call last):
File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 733, in Execute
resources = args.calliope_command.Run(cli=self, args=args)
File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 1630, in Run
resources = command_instance.Run(args)
File "/google-cloud-sdk/lib/surface/app/deploy.py", line 53, in Run
return deploy_util.RunDeploy(self, args)
File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", …
Run Code Online (Sandbox Code Playgroud) google-app-engine continuous-integration continuous-deployment continuous-delivery gitlab-ci
我正在尝试了解dispatch.yaml
Google App Engine 的文件。
我们有一个带有前端和后端的香草Web应用程序。我们也有开发和生产环境。两种环境在GAE上都有两项服务- frontend
和default
,这是后端。
我们有一个带有前端和后端的香草Web应用程序。我们也有开发和生产环境。我们在GAE上提供两项服务-前端和默认(后端)。我们在GAE上有两个项目- staging
,这是我们的开发环境,而production
,是我们的生产环境。暂存环境是从前端和后端的dev分支构建的。生产环境是由前端和后端的主人构建的。
我们想在登台和生产环境中使用自定义路线。
我尝试使用dispatch_staging.yaml
和dispatch_prod.yaml
区分文件,但GAE无法识别这些文件名。我猜我们可以重命名前端服务,但是看起来好像没有办法解决default
。
您如何使用它dispatch.yaml
来指定要构建的环境?