From 90d513bde1afb9d9e7811415b3a4ff166539e5dc Mon Sep 17 00:00:00 2001 From: Mika Rinne Date: Tue, 25 Feb 2025 07:58:40 +0200 Subject: [PATCH 1/2] native build_spec.yaml fixed --- .../build_spec_native.yaml | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml b/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml index 687c767c1..3f01a6d7b 100644 --- a/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml +++ b/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml @@ -1,29 +1,27 @@ -version: 0.1 -component: build -timeoutInSeconds: 5000 -shell: bash -env: - exportedVariables: - - buildId -steps: - - type: Command - command: | - buildId=`echo ${OCI_BUILD_RUN_ID} | rev | cut -c 1-6 | rev` - echo "Build ID: $buildId" - - type: Command - command: | - # This replaces the default open-jdk - export GRAALVM_VERSION="21" - export JAVA_VERSION="17" - yum -y install graalvm${GRAALVM_VERSION}-ee-${JAVA_VERSION}-jdk; - export JAVA_HOME=/usr/lib64/graalvm/graalvm${GRAALVM_VERSION}-ee-java${JAVA_VERSION}; - java -version +FROM fnproject/fn-java-fdk-build:jdk17-1.0-latest as build-stage +WORKDIR /function +ENV MAVEN_OPTS -Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort= -Dhttp.nonProxyHosts= -Dmaven.repo.local=/usr/share/maven/ref/repository +ADD pom.xml /function/pom.xml +RUN ["mvn", "package", "dependency:copy-dependencies", "-DincludeScope=runtime", "-DskipTests=true", "-Dmdep.prependGroupId=true", "-DoutputDirectory=target", "--fail-never"] +ADD src /function/src +RUN ["mvn", "package"] - mvn clean install - - docker build -f Dockerfile.native -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME} . - docker tag ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:latest ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:$buildId -outputArtifacts: - - name: image-native - type: DOCKER_IMAGE - location: ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME} \ No newline at end of file +FROM container-registry.oracle.com/graalvm/native-image:23-ol8 AS native +WORKDIR /app +COPY --from=build-stage /function/target . +ADD reflection.json . + +RUN native-image \ + -H:ReflectionConfigurationFiles=/app/reflection.json \ + -Ob \ + -H:Name=Hello \ + -cp "/app/Hellofunc-1.0-SNAPSHOT.jar:/app/*" \ + com.fnproject.fn.runtime.EntryPoint + +FROM fnproject/fn-java-fdk:jre17-latest as fdk + +FROM container-registry.oracle.com/os/oraclelinux:8-slim +COPY --from=native /app/Hello . +COPY --from=fdk /function/runtime/* ./ +ENTRYPOINT [ "./Hello" ] +CMD [ "com.example.fn.HelloFunction::handleRequest", "-Djava.library.path=/lib"] \ No newline at end of file From a61a655ba532e895f8186b84ab46e8d9ab59c9d1 Mon Sep 17 00:00:00 2001 From: Mika Rinne Date: Tue, 25 Feb 2025 07:59:50 +0200 Subject: [PATCH 2/2] native build_spec.yaml fixed --- .../build_spec_native.yaml | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml b/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml index 3f01a6d7b..eb936c36f 100644 --- a/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml +++ b/app-dev/devops-and-containers/devops/oci-devops-terraform-function-java-graalvm/files/build_pipeline_specs/build_spec_native.yaml @@ -1,27 +1,20 @@ -FROM fnproject/fn-java-fdk-build:jdk17-1.0-latest as build-stage -WORKDIR /function -ENV MAVEN_OPTS -Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort= -Dhttp.nonProxyHosts= -Dmaven.repo.local=/usr/share/maven/ref/repository -ADD pom.xml /function/pom.xml -RUN ["mvn", "package", "dependency:copy-dependencies", "-DincludeScope=runtime", "-DskipTests=true", "-Dmdep.prependGroupId=true", "-DoutputDirectory=target", "--fail-never"] -ADD src /function/src -RUN ["mvn", "package"] - -FROM container-registry.oracle.com/graalvm/native-image:23-ol8 AS native -WORKDIR /app -COPY --from=build-stage /function/target . -ADD reflection.json . - -RUN native-image \ - -H:ReflectionConfigurationFiles=/app/reflection.json \ - -Ob \ - -H:Name=Hello \ - -cp "/app/Hellofunc-1.0-SNAPSHOT.jar:/app/*" \ - com.fnproject.fn.runtime.EntryPoint - -FROM fnproject/fn-java-fdk:jre17-latest as fdk - -FROM container-registry.oracle.com/os/oraclelinux:8-slim -COPY --from=native /app/Hello . -COPY --from=fdk /function/runtime/* ./ -ENTRYPOINT [ "./Hello" ] -CMD [ "com.example.fn.HelloFunction::handleRequest", "-Djava.library.path=/lib"] \ No newline at end of file +version: 0.1 +component: build +timeoutInSeconds: 5000 +shell: bash +env: + exportedVariables: + - buildId +steps: + - type: Command + command: | + buildId=`echo ${OCI_BUILD_RUN_ID} | rev | cut -c 1-6 | rev` + echo "Build ID: $buildId" + - type: Command + command: | + docker build -f Dockerfile.native -t ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME} . + docker tag ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:latest ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:$buildId +outputArtifacts: + - name: image-native + type: DOCKER_IMAGE + location: ${REGISTRY}/${NAMESPACE}/${IMAGE_NAME} \ No newline at end of file