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 .