当前位置: 首页 > 面试题库 >

Gcloud预览应用无法解析我的Yaml

轩辕炎彬
2023-03-14
问题内容

我正在尝试使gcloud命令起作用,以便可以在Jenkins中运行它,但是我遇到了麻烦。

我在跑

gcloud --project=hv-match preview app deploy -q app.yaml --promote --verbosity debug --bucket gs://hv-match.appspot.com --version=1

这产生了这个:

DEBUG: Running gcloud.preview.app.deploy with Namespace(__calliope_internal_deepest_parser=ArgumentParser(prog='
gcloud.preview.app.deploy', usage=None, description="*(BETA)* This command is used to deploy both code and confi
guration to the App Engine\nserver.  As an input it takes one or more ``DEPLOYABLES'' that should be\nuploaded. 
 A ``DEPLOYABLE'' can be a module's .yaml file or a configuration's\n.yaml file.", version=None, formatter_class
=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=False), account=None, bucket='gs://hv-matc
h.appspot.com', cmd_func=<bound method Command.Run of <googlecloudsdk.calliope.backend.Command object at 0x1cd01
10>>, command_path=['gcloud', 'preview', 'app', 'deploy'], configuration=None, deployables=['app.yaml'], docker_
build=None, document=None, env_vars=None, force=False, format=None, h=None, help=None, http_timeout=None, log_ht
tp=None, project='hv-match', promote=True, quiet=True, server=None, set_default=None, stop_previous_version=None
, trace_email=None, trace_log=False, trace_token=None, user_output_enabled=None, verbosity='debug', version='1')
.
ERROR: Argument [app.yaml] is not a valid deployable file.
DEBUG: (gcloud.preview.app.deploy) Errors occurred while parsing the App Engine app configuration.
Traceback (most recent call last):
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 589, in Execute
    result = args.cmd_func(cli=self, args=args)
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/backend.py", line 1221, in Run
    resources = command_instance.Run(args)
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/appengine/app_commands/deploy.py", line 184, in Run
    args.deployables, project, args.version or util.GenerateVersionId())
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/yaml_parsing.py", line 351, in __init__
    raise AppConfigSetLoadError()
AppConfigSetLoadError: Errors occurred while parsing the App Engine app configuration.
ERROR: (gcloud.preview.app.deploy) Errors occurred while parsing the App Engine app configuration.

这是我的app.yaml:

runtime: php55
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
- url: /phpinfo.php
  script: phpinfo.php  
- url: /tabell.php
  script: tabell.php
- url: /lineup.php
  script: lineup.php
- url: /nextgame.php
  script: nextgame.php
- url: /pregame.php
  script: pregame.php
- url: /forumtext.php
  script: forumtext.php
- url: /livetabell.php
  script: livetabell.php
- url: /abbreviation.php
  script: abbreviation.php
- url: /SaveData.php
  script: SaveData.php
  login: admin
- url: /test.html
  script: test.html
- url: .*
  script: main.php
env_variables:
  apfykey: '*string-with-api-key*'

从谷歌搜索到可能与欧洲/美国问题有关,我不确定我的项目在哪里,但我的虚拟机至少在美国。还是可以其他?

在此先感谢您的帮助!

当我通过Jenkins Execute Shell运行上面的命令时,我得到以下输出:

DEBUG: Running gcloud.preview.app.deploy with Namespace(__calliope_internal_deepest_parser=ArgumentParser(prog='gcloud.preview.app.deploy', usage=None, description="*(BETA)* This command is used to deploy both code and configuration to the App Engine\nserver.
As an input it takes one or more ``DEPLOYABLES'' that should be\nuploaded.  A ``DEPLOYABLE'' can be a module's .yaml file or a configuration's\n.yaml file.", version=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error',
add_help=False), account=None, bucket='gs://hv-match.appspot.com', cmd_func=<bound method Command.Run of <googlecloudsdk.calliope.backend.Command object at 0x320c210>>, command_path=['gcloud', 'preview', 'app', 'deploy'], configuration=None,
deployables=['app.yaml'], docker_build=None, document=None, env_vars=None, force=False, format=None, h=None, help=None, http_timeout=None, log_http=None, project='hv-match', promote=True, quiet=True, server=None, set_default=None, stop_previous_version=None,
trace_email=None, trace_log=False, trace_token=None, user_output_enabled=None, verbosity='debug', version='1').
DEBUG: API endpoint: [https://appengine.googleapis.com/], API version: [v1beta4]
You are about to deploy the following modules:
 - hv-match/default (from [/opt/bitnami/apps/jenkins/jenkins_home/jobs/Deploy/workspace/app.yaml])
     Deployed URL: [https://hv-match.appspot.com]

Beginning deployment...
DEBUG: Using bucket [gs://hv-match.appspot.com].
INFO: Ignoring directory [.git]: Directory matches ignore regex.
INFO: Ignoring file [.gitignore]: File matches ignore regex.
DEBUG: Generated deployment manifest: "{
    *** removed for readability ***
}"
Copying files to Google Cloud Storage...
Synchronizing files to [gs://hv-match.appspot.com].
DEBUG: Running command: [/bin/bash /usr/local/share/google/google-cloud-sdk/bin/gsutil -m rsync -R -c /tmp/tmpPvL87s gs://hv-match.appspot.com], Env: [None]
Updating module [default]...DEBUG: Converted YAML to JSON: "{
    *** removed for readability ***
}"

Updating module [default]...failed.
DEBUG: (gcloud.preview.app.deploy) Error Response: [403] Request had insufficient authentication scopes.
Traceback (most recent call last):
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 589, in Execute
    result = args.cmd_func(cli=self, args=args)
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/backend.py", line 1221, in Run
    resources = command_instance.Run(args)
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/appengine/app_commands/deploy.py", line 250, in Run
    images.get(module))
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/appengine_api_client.py", line 73, in DeployModule
    self.client.apps_modules_versions.Create, create_request)
  File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/api/requests.py", line 41, in MakeRequest
    raise exceptions.HttpException(ExtractErrorMessage(error_json))
HttpException: Error Response: [403] Request had insufficient authentication scopes.
ERROR: (gcloud.preview.app.deploy) Error Response: [403] Request had insufficient authentication scopes.
Build step 'Execute shell' marked build as failure
Finished: FAILURE

所以事情完全不同,我在这里茫然不知所措…

输出 gcloud version

Google Cloud SDK 0.9.82
app 2015.10.08
bq 2.0.18
bq-nix 2.0.18
core 2015.10.08
core-nix 2015.09.03
gcloud 2015.10.08
gsutil 4.15
gsutil-nix 4.14

问题答案:

好的,我终于解决了我的问题!:)

