@@ -19,69 +19,41 @@ RUN microdnf update && \
19
19
#
20
20
WORKDIR /tmp
21
21
RUN if [[ "${PRODUCT}" == 2.* ]] ; then \
22
- curl "https://repo.stackable.tech/repository/packages/maven/apache-maven-${MAVEN_VERSION}-bin.tar.gz" | tar -xzC . && \
23
- ln -sf /tmp/apache-maven-${MAVEN_VERSION}/bin/mvn /usr/bin/mvn ; \
22
+ curl "https://repo.stackable.tech/repository/packages/maven/apache-maven-${MAVEN_VERSION}-bin.tar.gz" | tar -xzC . && \
23
+ ln -sf /tmp/apache-maven-${MAVEN_VERSION}/bin/mvn /usr/bin/mvn ; \
24
24
fi
25
25
26
26
USER ${STACKABLE_USER_UID}
27
27
WORKDIR /stackable
28
28
29
29
COPY --chown=${STACKABLE_USER_UID}:0 nifi/stackable/patches /stackable/patches
30
30
31
- # NOTE: NiFi 1.21.0 source build does not work with the current arm64 git runners due to java heap issues:
32
- #
33
- # [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.5.0:single (make shared resource) on project nifi-registry-assembly:
34
- # Failed to create assembly: Error creating assembly archive bin: Problem creating zip: Execution exception: Java heap space
35
- #
36
- # Since this will be deprecated in the release 24.7 and then removed we copy the NiFi 1.21.0 binaries instead
37
- # of building from source. The if condition can be removed once 1.21.0 is no longer supported and only the
38
- # else branch is required to build from source.
39
- #
40
- RUN if [[ "${PRODUCT}" == "1.21.0" ]] ; then \
41
- curl 'https://repo.stackable.tech/repository/m2/tech/stackable/nifi/stackable-bcrypt/1.0-SNAPSHOT/stackable-bcrypt-1.0-20240508.153334-1-jar-with-dependencies.jar' \
42
- # This used to be located in /bin/stackable-bcrypt.jar. We create a softlink for /bin/stackable-bcrypt.jar in the main container for backwards compatibility.
43
- -o /stackable/stackable-bcrypt.jar && \
44
- # zip is different than tar and cannot be just piped, therefore the intermediate save and remove step to unzip
45
- curl https://repo.stackable.tech/repository/packages/nifi/nifi-${PRODUCT}-bin.zip -o /stackable/nifi-${PRODUCT}-bin.zip && \
46
- unzip /stackable/nifi-${PRODUCT}-bin.zip && \
47
- rm /stackable/nifi-${PRODUCT}-bin.zip && \
48
- # Remove generated docs in binary
49
- rm -rf /stackable/nifi-${PRODUCT}/docs && \
50
- # Add Iceberg extensions as they are not included by default and are important enough
51
- # They need to be build from source, as https://mvnrepository.com/artifact/org.apache.nifi/nifi-iceberg-processors-nar does not ship the org.apache.hadoop.fs.s3a.S3AFileSystem (see https://github.com/apache/nifi/pull/6368#issuecomment-1502175258)
52
- # See https://repo.stackable.tech/repository/packages/nifi/iceberg-nars/README.md for details on how to build them
53
- cd /stackable/nifi-${PRODUCT}/lib/ && \
54
- curl -O "https://repo.stackable.tech/repository/packages/nifi/iceberg-nars/nifi-iceberg-processors-nar-${PRODUCT}-with-aws.nar" && \
55
- curl -O "https://repo.stackable.tech/repository/packages/nifi/iceberg-nars/nifi-iceberg-services-nar-${PRODUCT}-with-aws.nar" && \
56
- curl -O "https://repo.stackable.tech/repository/packages/nifi/iceberg-nars/nifi-iceberg-services-api-nar-${PRODUCT}-with-aws.nar" ; \
57
- else \
58
- curl 'https://repo.stackable.tech/repository/m2/tech/stackable/nifi/stackable-bcrypt/1.0-SNAPSHOT/stackable-bcrypt-1.0-20240508.153334-1-jar-with-dependencies.jar' \
59
- # This used to be located in /bin/stackable-bcrypt.jar. We create a softlink for /bin/stackable-bcrypt.jar in the main container for backwards compatibility.
60
- -o /stackable/stackable-bcrypt.jar && \
61
- # Get the source release from nexus
62
- curl "https://repo.stackable.tech/repository/packages/nifi/nifi-${PRODUCT}-source-release.zip" -o "/stackable/nifi-${PRODUCT}-source-release.zip" && \
63
- unzip "nifi-${PRODUCT}-source-release.zip" && \
64
- # Clean up downloaded source after unzipping
65
- rm -rf "nifi-${PRODUCT}-source-release.zip" && \
66
- # The NiFi "binary" ends up in a folder named "nifi-${PRODUCT}" which should be copied to /stackable
67
- # from /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/nifi-${PRODUCT}-bin/nifi-${PRODUCT} (see later steps)
68
- # Therefore we add the suffix "-src" to be able to copy the binary and remove the unzipped sources afterwards.
69
- mv nifi-${PRODUCT} nifi-${PRODUCT}-src && \
70
- # Apply patches
71
- chmod +x patches/apply_patches.sh && \
72
- patches/apply_patches.sh ${PRODUCT} && \
73
- # Build NiFi
74
- cd /stackable/nifi-${PRODUCT}-src/ && \
75
- mvn clean install -Dmaven.javadoc.skip=true -DskipTests --activate-profiles include-iceberg,include-hadoop-aws && \
76
- # Copy the binaries to the /stackable folder
77
- mv /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/nifi-${PRODUCT}-bin/nifi-${PRODUCT} /stackable/nifi-${PRODUCT} && \
78
- # Copy the SBOM as well
79
- mv /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/bom.json /stackable/nifi-${PRODUCT}/nifi-${PRODUCT}.cdx.json && \
80
- # Remove the unzipped sources
81
- rm -rf /stackable/nifi-${PRODUCT}-src && \
82
- # Remove generated docs in binary
83
- rm -rf /stackable/nifi-${PRODUCT}/docs ; \
84
- fi
31
+ RUN curl 'https://repo.stackable.tech/repository/m2/tech/stackable/nifi/stackable-bcrypt/1.0-SNAPSHOT/stackable-bcrypt-1.0-20240508.153334-1-jar-with-dependencies.jar' \
32
+ # This used to be located in /bin/stackable-bcrypt.jar. We create a softlink for /bin/stackable-bcrypt.jar in the main container for backwards compatibility.
33
+ -o /stackable/stackable-bcrypt.jar && \
34
+ # Get the source release from nexus
35
+ curl "https://repo.stackable.tech/repository/packages/nifi/nifi-${PRODUCT}-source-release.zip" -o "/stackable/nifi-${PRODUCT}-source-release.zip" && \
36
+ unzip "nifi-${PRODUCT}-source-release.zip" && \
37
+ # Clean up downloaded source after unzipping
38
+ rm -rf "nifi-${PRODUCT}-source-release.zip" && \
39
+ # The NiFi "binary" ends up in a folder named "nifi-${PRODUCT}" which should be copied to /stackable
40
+ # from /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/nifi-${PRODUCT}-bin/nifi-${PRODUCT} (see later steps)
41
+ # Therefore we add the suffix "-src" to be able to copy the binary and remove the unzipped sources afterwards.
42
+ mv nifi-${PRODUCT} nifi-${PRODUCT}-src && \
43
+ # Apply patches
44
+ chmod +x patches/apply_patches.sh && \
45
+ patches/apply_patches.sh ${PRODUCT} && \
46
+ # Build NiFi
47
+ cd /stackable/nifi-${PRODUCT}-src/ && \
48
+ mvn clean install -Dmaven.javadoc.skip=true -DskipTests --activate-profiles include-iceberg,include-hadoop-aws && \
49
+ # Copy the binaries to the /stackable folder
50
+ mv /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/nifi-${PRODUCT}-bin/nifi-${PRODUCT} /stackable/nifi-${PRODUCT} && \
51
+ # Copy the SBOM as well
52
+ mv /stackable/nifi-${PRODUCT}-src/nifi-assembly/target/bom.json /stackable/nifi-${PRODUCT}/nifi-${PRODUCT}.cdx.json && \
53
+ # Remove the unzipped sources
54
+ rm -rf /stackable/nifi-${PRODUCT}-src && \
55
+ # Remove generated docs in binary
56
+ rm -rf /stackable/nifi-${PRODUCT}/docs
85
57
86
58
FROM stackable/image/java-base AS final
87
59
@@ -90,12 +62,12 @@ ARG RELEASE
90
62
ARG STACKABLE_USER_UID
91
63
92
64
LABEL name="Apache NiFi" \
93
- maintainer="info@stackable.tech" \
94
- vendor="Stackable GmbH" \
95
- version="${PRODUCT}" \
96
- release="${RELEASE}" \
97
- summary="The Stackable image for Apache NiFi." \
98
- description="This image is deployed by the Stackable Operator for Apache NiFi."
65
+ maintainer="info@stackable.tech" \
66
+ vendor="Stackable GmbH" \
67
+ version="${PRODUCT}" \
68
+ release="${RELEASE}" \
69
+ summary="The Stackable image for Apache NiFi." \
70
+ description="This image is deployed by the Stackable Operator for Apache NiFi."
99
71
100
72
COPY --chown=${STACKABLE_USER_UID}:0 --from=nifi-builder /stackable/nifi-${PRODUCT} /stackable/nifi-${PRODUCT}/
101
73
COPY --chown=${STACKABLE_USER_UID}:0 --from=nifi-builder /stackable/stackable-bcrypt.jar /stackable/stackable-bcrypt.jar
0 commit comments