Google app engine Gcloud预览应用程序可以';不要解析我的yaml

Google app engine Gcloud预览应用程序可以';不要解析我的yaml,google-app-engine,deployment,jenkins,gcloud,Google App Engine,Deployment,Jenkins,Gcloud,我正在尝试让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(__calliop

我正在尝试让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.
从谷歌搜索到它可能与欧洲/美国问题有关,我不确定我的项目在哪里,但我的虚拟机至少在美国。或者是别的什么

提前感谢您的帮助

使用JENKINS输出进行编辑 当我通过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

请求作用域不足
是一条消息,指示您使用的身份验证方法没有权限执行您需要执行的所有任务

如果您正在使用托管在Google Compute Engine VM上的Jenkins实例,您应该(1)创建一个新的VM并给予它,或者(2)使用具有访问应用程序引擎和计算引擎API权限的验证Jenkins实例


我们将研究如何使这些错误消息更有帮助。

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

在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"
这创建了我的虚拟机,但使用了错误的用户,因为我用上面的命令更改了我的用户名(无论如何,它是用“user”创建的)。因此,我必须找到config.xml和,并将默认用户名文件夹“user”的文件夹重命名为我选择的用户名

在那之后,我几乎到了那里,我有一个丢失的API,我必须启用它。我在云控制台中访问了API和auth>API,但没有找到Zachary向我透露的应用引擎管理API(再次感谢dude!),但我错过了你可以搜索100多个API的机会,并且显示的API不是唯一可用的API,所以最终我找到了它

我还必须为gcloud命令安装一些组件,这可以通过SSH’ing到VM中来完成。我安装了[preview]和[app]组件,并更新了所有其他默认的gcloud组件


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

app.yaml
看起来不错,但是你运行的是什么版本的gcloud,你在运行它时看到过这个消息吗<代码>警告:“应用程序运行”命令已弃用,将很快被删除。请改用dev_appserver.py(与“gcloud”命令位于同一目录中)。我想不起来看到过该警告。如果我运行
gcloud version
我得到
gcloud 2015.10.08
,我会将其余的输出放在我的原始帖子中。你确定你的目录正确吗<代码>参数[app.yaml]不是有效的可部署文件。是一条与gcloud无法找到
app.yaml
一致的错误消息。您是否可以尝试在同一脚本中运行
cat app.yaml
,或在
gcloud
调用中指定完整路径?是,在部署之前,我已经运行了
ls
以及
cat app.yaml
,我可以在那里看到我的应用程序的所有文件以及yaml文件的正确内容。我添加了一个带有JSON文件的服务帐户,并将服务帐户的所有电子邮件地址变体添加到我的应用程序权限中,但仍然存在该错误。我将尝试创建另一个VM,然后…
curl“http://metadata/computeMetadata/v1/instance/service-accounts/“-H”元数据风格:Google”
返回
##############@project.gserviceaccount.com/
默认值/
运行
gcloud计算实例描述实例--格式化json
返回
无法获取资源:-权限不足
无法获取区域列表。指定[--zone]可能会解决此问题:-权限不足
取决于我在提示下选择的是
y
还是
n
,您是指实例的区域[us-central1-a]:[['[INSTANCE]']]?
在my的最后一次编辑中有我用来创建Jenkins VM的命令,我怀疑这需要更改以获得正确的范围?我没有正确检查命令,只是运行了它,我想这不是很聪明,但我认为它已经更新了。。。
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
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"