Skip to content

Commit

Permalink
Merge pull request #681 from mpoehler/master
Browse files Browse the repository at this point in the history
Added gradle build configuration for endpoints-framework-v2/backend
  • Loading branch information
frankyn committed May 31, 2017
2 parents 7c0545b + 56d86e0 commit 588be0f
Show file tree
Hide file tree
Showing 2 changed files with 160 additions and 5 deletions.
97 changes: 92 additions & 5 deletions appengine/endpoints-frameworks-v2/backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
This sample demonstrates how to use Google Cloud Endpoints Frameworks using
Java on App Engine Standard.

## Adding the project ID to the sample API code
## Build with Maven

### Adding the project ID to the sample API code

You must add the project ID obtained when you created your project to the
sample's `pom.xml` before you can deploy the code.
Expand All @@ -21,19 +23,19 @@ your project ID.

0. Save your changes.

## Building the sample project
### Building the sample project

To build the project:

mvn clean package

## Generating the openapi.json file
### Generating the openapi.json file

To generate the required configuration file `openapi.json`:

mvn exec:java -DGetSwaggerDoc

## Deploying the sample API to App Engine
### Deploying the sample API to App Engine

To deploy the sample API:

Expand All @@ -51,7 +53,92 @@ To deploy the sample API:

0. Wait for the upload to finish.

## Sending a request to the sample API
### Sending a request to the sample API

After you deploy the API and its configuration file, you can send requests
to the API.

To send a request to the API, from a command line, invoke the following `cURL`
command:

curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"message":"echo"}' \
https://$PROJECT_ID.appspot.com/_ah/api/echo/v1/echo

You will get a 200 response with the following data:

{
"message": "echo"
}

## Build with gradle

### Adding the project ID to the sample API code

0. Edit the file `build.gradle`.

0. For `def projectId = 'YOUR_PROJECT_ID'`, replace the value `YOUR_PROJECT_ID` with
your project ID.

0. Edit the file `src/main/java/com/example/echo/Echo.java

0. Replace the value `YOUR-PROJECT-ID` with your project ID.

0. Save your changes.

### Building the sample project

To build the project use:

gradle build

<details>
<summary>more details</summary>
The project contains the standard java and war plugins and in addition to that it contains the following plugins:
https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin for the endpoint related tasks and
https://github.com/GoogleCloudPlatform/app-gradle-plugin for the appengine standard related tasks.

Check the links for details about the available Plugin Goals and Parameters.
</details>

### Generating the openapi.json file

To generate the required configuration file `openapi.json`:

gradle endpointsOpenApiDocs

This results in a file in build/endpointsOpenApiDocs/openapi.json

### Deploying the sample API to App Engine

To deploy the sample API:

0. Invoke the `gcloud` command to deploy the API configuration file:

gcloud service-management deploy build/endpointsOpenApiDocs/openapi.json

0. Deploy the API implementation code by invoking:

gradle appengineDeploy

The first time you upload a sample app, you may be prompted to authorize the
deployment. Follow the prompts: when you are presented with a browser window
containing a code, copy it to the terminal window.

<details>
<summary>ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application.</summary>
If you create a fresh cloud project that doesn't contain a appengine application you may receive this Error:

ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application. Use `gcloud app create` to initialize an App Engine application within the project.

In that case just execute `gcloud app create`, you will be asked to select a region and the app will be created. Then run gradle appengineDeploy again.
</details>

0. Wait for the upload to finish.

### Sending a request to the sample API

After you deploy the API and its configuration file, you can send requests
to the API.
Expand Down
68 changes: 68 additions & 0 deletions appengine/endpoints-frameworks-v2/backend/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.import org.apache.tools.ant.filters.ReplaceTokens

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:+'
classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'
}
}

repositories {
maven {
url 'https://maven-central.storage.googleapis.com'
}
jcenter()
mavenCentral()
}

task wrapper(type: Wrapper) {
gradleVersion = '3.5'
}

def projectId = 'YOUR_PROJECT_ID'

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
apply plugin: 'com.google.cloud.tools.appengine'

dependencies {
// For real projects: use concrete versions here instead of the '+' to make your build consistent
compile 'com.google.endpoints:endpoints-framework:+'
compile 'com.google.endpoints:endpoints-management-control-appengine:+'
compile 'com.google.endpoints:endpoints-framework-auth:+'
}

endpointsServer {
// Endpoints Framework Plugin server-side configuration
hostname = "echo-api.endpoints.${projectId}.cloud.goog"
}

sourceCompatibility = 1.7 // App Engine Standard uses Java 7
targetCompatibility = 1.7 // App Engine Standard uses Java 7

// this replaces the ${endpoints.project.id} in appengine-web.xml and web.xml
task replaceProjectId(type: Copy) {
from 'src/main/webapp/WEB-INF/'
include '*.xml'
into 'build/exploded-backend/WEB-INF'
expand(endpoints:[project:[id:projectId]])
filteringCharset = 'UTF-8'
}
assemble.dependsOn replaceProjectId

0 comments on commit 588be0f

Please sign in to comment.