在Google Cloud Shell中,我运行了:

PASSWORD=###%%%&&&                                                # 12 or more chars, with letters and numbers
PROJECT_ID=**PROJECT**
BITNAMI_IMAGE=bitnami-jenkins-1-634-0-linux-debian-7-x86-64       # e.g. bitnami-jenkins-1-606-0-linux-debian-7-x86-64

gcloud compute \
instances create bitnami-jenkins2 \
--project ${PROJECT_ID} \
--image-project bitnami-launchpad \
--image ${BITNAMI_IMAGE} \
--zone us-central1-b \
--machine-type g1-small \
--metadata "bitnami-base-password=${PASSWORD},bitnami-default-user=CHANGEUSERNAMEHERE,bitnami-key=jenkins,bitnami-name=Jenkins,bitnami-url=//bitnami.com/stack/jenkins,bitnami-description=Jenkins,startup-script-url=https://dl.google.com/dl/jenkins/p2dsetup/setup-script.sh" \
--scopes "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/compute,https://www,googleapis.com/auth/cloud.useraccounts,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/projecthosting,https://www.googleapis.com/auth/appengine.admin" \
--tags "bitnami-launchpad"

这创建了我的VM,但是使用了错误的用户,因为我通过上面的命令更改了用户名(无论如何,它都是使用“用户”创建的)。因此,我必须找到我的config.xml并将所有权限的用户名更改为正确的名称,并更新密码,并将默认用户名文件夹“ user”的文件夹重命名为我选择的用户名。

在那之后我几乎就在那里了,我缺少了一个必须启用的API。我去了 API和验证] > [API的云中的控制台,但找不到 AppEngine管理API我被放倒约在这里通过扎卡里(再次感谢花花公子!),但我已经错过了,你可以搜索超过100层的API和那些显示的不是唯一可用的,所以最终我找到了它。

我还必须为gcloud命令安装一些组件,这可以通过SSH进入虚拟机来完成。我安装了[preview]和[app]组件,以及更新了所有其他默认gcloud组件。

我的部署刚刚通过并更新了我的应用,非常感谢您的所有帮助!



 类似资料:
  • 太长别读:GCP秘密没有在bootstrap文件中解析,但是sql starter需要一个实例连接名和bootstrap上的库名 我正在尝试将GCP Secretmanager合并到一个Spring Boot应用程序中,该应用程序运行在Google App Engine上,并使用GCP SQL。 但是,在引导时似乎没有解析前缀。 作为参考,这是我pom的一部分。(我正在使用com.google.c

  • 我创建了一个java应用程序用户IntelliJ思想,当我配置时,我得到了一个错误: 无法解析包ypd... 但您可以看到,目录库是: 我的代码如下: 编辑 如果在项目结构中,我把包做为源根,没有办法,为什么?

  • 我是BIRT的新手,今天已经为Java和报表开发人员下载了Eclipse IDE。 在完成了一个教程之后,当我准备好预览我的报告时,我点击了“在Web Viewer上查看报告”和许多其他选项,但它总是为我启动Notepad+。 我的IDE有问题吗? 请指教。谢谢你抽出时间。 注意到错误日志中有一些错误,不确定这是否会影响报表的预览: java.lang.NullPointerException

  • Android Studio内联编译器显示红色错误,但使用gradle编译效果良好。Android Studio将语法标记为错误,但gradle编译 通过编辑和升级Gradle版本后,我的项目中断了。但是我可以在虚拟设备上运行它而不会出错。 最初我想让新遗迹工作,这需要新版本的gradle。这引起了更大的问题。你能帮我找到解决方案吗? 我想我明白了。我创建了一个新项目,只复制了旧项目的java源文

  • 问题内容: 我已经将应用程序的一个版本部署到GAE,但是现在我无法部署一个较新的版本。当我尝试时,出现一堆错误,表明远程版本找不到我的导入包: 我已经尝试过一些对GOPATH进行正确设置的建议,包括以root身份运行命令,sudo -E以及设置系统范围的GOPATH,到目前为止还算不错。无论我部署在Cloud Shell中还是在本地设置中运行命令,我都会遇到相同的错误集。如果我设置了错误的GOPA

  • VUE2的:src和v-if为什么不能绑定上这个后端返回值 返回的路径打开可以看到图片,HTML中直接加入src=也能看到图片,但是不能响应地预览图片。 希望大佬帮忙看看为什么头像上传以后不能预览