diff --git a/.kokoro/continuous/java11-samples.cfg b/.kokoro/continuous/java11-samples.cfg
new file mode 100644
index 000000000..b43371933
--- /dev/null
+++ b/.kokoro/continuous/java11-samples.cfg
@@ -0,0 +1,30 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java11"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
\ No newline at end of file
diff --git a/.kokoro/continuous/jave8-samples.cfg b/.kokoro/continuous/jave8-samples.cfg
new file mode 100644
index 000000000..d4f3e8869
--- /dev/null
+++ b/.kokoro/continuous/jave8-samples.cfg
@@ -0,0 +1,31 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java8"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
+© 2020 GitHub, Inc.
\ No newline at end of file
diff --git a/.kokoro/nightly/java11-samples.cfg b/.kokoro/nightly/java11-samples.cfg
new file mode 100644
index 000000000..b43371933
--- /dev/null
+++ b/.kokoro/nightly/java11-samples.cfg
@@ -0,0 +1,30 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java11"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
\ No newline at end of file
diff --git a/.kokoro/nightly/jave8-samples.cfg b/.kokoro/nightly/jave8-samples.cfg
new file mode 100644
index 000000000..d4f3e8869
--- /dev/null
+++ b/.kokoro/nightly/jave8-samples.cfg
@@ -0,0 +1,31 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java8"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
+© 2020 GitHub, Inc.
\ No newline at end of file
diff --git a/.kokoro/presubmit/java11-samples.cfg b/.kokoro/presubmit/java11-samples.cfg
new file mode 100644
index 000000000..b43371933
--- /dev/null
+++ b/.kokoro/presubmit/java11-samples.cfg
@@ -0,0 +1,30 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java11"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
\ No newline at end of file
diff --git a/.kokoro/presubmit/jave8-samples.cfg b/.kokoro/presubmit/jave8-samples.cfg
new file mode 100644
index 000000000..d4f3e8869
--- /dev/null
+++ b/.kokoro/presubmit/jave8-samples.cfg
@@ -0,0 +1,31 @@
+# Copyright 2020 Google LLC
+#
+# 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.
+
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download secrets from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/java-docs-samples"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java8"
+}
+
+# Tell trampoline which tests to run.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/java-pubsub/.kokoro/run_samples_tests.sh"
+}
+© 2020 GitHub, Inc.
\ No newline at end of file
diff --git a/.kokoro/run_samples_tests.sh b/.kokoro/run_samples_tests.sh
new file mode 100644
index 000000000..23f89f072
--- /dev/null
+++ b/.kokoro/run_samples_tests.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+# Copyright 2020 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.
+
+# `-e` enables the script to automatically fail when a command fails
+# `-o pipefail` sets the exit code to the rightmost comment to exit with a non-zero
+set -eo pipefail
+
+echo "********** MAVEN INFO ***********"
+mvn -v
+
+# Get the directory of the build script
+scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}"))
+## cd to the parent directory, i.e. the root of the git repo
+cd ${scriptDir}/..
+
+# include common functions
+source ${scriptDir}/common.sh
+
+# Attempt to install 3 times with exponential backoff (starting with 10 seconds)
+retry_with_backoff 3 10 \
+ mvn install -B -V \
+ -DskipTests=true \
+ -Dclirr.skip=true \
+ -Denforcer.skip=true \
+ -Dmaven.javadoc.skip=true \
+ -Dgcloud.download.skip=true \
+ -T 1C
+
+# Activate service account
+gcloud auth activate-service-account \
+ --key-file="$GOOGLE_APPLICATION_CREDENTIALS" \
+ --project="$GOOGLE_CLOUD_PROJECT"
+
+# Move into the samples directory
+cd samples/
+
+echo -e "\n******************** RUNNING SAMPLE TESTS ********************"
+
+mvn --fail-at-end clean verify
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f7e8dcb8f..6e6217001 100644
--- a/pom.xml
+++ b/pom.xml
@@ -234,6 +234,16 @@
google-cloud-pubsub-bom
+
+
+
+ enable-samples
+
+ samples
+
+
+
+