10

I am trying to deploy the app.yaml file to appengine flexible.

Here is my app.yaml file

runtime: java
env: flex
manual_scaling:
  instances: 1

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

resources:
  cpu: 0.5
  memory_gb: 0.18
  disk_size_gb: 10

I am trying to deploy it with this command:

gcloud app deploy app.yaml --verbosity=debug

And this is the error I get:

DEBUG: No staging command found for runtime [java] and environment [FLEX].
WARNING: Deployment of App Engine Flexible Environment apps is currently in Beta
Building and pushing image for service [my-service]
DEBUG: Could not call git with args ('config', '--get-regexp', 'remote\\.(.*)\\.url'): [Error 2] The system cannot find the file specified
INFO: Not checking for [Custom] because runtime is [java]
INFO: Not checking for [Go] because runtime is [java]
INFO: Not checking for [Ruby] because runtime is [java]
INFO: Not checking for [Node.js] because runtime is [java]
INFO: Checking for Java.
INFO: Not checking for [Python Compat] because runtime is [java]
INFO: Not checking for [Python] because runtime is [java]
INFO: Not checking for [PHP] because runtime is [java]
DEBUG: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [java].  Please correct the errors and try again.
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\cli.py", line 742, in Execute
    resources = args.calliope_command.Run(cli=self, args=args)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\backend.py", line 739, in Run
    resources = command_instance.Run(args)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\surface\app\deploy.py", line 59, in Run
    return deploy_util.RunDeploy(args)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 413, in RunDeploy
    all_services)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 241, in Deploy
    new_version, service, source_dir, image, code_bucket_ref)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 176, in _PossiblyBuildAndPush
    code_bucket_ref, self.deploy_options.use_runtime_builders)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\app\deploy_command_util.py", line 206, in BuildAndPushDockerImage
    gen_files.update(_GetDockerfiles(service, source_dir))
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\app\deploy_command_util.py", line 139, in _GetDockerfiles
    'again.'.format(info.runtime))
UnsatisfiedRequirementsError: Your application does not satisfy all of the requirements for a runtime of type [java].  Please correct the errors and try again.
ERROR: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [java].  Please correct the errors and try again.

So it ends up not deploying the app.yaml. However, if I run this command:

gcloud app deploy cron.yaml

It will work just fine.

Linxy
  • 2,525
  • 3
  • 22
  • 37

1 Answers1

11

Yeah, this is a gap right now :/ You can't actually deploy a Java app to App Engine flexible via gcloud app deploy. You need to use the Maven or Gradle plugins.

Sorry for the trouble!

Justin Beckwith
  • 7,686
  • 1
  • 33
  • 55
  • 3
    Is there a GitHub issue or what not tracking this gap? I'd love to add a "+1" or ":(" emoji to it. – Chris Smith Jun 02 '17 at 16:33
  • @ChrisSmith, I agree. I lost a lot of time figuring out that only Maven or Gradle is the only way to upload to AppEngine flex. gcloud app deploy seemed like the obvious choice. I will say after reading the documentation again and again, Google is pretty clear that only Maven and Gradle works. What confuses me is Maven basically runs gcloud app deploy in the process... but running it without Maven yields bad results. – Jason Washo Jun 13 '17 at 01:44