I have multiple apps with cron.yaml deploying on google appengine within same project id. But when one deploys, its over writing cron defs from other app. Both apps has its own target defined but deployment using maven is over writing cron defs. I couldn't find much info. online or google docs. Any idea how to accomplish this?
Cron is configured per project, not module. You have to merge all of this files into one, and deploy just this file.
To update just cron file, Maven have a special task:
mvn appengine:update_cron
It will upload cron.yaml for current project
Related
Recently tried to update my Gaelyk project (yes, it's old, but it works well and I still use it), but Google App Engine will no longer accept the update. The error message returned is "Deployments using appcfg are no longer supported. See https://cloud.google.com/appengine/docs/deprecations". The thing is, I never used appcfg to deploy my application; I used Gaelyk and Gradle. But obviously Gaelyk must have used appcfg under the covers.
I did download the replacement Google Cloud SDK, but this new tool is not similar at all to how Gaelyk and Gradle worked. Is there anything I can do to get Gaelyk to work anymore? Or is Gaelyk just dead and I need to rewrite my application (like in Node.js or something instead of Groovy).
This will be hard, however I will try to help you as possible. I think you may try to migrate it somehow to app.yaml configuration of GAE.
I am not sure what plugins are used in the project. From Gaelyk temple project I can see that it's using appengine-geb which, according to the documentation, behind the scenes, is using gradle-appengine-plugin (there is wrong link on this doc, but proper is bellow).
On the github of gradle-appengine-plugin I have found following.
There is a note:
NOTE: All App Engine users are encouraged to transition to the new
gradle plugin for their projects.
And in FAQ part there is following information:
How do I deploy with gcloud?
If you're using gcloud to deploy your application, the newest version of app deploy > doesn't support war
directories, you will need to provide it with an app.yaml OR you can
use the appengineStage task to create a directory that is deployable
in /build/staged-app
$ ./gradlew appengineStage
$ gcloud app deploy build/staged-app/app.yaml --project [app id]
--version [some version]
NOTES:
You must explicitly define all config files your want to upload
(cron.yaml, etc)
This does not work with EAR formatted projects.
I think the best option will be to migrate to new appenine plugin or if not possible try to implement is with gcloud app deploy command crating the config files manually (at least app.yaml). And for this migration I can provide you this document.
I hope you will manage somehow...
I can confirm that Serge's answer on the Gaelyk Groups site works; the same procedure that he figured out also worked for me. To summarize:
Run gradlew appengineRun as run previously with Gaelyk.
Copy all jar files inside the build\exploded-app\WEB-INF\lib folder into a \src\main\webapp\web-inf\lib folder (for me the new lib folder did not exist previously).
To deploy, use the new required gcloud tool, and instead of running gradlew appengineUpdate (which fails now), instead run
gcloud app deploy appengine-web.xml where that XML file can be found in your webapp/WEB-INF directory. I navigated to that directory to run the gcloud command, but you can use a relative path there if your working directory is elsewhere. (There are a number of optional flags associated with the gcloud app deploy command, but I didn't need any of them.)
Serge needed to use these instructions to convert datastore-indexes.xml to index.yaml and run gcloud app deploy index.yaml, however, I didn't need to do this because I had no datastores.
I am trying to deploy a simple "hello world" application in Appengine standard - Go environment. There is one source file hello.go with one import "google.golang.org/appengine"
I followed the documentation here to use the Admin API for deployment. But I got "can't find import: google.golang.org/appengine" error when I checked the status of the deployment.
So I uploaded the google.golang.org library folder to Cloud Storage, but documentation seems to only show how to include single files separately from GCS buckets, which is not feasible for big imported libraries.
I know all this will work with "gcloud app deploy", but I have to use the Admin API and standard environment.
Is there a way to tell Appengine to "go get" imported libraries?
Is there a way to include folders (not single files) from GCS bucket in
deployment config files?
The deployment works with gcloud because the appengine library is present in your GOPATH. gcloud fetches them from there.
In the case of the deployment using Admin API, in order to not include one per one all files from your libraries, the packages need to be present in Google Cloud Storage for ZIP deployment or you can use Cloud Source Repositories, build it with the CREATE call and then deploy it from a container with the Cloud Build image.
The problem is that I try to delete, or update the cron job and nothing gets updated on the google side.
gcloud app deploy cron.yaml - I sent an empty file with only cron: in there, and it still displays old cron jobs.
I then tried to update the cron jobs to new settings, and it still displays old information.
Either the documentation doesn't give you the correct directions how to manage cronjobs or I must be doing something extremely wrong.
Solution
Needed to specify the project to deploy to: gcloud app deploy cron.yaml --project=my-project
Needed to specify the project to deploy to: gcloud app deploy cron.yaml --project=my-project
I'm having troubles deploying a Google App Engine EAR application from Cloudbees. The application is built using 1.9.4. The application structure is similar to this project: https://github.com/deege/gae-rest-skeleton The main difference is I have more than just one module.
The problem I'm running into is how to configure the deployment. I have the "Post steps | Deploy Applications | Google App Engine (Java)" set up as the video from their site, but the configuration is expecting a WAR directory structure in the Fixed Directory section.
It's looking for a directory where a WEB-INF/appengine-web.xml file exists. I can point the configuration to the front end's directory where this does exist (and was doing that until I added more modules), but then it only deploys the front end. None of the other WARs are deployed.
I think it should be looking for the META-INF/appengine-application.xml file in the ear directory, since this describes the whole application (front ends and supporting modules).
Is there something I'm missing with the configuration? Do I need to deploy each module (WAR) separately?
Our deployer plugin was written before GAE added support for EARs. If ignoring the form validation and just entering the configuration that you know should work doesn't work then open a ticket.
I will be investigating and adding the extra form validation to the plugin at my next review window for the plugin, but an interim workaround of just ignoring any displayed errors should work
update
I have updated the app engine deployer plugin. Upgrading to version 3.0 or newer will allow you to deploy EAR exploded archives
Everytime I deploy my project to appengine the GWT modules recompile(which takes several minutes). This happens even if there are no changes to the code and I am only updating the server code. How can I stop this?
Patrick, I'm not sure why you are deploying to the app engine if you are not making any changes. Anyway, you could do the following:
Right click on your project -> export -> as war
When you create a war, this does not compile, and then you can manually upload the .war to the App Engine using the appcfg tool.
EDIT: it's not necesary to use the eclipe export, all you need to do is use the appcfg tool and build from eclipse.
Check this out for additional info on using appcfg to deploy.