我正在从Bitbucket管道环境中将node.js服务器部署到Google App Engine,脚本中的最后一个命令是:gcloud -q app deploy app.yaml --no-promote --verbosity=debug
日志显示服务已成功部署,但脚本未终止,这是日志的最后一部分:
> DEBUG: Reading GCS logfile: 206 (read 10 bytes) PUSH DONE DEBUG:
> Operation [...] complete. Result: {...} DEBUG: Reading GCS logfile:
> 416 (no new content; keep polling)
> -------------------------------------------------------------------------------- DEBUG: Converted YAML to JSON: "{...}" DEBUG: Operation [...] not
> complete. Waiting to retry. Updating service [default] (this may take
> several minutes)... .DEBUG: Operation [...] not complete. Waiting to
> retry. ......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.
> ......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.
我尝试将readiness_check
和liveness_check
添加到app.yml中,但是并没有改变行为。
readiness_check:
path: "/api/public/logout"
check_interval_sec: 5
timeout_sec: 4
failure_threshold: 2
success_threshold: 2
app_start_timeout_sec: 300
liveness_check:
path: "/api/public/logout"
check_interval_sec: 30
timeout_sec: 4
failure_threshold: 2
success_threshold: 2
这里主要未知的是gcloud app deploy
使用什么标准来确定终止条件?
此外,是否可以绕过这个问题?
gcloud app deploy
命令时,也会发生此问题。答案 0 :(得分:1)
gcloud app deploy
command需要格式正确且有效的app.yml
文件,这是决定其终止条件的原因。
当您确认部署没有--no-promote
标志就可以正常工作时,这可能意味着配置中的某些内容期望应用程序已经部署并正在运行,从而阻止脚本完成。
另一个可能的原因是bitbucket-pipelines.yml
中指定的Google Cloud SDK版本较旧。确保您work with the latest。这一考虑广泛适用于package.json
中的所有依赖项,这可能会相互冲突,尤其是在使用较旧的versions of Node.js时。
本指南可帮助构建声音configuration for Bitbucket-based deployments;尽管给出的示例是使用Python的,但它也可以用作处理Node.js管道的模板。
Nb。 在此解决方案中,Google Cloud SDK version is an older one (127.0.0)将使此部署失败,因此应将其替换为最新版本(228.0.0或更高版本)。该指南还忽略了另一个必需的API激活:Cloud Build API。我已通知团队修改解决方案。
我已经用一个简单的Node.js服务器测试了几种方案,并且无法重现该问题。检查我的Github repository for the code。
有关此主题的更多帮助,请提供更多提示,例如app.yml
,bitbucket-pipelines.yml
和package.json
文件的内容,以及对文件状态的描述。 App Engine(服务,版本)。
为了将测试存储库从Bitbucket部署到App Engine,请确保在项目上完成以下操作:
启用API:
创建具有以下权限的服务帐户,并生成API密钥: