diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..29f9e2f
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,31 @@
+# A Travis CI configuration file.
+
+sudo: required
+
+group: deprecated-2017Q3
+
+language: scala
+scala:
+   - 2.11.8
+
+services:
+  - docker
+
+before_install:
+  - ./tools/travis/setup.sh
+
+install: true
+
+script:
+  - ./tools/travis/build.sh
+  - ./tools/travis/deploy.sh
+  - ./tools/travis/test.sh
+
+deploy:
+  # deploy tag
+  - provider: script
+    script: ./tools/travis/publish.sh openwhisk ${TRAVIS_TAG%@*} ${TRAVIS_TAG##*@}
+    on:
+      tags: true
+      all_branches: true
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b29cfc9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,68 @@
+#Apache OpenWhisk runtimes for java
+[![Build Status](https://travis-ci.org/apache/incubator-openwhisk-runtime-java.svg?branch=master)](https://travis-ci.org/apache/incubator-openwhisk-runtime-java)
+
+
+### Give it a try today
+To use as a docker action
+```
+bx wsk action update myAction myAction.jar --docker openwhisk/java8action:1.0.0
+```
+This works on any deployment of Apache OpenWhisk
+
+### To use on deployment that contains the rutime as a kind
+To use as a kind action
+```
+bx wsk action update myAction myAction.jar --kind java:8
+```
+
+### Local development
+```
+./gradlew core:javaAction:distDocker
+```
+This will produce the image `whisk/java8action`
+
+Build and Push image
+```
+docker login
+./gradlew core:javaAction:distDocker -PdockerImagePrefix=$prefix-user -PdockerRegistry=docker.io 
+```
+
+Deploy OpenWhisk using ansible environment that contains the kind `java:8`
+Assuming you have OpenWhisk already deploy localy and `OPENWHISK_HOME` pointing to root directory of OpenWhisk core repository.
+
+Set `ROOTDIR` to the root directory of this repository.
+
+Redeploy OpenWhisk
+```
+cd $OPENWHISK_HOME/ansible
+ANSIBLE_CMD="ansible-playbook -i ${ROOTDIR}/ansible/environments/local"
+$ANSIBLE_CMD setup.yml
+$ANSIBLE_CMD couchdb.yml
+$ANSIBLE_CMD initdb.yml
+$ANSIBLE_CMD wipe.yml
+$ANSIBLE_CMD openwhisk.yml
+```
+
+Or you can use `wskdev` and create a soft link to the target ansible environment, for example:
+```
+ln -s ${ROOTDIR}/ansible/environments/local ${OPENWHISK_HOME}/ansible/environments/local-java
+wskdev fresh -t local-java
+```
+
+To use as docker action push to your own dockerhub account
+```
+docker tag whisk/java8action $user_prefix/java8action
+docker push $user_prefix/java8action
+```
+Then create the action using your the image from dockerhub
+```
+wsk action update myAction myAction.jar --docker $user_prefix/java8action
+```
+The `$user_prefix` is usually your dockerhub user id.
+
+
+
+# License
+[Apache 2.0](LICENSE.txt)
+
+
diff --git a/ansible/environments/local/group_vars/all b/ansible/environments/local/group_vars/all
new file mode 100755
index 0000000..dabf90e
--- /dev/null
+++ b/ansible/environments/local/group_vars/all
@@ -0,0 +1,49 @@
+whisk_version_name: local
+config_root_dir: /tmp
+whisk_logs_dir: /tmp/wsklogs
+docker_registry: ""
+docker_dns: ""
+
+db_prefix: whisk_local_
+
+# Auto lookup to find the db credentials
+db_provider: "{{ lookup('ini', 'db_provider section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+db_username: "{{ lookup('ini', 'db_username section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+db_password: "{{ lookup('ini', 'db_password section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+db_protocol: "{{ lookup('ini', 'db_protocol section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+db_host: "{{ lookup('ini', 'db_host section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+db_port: "{{ lookup('ini', 'db_port section=db_creds file={{ playbook_dir }}/db_local.ini') }}"
+
+# API GW connection configuration
+apigw_auth_user: ""
+apigw_auth_pwd: ""
+apigw_host_v2: "http://{{ groups['apigateway']|first }}:{{apigateway.port.api}}/v2"
+
+controller_arguments: '-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1098'
+invoker_arguments: "{{ controller_arguments }}"
+
+invoker_allow_multiple_instances: true
+
+runtimes_manifest:
+  defaultImagePrefix: "openwhisk"
+  defaultImageTag: "latest"
+  runtimes:
+    nodejs:
+    - kind: "nodejs:6"
+      default: true
+      image:
+        name: "nodejs6action"
+      deprecated: false
+    java:
+    - kind: "java"
+      default: true
+      image:
+        name: "java8action"
+      deprecated: false
+      attached:
+        attachmentName: "jarfile"
+        attachmentType: "application/java-archive"
+      sentinelledLogs: false
+      requireMain: true
+  blackboxes:
+    - name: "dockerskeleton"
diff --git a/ansible/environments/local/hosts b/ansible/environments/local/hosts
new file mode 100644
index 0000000..c99f195
--- /dev/null
+++ b/ansible/environments/local/hosts
@@ -0,0 +1,26 @@
+; the first parameter in a host is the inventory_hostname
+
+; used for local actions only
+ansible ansible_connection=local
+
+[edge]
+172.17.0.1          ansible_host=172.17.0.1 ansible_connection=local
+
+[controllers]
+controller0         ansible_host=172.17.0.1 ansible_connection=local
+
+[kafka]
+172.17.0.1          ansible_host=172.17.0.1 ansible_connection=local
+
+[invokers]
+invoker0            ansible_host=172.17.0.1 ansible_connection=local
+
+; db group is only used if db_provider is CouchDB
+[db]
+172.17.0.1          ansible_host=172.17.0.1 ansible_connection=local
+
+[redis]
+172.17.0.1          ansible_host=172.17.0.1 ansible_connection=local
+
+[apigateway]
+172.17.0.1          ansible_host=172.17.0.1 ansible_connection=local
diff --git a/settings.gradle b/settings.gradle
index 9a27b31..2069ac2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,26 +1,16 @@
-include 'common:scala'
+def owPath = System.getenv("OPENWHISK_HOME") ?: '../open'
+def owDirectory = new File(owPath)
 
-include 'core:controller'
-include 'core:invoker'
-include 'core:nodejsActionBase'
-include 'core:nodejs6Action'
-include 'core:actionProxy'
-include 'core:pythonAction'
-include 'core:python2Action'
-include 'core:swift3Action'
-include 'core:swift3.1.1Action'
-include 'core:javaAction'
-include 'core:php7.1Action'
-
-include 'tools:cli'
-
-include 'sdk:docker'
+include 'common:scala'; project(':common:scala').projectDir = new File(owDirectory, 'common/scala')
+include 'core:controller'; project(':core:controller').projectDir = new File(owDirectory, 'core/controller')
+include 'core:invoker'; project(':core:invoker').projectDir = new File(owDirectory, 'core/invoker')
+include 'whisktests'; project(':whisktests').projectDir = new File(owDirectory, 'tests')
 
 include 'tests'
-include 'tests:dat:blackbox:badaction'
-include 'tests:dat:blackbox:badproxy'
 
-rootProject.name = 'openwhisk'
+include 'core:javaAction'
+
+rootProject.name = 'runtime-java'
 
 gradle.ext.scala = [
     version: '2.11.8',
diff --git a/tests/build.gradle b/tests/build.gradle
index bb7b741..124229c 100644
--- a/tests/build.gradle
+++ b/tests/build.gradle
@@ -2,13 +2,13 @@
 apply plugin: 'eclipse'
 compileTestScala.options.encoding = 'UTF-8'
 
+evaluationDependsOn(':whisktests')
+
 repositories {
     mavenCentral()
 }
 
 tasks.withType(Test) {
-    systemProperties(System.getProperties())
-
     testLogging {
         events "passed", "skipped", "failed"
         showStandardStreams = true
@@ -17,62 +17,12 @@
     outputs.upToDateWhen { false } // force tests to run every time
 }
 
-task testLean(type: Test) {
-    exclude '**/*Swift*'
-    exclude '**/*Python*'
-    exclude '**/*Java*'
-    exclude '**/*ThrottleTests*'
-    exclude '**/MaxActionDurationTests*'
-    exclude '**/*ApiGwTests*'
-}
-
-// Add all images needed for local testing here
-test.dependsOn([
-    ':core:nodejs6Action:distDocker',
-    ':core:actionProxy:distDocker',
-    ':core:pythonAction:distDocker',
-    ':core:python2Action:distDocker',
-    ':core:javaAction:distDocker',
-    ':core:swift3Action:distDocker',
-    ':core:swift3.1.1Action:distDocker',
-    ':sdk:docker:distDocker',
-    ':tests:dat:blackbox:badaction:distDocker',
-    ':tests:dat:blackbox:badproxy:distDocker'
-])
-
 dependencies {
     compile "org.scala-lang:scala-library:${gradle.scala.version}"
-    compile 'org.apache.commons:commons-lang3:3.3.2'
-    compile 'org.apache.httpcomponents:httpclient:4.5.2:tests'
-    compile 'org.apache.httpcomponents:httpmime:4.3.6'
-    compile 'junit:junit:4.11'
-    compile 'com.jayway.restassured:rest-assured:2.6.0'
-    compile 'org.scalatest:scalatest_2.11:3.0.1'
-    compile 'com.google.code.gson:gson:2.3.1'
-    compile 'org.scalamock:scalamock-scalatest-support_2.11:3.4.2'
-    compile 'com.typesafe.akka:akka-testkit_2.11:2.4.16'
-    compile 'com.typesafe.akka:akka-http-testkit_2.11:10.0.10'
-    compile 'com.github.java-json-tools:json-schema-validator:2.2.8';
-
-    compile project(':common:scala')
-    compile project(':core:controller')
-    compile project(':core:invoker')
+    compile project(':whisktests')
+    compile project(':whisktests').sourceSets.test.output
 }
 
 tasks.withType(ScalaCompile) {
     scalaCompileOptions.additionalParameters = gradle.scala.compileFlags
 }
-
-def keystorePath = new File(sourceSets.test.scala.outputDir, 'keystore')
-task deleteKeystore(type: Delete) {
-    delete keystorePath
-}
-task createKeystore(dependsOn: deleteKeystore) {
-    doLast {
-        Properties props = new Properties()
-        props.load(new FileInputStream(file('../whisk.properties')))
-        def cmd = ['keytool', '-import', '-alias', 'Whisk', '-noprompt', '-trustcacerts', '-file', file(props['whisk.ssl.cert']), '-keystore', keystorePath, '-storepass', 'openwhisk']
-        cmd.execute().waitForProcessOutput(System.out, System.err)
-    }
-}
-compileTestScala.finalizedBy createKeystore
diff --git a/tests/src/test/scala/actionContainers/ActionContainer.scala b/tests/src/test/scala/actionContainers/ActionContainer.scala
index 94f6763..56aa131 100644
--- a/tests/src/test/scala/actionContainers/ActionContainer.scala
+++ b/tests/src/test/scala/actionContainers/ActionContainer.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package actionContainers
+package runtime.actionContainers
 
 import java.io.ByteArrayOutputStream
 import java.io.File
diff --git a/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala b/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
index efa2743..297a8f6 100644
--- a/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
+++ b/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package actionContainers
+package runtime.actionContainers
 
 import org.junit.runner.RunWith
 import org.scalatest.FlatSpec
diff --git a/tests/src/test/scala/actionContainers/ResourceHelpers.scala b/tests/src/test/scala/actionContainers/ResourceHelpers.scala
index 3041e0e..08f46e4 100644
--- a/tests/src/test/scala/actionContainers/ResourceHelpers.scala
+++ b/tests/src/test/scala/actionContainers/ResourceHelpers.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package actionContainers
+package runtime.actionContainers
 
 import java.net.URI
 import java.net.URLClassLoader
diff --git a/tools/travis/build.sh b/tools/travis/build.sh
new file mode 100755
index 0000000..52824f9
--- /dev/null
+++ b/tools/travis/build.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -ex
+
+# Build script for Travis-CI.
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+WHISKDIR="$ROOTDIR/../openwhisk"
+
+export OPENWHISK_HOME=$WHISKDIR
+
+IMAGE_PREFIX="testing"
+
+# Build runtime
+cd $ROOTDIR
+TERM=dumb ./gradlew \
+distDocker \
+-PdockerImagePrefix=${IMAGE_PREFIX}
+
+
+# Build OpenWhisk
+cd $WHISKDIR
+
+#pull down images
+docker pull openwhisk/controller
+docker tag openwhisk/controller ${IMAGE_PREFIX}/controller
+docker pull openwhisk/invoker
+docker tag openwhisk/invoker ${IMAGE_PREFIX}/invoker
+docker pull openwhisk/nodejs6action
+docker tag openwhisk/nodejs6action ${IMAGE_PREFIX}/nodejs6action
+
+#Build CLI
+TERM=dumb ./gradlew \
+:tools:cli:distDocker \
+-PdockerImagePrefix=${IMAGE_PREFIX}
+
+
+
diff --git a/tools/travis/deploy.sh b/tools/travis/deploy.sh
new file mode 100755
index 0000000..bf30063
--- /dev/null
+++ b/tools/travis/deploy.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -ex
+
+# Build script for Travis-CI.
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+WHISKDIR="$ROOTDIR/../openwhisk"
+
+export OPENWHISK_HOME=$WHISKDIR
+
+IMAGE_PREFIX="testing"
+
+# Deploy OpenWhisk
+cd $WHISKDIR/ansible
+ANSIBLE_CMD="ansible-playbook -i ${ROOTDIR}/ansible/environments/local -e docker_image_prefix=${IMAGE_PREFIX}"
+$ANSIBLE_CMD setup.yml
+$ANSIBLE_CMD prereq.yml
+$ANSIBLE_CMD couchdb.yml
+$ANSIBLE_CMD initdb.yml
+$ANSIBLE_CMD wipe.yml
+$ANSIBLE_CMD openwhisk.yml
+
+docker images
+docker ps
+
+cat $WHISKDIR/whisk.properties
+curl -s -k https://172.17.0.1 | jq .
+curl -s -k https://172.17.0.1/api/v1 | jq .
+
+#Deployment
+WHISK_APIHOST="172.17.0.1"
+WHISK_AUTH=`cat ${WHISKDIR}/ansible/files/auth.guest`
+WHISK_CLI="${WHISKDIR}/bin/wsk -i"
+
+${WHISK_CLI} property set --apihost ${WHISK_APIHOST} --auth ${WHISK_AUTH} 
+${WHISK_CLI} property get
+
+
diff --git a/tools/travis/publish.sh b/tools/travis/publish.sh
new file mode 100755
index 0000000..50dec08
--- /dev/null
+++ b/tools/travis/publish.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eux
+
+# Build script for Travis-CI.
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+WHISKDIR="$ROOTDIR/../openwhisk"
+
+export OPENWHISK_HOME=$WHISKDIR
+
+IMAGE_PREFIX=$1
+RUNTIME_VERSION=$2
+IMAGE_TAG=$3
+
+if [ ${RUNTIME_VERSION} == "8" ]; then
+  RUNTIME="javaAction"
+elif [ ${RUNTIME_VERSION} == "9" ]; then
+  RUNTIME="java9Action"
+fi
+
+if [[ ! -z ${DOCKER_USER} ]] && [[ ! -z ${DOCKER_PASSWORD} ]]; then
+docker login -u "${DOCKER_USER}" -p "${DOCKER_PASSWORD}"
+fi
+
+if [[ ! -z ${RUNTIME} ]]; then
+TERM=dumb ./gradlew \
+:core:${RUNTIME}:distDocker \
+-PdockerRegistry=docker.io \
+-PdockerImagePrefix=${IMAGE_PREFIX} \
+-PdockerImageTag=${IMAGE_TAG}
+fi
diff --git a/tools/travis/setup.sh b/tools/travis/setup.sh
new file mode 100755
index 0000000..adf859a
--- /dev/null
+++ b/tools/travis/setup.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Build script for Travis-CI.
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+HOMEDIR="$SCRIPTDIR/../../../"
+
+# OpenWhisk stuff
+cd $HOMEDIR
+git clone --depth=1 https://github.com/apache/incubator-openwhisk.git openwhisk
+cd openwhisk
+./tools/travis/setup.sh
+
diff --git a/tools/travis/test.sh b/tools/travis/test.sh
new file mode 100755
index 0000000..bdcc407
--- /dev/null
+++ b/tools/travis/test.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -ex
+
+# Build script for Travis-CI.
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+WHISKDIR="$ROOTDIR/../openwhisk"
+
+export OPENWHISK_HOME=$WHISKDIR
+
+cd ${ROOTDIR}
+TERM=dumb ./gradlew :tests:checkScalafmtAll
+TERM=dumb ./gradlew :tests:test
+
+
+
