我们最近在Google App Engine上设置了Node.js Web应用程序的持续集成/部署/交付。CI服务器(GitLabCI)根据分支(开发/母版)运行依赖项安装,构建,测试和部署到集成/产品。
在今天,我们所面对的唯一错误是在依赖步骤中,因此我们对此并不在意。但是昨天(16/10/16),发生了大规模的DNS中断,并且在部署步骤的中间,管道失败了,从而导致了产品故障。只需重新运行管道就可以完成工作,但是问题可以随时重现。
我的问题是:
在持续部署过程中,我们如何处理此类网络问题?
在Google App Engine上进行持续部署真的是一个好主意吗?
如果是,那么App Engine部署方法是什么?我找不到任何相关的文档...
目前,我们只有两个版本“ dev”和“ prod”在提交后进行了更新,但是在随机时间,我可以观察到奇怪的行为。
任何回应/建议/反馈都非常欢迎!
关于我正在谈论的网络问题的stacktrace示例:
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", line 387, in RunDeploy
all_services)
File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 247, in Deploy
manifest = _UploadFiles(service, code_bucket_ref)
File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 115, in _UploadFiles
service, code_bucket_ref)
File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_app_command_util.py", line 277, in CopyFilesToCodeBucketNoGsUtil
_UploadFiles(files_to_upload, bucket_ref)
File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_app_command_util.py", line 219, in _UploadFiles
results = pool.map(_UploadFile, tasks)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 558, in get
raise self._value
慕尼黑8549860