diff --git a/docs/src/main/asciidoc/adapters/gcp-intro.adoc b/docs/src/main/asciidoc/adapters/gcp-intro.adoc index d95221a2a..f9a5f849b 100644 --- a/docs/src/main/asciidoc/adapters/gcp-intro.adoc +++ b/docs/src/main/asciidoc/adapters/gcp-intro.adoc @@ -130,3 +130,7 @@ Invoke the HTTP function: ---- curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp -d "hello" ---- + +==== Sample Function + +Go to the link:../../spring-cloud-function-samples/function-sample-gcp/[function-sample-gcp] to try out a sample function that you can test locally or deploy to GCP. diff --git a/docs/src/main/asciidoc/adapters/gcp.adoc b/docs/src/main/asciidoc/adapters/gcp.adoc new file mode 100644 index 000000000..fefdbc8ab --- /dev/null +++ b/docs/src/main/asciidoc/adapters/gcp.adoc @@ -0,0 +1,3 @@ +*{spring-cloud-function-version}* + +include::adapters/gcp-intro.adoc[] diff --git a/docs/src/main/asciidoc/index.adoc b/docs/src/main/asciidoc/index.adoc index 96aabfa75..ac42ee4c0 100644 --- a/docs/src/main/asciidoc/index.adoc +++ b/docs/src/main/asciidoc/index.adoc @@ -11,6 +11,7 @@ The reference documentation consists of the following sections: <> :: Spring Cloud Function Reference <> :: AWS Adapter Reference <> :: Azure Adapter Reference +<> :: GCP Adapter Reference <> :: Apache OpenWhisk Adapter Reference diff --git a/docs/src/main/asciidoc/spring-cloud-function.adoc b/docs/src/main/asciidoc/spring-cloud-function.adoc index 3a4578244..be1686e2b 100644 --- a/docs/src/main/asciidoc/spring-cloud-function.adoc +++ b/docs/src/main/asciidoc/spring-cloud-function.adoc @@ -585,4 +585,5 @@ Invoker] acts natively is an adapter for Spring Cloud Function jars. include::adapters/aws-intro.adoc[] include::adapters/azure-intro.adoc[] +include::adapters/gcp-intro.adoc[] diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml index 2c2bd5734..942ea2e28 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml @@ -17,14 +17,15 @@ UTF-8 UTF-8 - 1.0.0-alpha-2-rc3 + 1.0.0-alpha-2-rc3 + 1.0.0-alpha-2-rc4 com.google.cloud.functions functions-framework-api - ${google.cloud.functions.version} + ${google.cloud.functions.api.version} provided @@ -44,7 +45,7 @@ com.google.cloud.functions.invoker java-function-invoker - ${google.cloud.functions.version} + ${google.cloud.functions.invoker.version} test diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java index 9d2d087bf..adeae7907 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java @@ -46,13 +46,18 @@ public class FunctionInvoker public FunctionInvoker() { super(); + init(); } public FunctionInvoker(Class configurationClass) { super(configurationClass); + init(); + } + + private void init() { System.setProperty("spring.http.converters.preferred-json-mapper", "gson"); - Thread.currentThread() //TODO investigate if it is necessary - .setContextClassLoader(FunctionInvoker.class.getClassLoader()); + Thread.currentThread() // TODO: remove after upgrading to 1.0.0-alpha-2-rc5 + .setContextClassLoader(FunctionInvoker.class.getClassLoader()); initialize(null); } diff --git a/spring-cloud-function-samples/function-sample-gcp/README.adoc b/spring-cloud-function-samples/function-sample-gcp/README.adoc new file mode 100644 index 000000000..86da52659 --- /dev/null +++ b/spring-cloud-function-samples/function-sample-gcp/README.adoc @@ -0,0 +1,49 @@ +:branch: master + +=== Google Cloud Functions Sample Application + +===== Test locally + +Run the function: + +---- +mvn function:run +---- + +Invoke the HTTP function: + +---- +curl http://localhost:8080/ -d "hello" +---- + +===== Deploy to GCP + +As of March 2020, Google Cloud Functions for Java is in Alpha. +You can get on the https://docs.google.com/forms/d/e/1FAIpQLScC98jGi7CfG0n3UYlj7Xad8XScvZC8-BBOg7Pk3uSZx_2cdQ/viewform[whitelist] to try it out. + +Package the application. + +---- +mvn package +---- + +You should see the fat jar in the `deploy` directory. + +Make sure that you have the https://cloud.google.com/sdk/install[Cloud SDK CLI] installed. + +Run the following command from the project root to deploy. + +---- +gcloud alpha functions deploy function-sample-gcp \ +--entry-point org.springframework.cloud.function.adapter.gcloud.FunctionInvoker \ +--runtime java11 \ +--trigger-http \ +--source deploy \ +--memory 512MB +---- + +Invoke the HTTP function: + +---- +curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp -d "hello" +---- diff --git a/spring-cloud-function-samples/function-sample-gcp/pom.xml b/spring-cloud-function-samples/function-sample-gcp/pom.xml index 5debf3b91..6f50a17be 100644 --- a/spring-cloud-function-samples/function-sample-gcp/pom.xml +++ b/spring-cloud-function-samples/function-sample-gcp/pom.xml @@ -27,7 +27,7 @@ function-maven-plugin 0.9.1 - org.springframework.cloud.function.adapter.gcloud.GcfSpringBootHttpRequestHandler + org.springframework.cloud.function.adapter.gcloud.FunctionInvoker 8080