diff --git a/.circleci/release.sh b/.circleci/release.sh
index 2ba6b2d2..0dcd678f 100755
--- a/.circleci/release.sh
+++ b/.circleci/release.sh
@@ -6,9 +6,11 @@ USER=fnproject
SERVICE=fn-java-fdk
RUNTIME_IMAGE=${SERVICE}
BUILD_IMAGE=${SERVICE}-build
+NATIVE_INIT_IMAGE=fn-java-native-init
+NATIVE_BUILD_IMAGE=fn-java-native
release_version=$(cat release.version)
-if [[ $release_version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then
+if [[ ${release_version} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then
echo "Deploying version $release_version"
else
echo Invalid version $release_version
@@ -21,10 +23,10 @@ version_parts=(${release_version//./ })
new_minor=$((${version_parts[2]}+1))
new_version="${version_parts[0]}.${version_parts[1]}.$new_minor"
-if [[ $new_version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then
+if [[ ${new_version} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then
echo "Next version $new_version"
else
- echo Invalid new version $new_version
+ echo Invalid new version ${new_version}
exit 1
fi
@@ -32,9 +34,9 @@ fi
# Deploy to bintray
mvn -s ./settings-deploy.xml \
-DskipTests \
- -DaltDeploymentRepository="fnproject-release-repo::default::$MVN_RELEASE_REPO" \
- -Dfnproject-release-repo.username="$MVN_RELEASE_USER" \
- -Dfnproject-release-repo.password="$MVN_RELEASE_PASSWORD" \
+ -DaltDeploymentRepository="fnproject-release-repo::default::${MVN_RELEASE_REPO}" \
+ -Dfnproject-release-repo.username="${MVN_RELEASE_USER}" \
+ -Dfnproject-release-repo.password="${MVN_RELEASE_PASSWORD}" \
clean deploy
@@ -43,38 +45,56 @@ mvn -s ./settings-deploy.xml \
moving_version=${release_version%.*}-latest
## jdk8 runtime
- docker tag $USER/$RUNTIME_IMAGE:${release_version} $USER/$RUNTIME_IMAGE:latest
- docker tag $USER/$RUNTIME_IMAGE:${release_version} $USER/$RUNTIME_IMAGE:${moving_version}
- docker push $USER/$RUNTIME_IMAGE:latest
- docker push $USER/$RUNTIME_IMAGE:${release_version}
- docker push $USER/$RUNTIME_IMAGE:${moving_version}
+ docker tag ${USER}/${RUNTIME_IMAGE}:${release_version} ${USER}/${RUNTIME_IMAGE}:latest
+ docker tag ${USER}/${RUNTIME_IMAGE}:${release_version} ${USER}/${RUNTIME_IMAGE}:${moving_version}
+ docker push ${USER}/${RUNTIME_IMAGE}:latest
+ docker push ${USER}/${RUNTIME_IMAGE}:${release_version}
+ docker push ${USER}/${RUNTIME_IMAGE}:${moving_version}
## jdk8 build
- docker tag $USER/$BUILD_IMAGE:${release_version} $USER/$BUILD_IMAGE:latest
- docker tag $USER/$BUILD_IMAGE:${release_version} $USER/$BUILD_IMAGE:${moving_version}
- docker push $USER/$BUILD_IMAGE:latest
- docker push $USER/$BUILD_IMAGE:${release_version}
- docker push $USER/$BUILD_IMAGE:${moving_version}
+ docker tag ${USER}/${BUILD_IMAGE}:${release_version} ${USER}/${BUILD_IMAGE}:latest
+ docker tag ${USER}/${BUILD_IMAGE}:${release_version} ${USER}/${BUILD_IMAGE}:${moving_version}
+ docker push ${USER}/${BUILD_IMAGE}:latest
+ docker push ${USER}/${BUILD_IMAGE}:${release_version}
+ docker push ${USER}/${BUILD_IMAGE}:${moving_version}
## jdk9 runtime
- docker tag $USER/$RUNTIME_IMAGE:jdk9-${release_version} $USER/$RUNTIME_IMAGE:jdk9-latest
- docker tag $USER/$RUNTIME_IMAGE:jdk9-${release_version} $USER/$RUNTIME_IMAGE:jdk9-${moving_version}
- docker push $USER/$RUNTIME_IMAGE:jdk9-latest
- docker push $USER/$RUNTIME_IMAGE:jdk9-${release_version}
- docker push $USER/$RUNTIME_IMAGE:jdk9-${moving_version}
+ docker tag ${USER}/${RUNTIME_IMAGE}:jdk9-${release_version} ${USER}/${RUNTIME_IMAGE}:jdk9-latest
+ docker tag ${USER}/${RUNTIME_IMAGE}:jdk9-${release_version} ${USER}/${RUNTIME_IMAGE}:jdk9-${moving_version}
+ docker push ${USER}/${RUNTIME_IMAGE}:jdk9-latest
+ docker push ${USER}/${RUNTIME_IMAGE}:jdk9-${release_version}
+ docker push ${USER}/${RUNTIME_IMAGE}:jdk9-${moving_version}
## jdk9 build
- docker tag $USER/$BUILD_IMAGE:jdk9-${release_version} $USER/$BUILD_IMAGE:jdk9-latest
- docker tag $USER/$BUILD_IMAGE:jdk9-${release_version} $USER/$BUILD_IMAGE:jdk9-${moving_version}
- docker push $USER/$BUILD_IMAGE:jdk9-latest
- docker push $USER/$BUILD_IMAGE:jdk9-${release_version}
- docker push $USER/$BUILD_IMAGE:jdk9-${moving_version}
+ docker tag ${USER}/${BUILD_IMAGE}:jdk9-${release_version} ${USER}/${BUILD_IMAGE}:jdk9-latest
+ docker tag ${USER}/${BUILD_IMAGE}:jdk9-${release_version} ${USER}/${BUILD_IMAGE}:jdk9-${moving_version}
+ docker push ${USER}/${BUILD_IMAGE}:jdk9-latest
+ docker push ${USER}/${BUILD_IMAGE}:jdk9-${release_version}
+ docker push ${USER}/${BUILD_IMAGE}:jdk9-${moving_version}
+
+
+ ## native init image
+ docker tag ${USER}/${NATIVE_INIT_IMAGE}:${release_version} ${USER}/${NATIVE_INIT_IMAGE}:latest
+ docker tag ${USER}/${NATIVE_INIT_IMAGE}:${release_version} ${USER}/${NATIVE_INIT_IMAGE}:${moving_version}
+ docker push ${USER}/${NATIVE_INIT_IMAGE}:latest
+ docker push ${USER}/${NATIVE_INIT_IMAGE}:${release_version}
+ docker push ${USER}/${NATIVE_INIT_IMAGE}:${moving_version}
+
+)
+
+(
+ if [ -f images/build-native/native_build.image ] ; then
+ native_build_image=$(cat images/build-native/native_build.image)
+ docker tag ${native_build_image} ${USER}/${NATIVE_BUILD_IMAGE}:latest
+ docker push ${USER}/${NATIVE_BUILD_IMAGE}:latest
+ docker push ${native_build_image}
+ fi
)
# Push result to git
-echo $new_version > release.version
+echo ${new_version} > release.version
git tag -a "$release_version" -m "version $release_version"
git add release.version
git commit -m "$SERVICE: post-$release_version version bump [skip ci]"
diff --git a/build.sh b/build.sh
index a057210f..57e3e777 100755
--- a/build.sh
+++ b/build.sh
@@ -25,29 +25,32 @@ done
mvn -B deploy -DaltDeploymentRepository=localStagingDir::default::file://${REPOSITORY_LOCATION}
(
- cd build-image
+ cd images/build
./docker-build.sh -t fnproject/fn-java-fdk-build:${BUILD_VERSION} .
)
(
- cd build-image
+ cd images/build
./docker-build.sh -f Dockerfile-jdk9 -t fnproject/fn-java-fdk-build:jdk9-${BUILD_VERSION} .
)
(
cd runtime
- docker build -t fnproject/fn-java-fdk:${BUILD_VERSION} .
+ docker build -t fnproject/fn-java-fdk:${BUILD_VERSION} -f ../images/runtime/Dockerfile .
)
(
cd runtime
- docker build -f Dockerfile-jdk9 -t fnproject/fn-java-fdk:jdk9-${BUILD_VERSION} .
+ docker build -f ../images/runtime/Dockerfile-jdk9 -t fnproject/fn-java-fdk:jdk9-${BUILD_VERSION} .
)
-if [ "${BUILD_NATIVE_JAVA}" = true ]
- then
- (
- cd native-image
+(
+ cd images/build-native
./docker-build.sh
- )
-fi
+)
+
+
+(
+ cd images/init-native
+ ./docker-build.sh
+)
diff --git a/native-image/Dockerfile b/images/build-native/Dockerfile
similarity index 100%
rename from native-image/Dockerfile
rename to images/build-native/Dockerfile
diff --git a/images/build-native/README.md b/images/build-native/README.md
new file mode 100644
index 00000000..11d3eb0a
--- /dev/null
+++ b/images/build-native/README.md
@@ -0,0 +1,5 @@
+# Native Build image
+
+This rebuilds the substrate build image for native java functions - this build does not run by default on all builds
+
+To update the build image, make a change to `native.version` (the target version for the release image) on a branch and merge into master.
\ No newline at end of file
diff --git a/images/build-native/docker-build.sh b/images/build-native/docker-build.sh
new file mode 100755
index 00000000..d1e7c6ee
--- /dev/null
+++ b/images/build-native/docker-build.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+native_version=$(cat native.version)
+set -e
+
+native_image="fnproject/fn-java-native:${native_version}"
+if docker pull ${native_image} ; then
+ echo ${native_image} already exists, skipping native build
+ exit 0
+fi
+
+docker build -t "fnproject/fn-java-native:${native_version}" .
+echo "fnproject/fn-java-native:${native_version}" > native_build.image
diff --git a/images/build-native/native.version b/images/build-native/native.version
new file mode 100644
index 00000000..6c6aa7cb
--- /dev/null
+++ b/images/build-native/native.version
@@ -0,0 +1 @@
+0.1.0
\ No newline at end of file
diff --git a/build-image/Dockerfile b/images/build/Dockerfile
similarity index 100%
rename from build-image/Dockerfile
rename to images/build/Dockerfile
diff --git a/build-image/Dockerfile-jdk9 b/images/build/Dockerfile-jdk9
similarity index 100%
rename from build-image/Dockerfile-jdk9
rename to images/build/Dockerfile-jdk9
diff --git a/build-image/cache-deps.sh b/images/build/cache-deps.sh
similarity index 100%
rename from build-image/cache-deps.sh
rename to images/build/cache-deps.sh
diff --git a/build-image/docker-build.sh b/images/build/docker-build.sh
similarity index 100%
rename from build-image/docker-build.sh
rename to images/build/docker-build.sh
diff --git a/build-image/pom.xml b/images/build/pom.xml
similarity index 100%
rename from build-image/pom.xml
rename to images/build/pom.xml
diff --git a/build-image/src/main/java/com/example/fn/HelloFunction.java b/images/build/src/main/java/com/example/fn/HelloFunction.java
similarity index 100%
rename from build-image/src/main/java/com/example/fn/HelloFunction.java
rename to images/build/src/main/java/com/example/fn/HelloFunction.java
diff --git a/build-image/src/test/java/com/example/fn/HelloFunctionTest.java b/images/build/src/test/java/com/example/fn/HelloFunctionTest.java
similarity index 100%
rename from build-image/src/test/java/com/example/fn/HelloFunctionTest.java
rename to images/build/src/test/java/com/example/fn/HelloFunctionTest.java
diff --git a/native-image/init-image/Dockerfile b/images/init-native/Dockerfile
similarity index 100%
rename from native-image/init-image/Dockerfile
rename to images/init-native/Dockerfile
diff --git a/native-image/init-image/Dockerfile-init-image b/images/init-native/Dockerfile-init-image
similarity index 100%
rename from native-image/init-image/Dockerfile-init-image
rename to images/init-native/Dockerfile-init-image
diff --git a/images/init-native/README.md b/images/init-native/README.md
new file mode 100644
index 00000000..080f648f
--- /dev/null
+++ b/images/init-native/README.md
@@ -0,0 +1,2 @@
+# Native init image
+
diff --git a/images/init-native/docker-build.sh b/images/init-native/docker-build.sh
new file mode 100755
index 00000000..4aea7a2b
--- /dev/null
+++ b/images/init-native/docker-build.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+if [ -z "${FN_FDK_VERSION}" ]; then
+ FN_FDK_VERSION=$(cat ../../release.version)
+fi
+sed -i.bak -e "s|.*|${FN_FDK_VERSION}|" pom.xml && rm pom.xml.bak
+docker build -t fnproject/fn-java-native-init:${FN_FDK_VERSION} -f Dockerfile-init-image .
diff --git a/native-image/init-image/func.init.yaml b/images/init-native/func.init.yaml
similarity index 100%
rename from native-image/init-image/func.init.yaml
rename to images/init-native/func.init.yaml
diff --git a/native-image/init-image/pom.xml b/images/init-native/pom.xml
similarity index 100%
rename from native-image/init-image/pom.xml
rename to images/init-native/pom.xml
diff --git a/native-image/init-image/src/main/conf/reflection.json b/images/init-native/src/main/conf/reflection.json
similarity index 100%
rename from native-image/init-image/src/main/conf/reflection.json
rename to images/init-native/src/main/conf/reflection.json
diff --git a/native-image/init-image/src/main/java/com/example/fn/HelloFunction.java b/images/init-native/src/main/java/com/example/fn/HelloFunction.java
similarity index 100%
rename from native-image/init-image/src/main/java/com/example/fn/HelloFunction.java
rename to images/init-native/src/main/java/com/example/fn/HelloFunction.java
diff --git a/native-image/init-image/src/test/java/com/example/fn/HelloFunctionTest.java b/images/init-native/src/test/java/com/example/fn/HelloFunctionTest.java
similarity index 100%
rename from native-image/init-image/src/test/java/com/example/fn/HelloFunctionTest.java
rename to images/init-native/src/test/java/com/example/fn/HelloFunctionTest.java
diff --git a/runtime/Dockerfile b/images/runtime/Dockerfile
similarity index 100%
rename from runtime/Dockerfile
rename to images/runtime/Dockerfile
diff --git a/runtime/Dockerfile-jdk9 b/images/runtime/Dockerfile-jdk9
similarity index 100%
rename from runtime/Dockerfile-jdk9
rename to images/runtime/Dockerfile-jdk9
diff --git a/images/runtime/README.md b/images/runtime/README.md
new file mode 100644
index 00000000..672f311d
--- /dev/null
+++ b/images/runtime/README.md
@@ -0,0 +1,3 @@
+# Fn Java runtime base image
+
+This image is used as a base image for functions - it includes a JDK and the latest version of the runtime
\ No newline at end of file
diff --git a/native-image/docker-build.sh b/native-image/docker-build.sh
deleted file mode 100755
index 11ae75dd..00000000
--- a/native-image/docker-build.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-docker build -t "fnproject/fn-java-native:latest" .
-(
- cd init-image
- ./docker-build.sh
-)
diff --git a/native-image/init-image/docker-build.sh b/native-image/init-image/docker-build.sh
deleted file mode 100755
index ced52457..00000000
--- a/native-image/init-image/docker-build.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-if [ -z "${release_version}" ]
- then
- release_version=$(cat ../../release.version)
-fi
-BUILD_VERSION=${FN_FDK_VERSION:-1.0.0-SNAPSHOT}
-sed -i.bak -e "s|.*|${release_version}|" pom.xml && rm pom.xml.bak
-docker build -t fnproject/fn-java-native-init:latest -f Dockerfile-init-image .