Using gcloud on Travis CI - google-app-engine

I have gcloud installed and working and a service account gets also activated. I run the following and get a success(?):
$ gcloud auth activate-service-account "${GAE_CLIENT_ACCOUNT}" --key-file "${GAE_CLIENT_KEY_JSON_FILE}"
Activated service account credentials for: [xxxxx#developer.gserviceaccount.com]
Then I run this:
$ gcloud preview app deploy app.yaml --project "${GAE_PROJECT_ID}" --quiet --version "${GAE_PROJECT_VERSION}"
You are about to deploy the following modules:
- ricochet-robots/default/dev From: [/home/travis/build/ricochetrobots/ricochetrobots-landing/app.yaml]
Updating module [default]...Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=xxxxxxxx.apps.googleusercontent.com&access_type=offline
Updating module [default].../
As you can see, it prompts me to follow the link and do an oauth. Because I'm on a ci server, it's not possible to follow the link.
How kan I suppress that? Or is there a totally diffrent way of deploying the app automatically.

This is a known issue in version 0.9.61.
For now, you can work around by pinning to a previous version:
gcloud config set component_manager/fixed_sdk_version 0.9.60
gcloud components update
Since you're running in a CI server, you can also set the following environment variable, if you run gcloud components update in your script. This may be an easier fix, depending on your CI server.
CLOUDSDK_COMPONENT_MANAGER_SNAPSHOT_URL=https://dl.google.com/dl/cloudsdk/release/components-v0.9.60.json
Running gcloud preview app deploy --set-default using a service account has the same issue in versions 0.9.57 through 0.9.62. If you'd like to use this command, you can pin to 0.9.56.
We're targeting a fix for version 0.9.63 or shortly thereafter. Follow the issue on the gcloud bug tracker for more updates.
EDIT: This issue was fixed in version 0.9.63.

Related

`gcloud preview app deploy` gives MaxRetrialsException in version 105.0.0

When I run gcloud preview app deploy with Cloud SDK version 105.0.0, I get the following error message:
ERROR: gcloud crashed (MaxRetrialsException): last_result=(None, (<class 'googlecloudsdk.calliope.exceptions.BadFileException'>, BadFileException('[.../source-context.json] not found or not accessible',), <traceback object at 0x7f7bb4ab07e8>)), last_retrial=3, time_passed_ms=1,time_to_wait=0
This is a known issue, and is fixed in the 106.0.0 Cloud SDK release. Please update to that release.
If you cannot, work around by running:
gcloud config set app/use_gsutil true
This particular issue happens when using gcloud to deploy to a 'standard' (as opposed to a 'managed VM' or 'flexible') App Engine app that has a .git directory.

Difference between 'goapp deploy' and 'appcf.py' to deploy my app on Google App Engine?

I don't understand the difference between
goapp deploy -application <YOUR_PROJECT_ID> myapp/
and
appcfg.py -A <YOUR_PROJECT_ID_> -V v1 update myapp/
when trying to deploy my app in google app engine. Can somebody enlighten me please?
Documented in Uploading, Downloading, and Managing a Go App:
goapp deploy wraps the appcfg.py python tool provided in the SDK. You can also invoke this tool directly if you need greater control over the deployment.
goapp deploy is equivalent to appcfg.py update myapp/.
These commands get application ID and other configuration from app.yaml automatically. You can use -application param of goapp, or -A of appcfg.py to override the application ID.
So goapp deploy calls appcfg.py under the hood, it is a convenient method to hide appcfg.py.
goapp deploy -application <YOUR_PROJECT_ID> myapp/
Deploys the application located in the myapp folder. Configuration will be read from the app.yaml file that must be at myapp/app.yaml. The command also overrides the application ID (if present in app.yaml), and <YOUR_PROJECT_ID> will be used instead.
appcfg.py -A <YOUR_PROJECT_ID> -V v1 update myapp/
This also deploys the application, but the -V overrides the version that may be present in myapp/app.yaml, and will use the version v1. -A is used to override the ID from app.yaml, will be <YOUR_PROJECT_ID> in this case.
goapp is a general tool for the whole Go-on-App-Engine workflow from build to deployment; you can use the same tool to install dependences (get), build your app, run locally (serve) and then deploy it (as well as run tests, format code, etc).
Some of these wrap other tools: goapp fmt probably just wraps gofmt, whilst goapp deploy just wraps appcfg.py update (see docs)

ERROR: (gcloud.preview.app) Invalid choice: 'run'

I'm trying to get the golang hello-world bigtable example running locally locally and running into this issue. When I run gcloud preview app run app.yaml from the bigtable-hello directory, I get the following error:
➜ bigtable-hello gcloud preview app run app.yaml
Usage: gcloud
preview app [optional flags] group may be
modules command may be deploy | gen-config
(BETA) This set of commands allows you to deploy your app, manage your existing deployments, and also run your app locally. These
commands replace their equivalents in the appcfg tool.
global flags: Run gcloud -h for a description of flags available
to all commands.
command groups: modules (BETA) View and manage your
App Engine modules.
commands: deploy (BETA) Deploy the local code
and/or configuration of
your app to App Engine. gen-config (BETA) Generate missing configuration files for a
source directory.
ERROR: (gcloud.preview.app) Invalid choice: 'run'.
Valid choices are [deploy, gen-config, gen-repo-info-file, instances,
modules, services, versions].
I've put the demo files into my local go directory like below:
app run is no longer part of the gcloud SDK as can be seen under all the possible command trees:
gcloud alpha has no app command group
gcloud app has no run command
gcloud beta has no run command
gcloud preview app has no app command group
This was removed with version 92.0.0 released on January 13, 2016. That changelog recommends using dev_appserver.py instead. An example can be found in Running the local development server.
> dev_appserver.py src/github.com/jamescharlesworth/bigtable-hello
Other flags and options can be found in dev_appserver.py's documentation in Local Development Server Options.

Can't get the Go Guestbook demo for Google App Engine Managed VM to run locally

I'm following the instructions on this page: https://cloud.google.com/appengine/docs/go/managed-vms/ trying to get the example guestbook demo shown here to work: https://github.com/golang/appengine/tree/master/demos/guestbook
The demo works when deployed, but not when run locally. Running locally gives following error in the browser when hitting localhost:8080: service bridge HTTP failed: Post http://10.0.2.2:41019/rpc_http: dial tcp 10.0.2.2:41019: i/o timeout
The error occurs when trying to access the datastore. The debug statement is DEBUG: Container: f18ca4d19536: 2014/12/31 03:08:22 ERROR: GetAll: service bridge HTTP failed: Post http://10.0.2.2:36788/rpc_http: dial tcp 10.0.2.2:36788: i/o timeout which is generated when the query.GetAll function fails.
Here are the statements I used to prepare to run the guestbook demo:
gcloud config set project <project name>
gcloud components update app
gcloud components update gae-go
goapp get google.golang.org/appengine
gcloud preview app setup-managed-vms
remove the "application: vm-guestbook" line from app.yaml
add "apt-get update" to the generated Dockerfile
gcloud preview app run app.yaml
Any ideas what's wrong? If I deploy the app using gcloud preview app deploy app.yaml it works fine. But I'd really like to figure out how to run Managed VM apps locally.
I should mention that I'm able to run the helloworld demo locally. The difference is the helloworld demo doesn't access the datastore. Also, I'm running on Ubuntu 14.04.
It turns out that your configuration is not currently supported.
We currently require the use of boot2docker and VirtualBox even on Linux.

gcloud get-logs command not working

I was trying to download logs from a GAE app using the gcloud cli
In the documentation the command I was supposed to use was:
gcloud preview app get-logs --version 1 default mylogs.txt
However, when running this command I get the following error:
ERROR: (gcloud.preview.app) Invalid choice: 'get-logs'. Did you mean 'deploy'?
All the tools are installed and there's nothing to update using gcloud components list and gcloud components update
Also I have authenticated and set the project
gcloud auth login
gcloud config set project mytestproject
This command moved to go underneath the modules command group, and unfortunately the documentation lagged behind.
The equivalent command is
$ gcloud preview app modules get-logs --version 1 default mylogs.txt
Sorry for the confusion!
You can also try appcfg.py request_logs myapp/ mylogs.txt to download the logs for your application which is running in App Engine.
This Command only works for App Engine but not for Managed VM's.Refer to the link https://cloud.google.com/appengine/docs/python/tools/uploadinganapp#Python_Downloading_logs

Resources