I'm trying to get the gcloud command to work so i can run it in Jenkins, but i'm having troubles.
I'm running
gcloud --project=hv-match preview app deploy -q app.yaml --promote --verbosity debug --bucket gs://hv-match.appspot.com --version=1
And that produces this:
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.
And this is my 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*'
From googling i've run it down to that it could be related to Europe/US issues, i'm not sure where my project is lozalized but my VM is in the US at least. Or can it be something else?
Thanks in advance for any help!
EDIT WITH JENKINS OUTPUT
When i run the command above through Jenkins Execute Shell i get this output instead:
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
So something completely different, i'm at a loss here...
Output of 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
Okay, i finally solved my problems! :)
In Google Cloud Shell i ran:
This created my VM but with the wrong user since i changed my username with the command above (it was created with "user" anyway). So i had to find my config.xml and change the username to the correct one for all permissions and update the password, as well as renaming the folder for the default username folder "user" to the username i choose.
After that i was almost there, i had a missing API which i had to enable. I went to APIs and auth > APIs in the Cloud Console but couldn't find the App Engine Admin API i was tipped about here by Zachary (thanks again dude!), but i had missed you could search for 100+ APIs and the ones shown wasn't the only ones available so eventually i found it.
I also had to install some components for the gcloud command, this could be done by SSH'ing into the VM. I installed the [preview] and [app] components, as well as updating all the other default gcloud components.
My deploy just passed and updated my app, thanks a lot for all help ya'll!
Request had insufficient scopes
is a message that indicates that the authentication method your using doesn't have permission to perform all of the tasks you need to do.If you're using a Jenkins instance hosted on a Google Compute Engine VM, you should either (1) create a new VM, and give it more permissive scopes, or (2) authenticate the Jenkins instance with a service account that has permission to access the App Engine and Compute Engine APIs.
We'll look into making these error messages more helpful.