@@ -26,7 +26,7 @@ COPY hbase/licenses /licenses
2626USER ${STACKABLE_USER_UID}
2727WORKDIR /stackable
2828
29- COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/patches /stackable/patches
29+ COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/patches/${PRODUCT} /stackable/src/hbase/stackable/ patches/${PRODUCT}
3030COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/jmx/config${JMX_EXPORTER} /stackable/jmx
3131
3232# Cache mounts are owned by root by default
@@ -44,21 +44,18 @@ RUN --mount=type=cache,id=maven-hbase-${PRODUCT},uid=${STACKABLE_USER_UID},targe
4444# ##
4545# ## HBase
4646# ##
47- curl "https://repo.stackable.tech/repository/packages/hbase/hbase-${PRODUCT}-src.tar.gz" | tar -xzC .
48- mv hbase-${PRODUCT} hbase-${PRODUCT}-src
49-
50- chmod +x patches/apply_patches.sh
51- patches/apply_patches.sh ${PRODUCT}
52-
53- cd /stackable/hbase-${PRODUCT}-src/
47+ cd "$(/stackable/patchable --images-repo-root=src checkout hbase ${PRODUCT})"
5448
5549# The release scripts of HBase also run the build twice (three times in fact, once again to build the site which we skip here).
5650# I chose to replicate that exact behavior for consistency so please don't merge the two mvn runs into one unless you really know what you're doing!
5751mvn --batch-mode --no-transfer-progress -Dhadoop.profile=3.0 -Dhadoop-three.version=${HADOOP} clean install -DskipTests
5852mvn --batch-mode --no-transfer-progress -Dhadoop.profile=3.0 -Dhadoop-three.version=${HADOOP} install assembly:single -DskipTests -Dcheckstyle.skip=true -Prelease
5953tar -xzf hbase-assembly/target/hbase-${PRODUCT}-bin.tar.gz -C /stackable/
6054mv hbase-assembly/target/bom.json /stackable/hbase-${PRODUCT}/hbase-${PRODUCT}.cdx.json
61- rm -rf /stackable/hbase-${PRODUCT}-src
55+
56+ # Remove sources
57+ (cd .. && rm -r ${PRODUCT})
58+
6259ln -s "/stackable/hbase-${PRODUCT}" /stackable/hbase
6360
6461# ##
@@ -145,8 +142,7 @@ ARG DELETE_CACHES="true"
145142# so that they are not expanded. Disabling ShellCheck rules in a Dockerfile
146143# does not work, so please ignore the according warning (SC2016).
147144COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/bin/hbck2.env /stackable/bin/
148- COPY --chown=${STACKABLE_USER_UID}:0 hbase/hbase-operator-tools/stackable/patches /stackable/patches
149- COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/patches/apply_patches.sh /stackable/patches
145+ COPY --chown=${STACKABLE_USER_UID}:0 hbase/hbase-operator-tools/stackable/patches/${HBASE_OPERATOR_TOOLS} /stackable/src/hbase-operator-tools/stackable/patches/${HBASE_OPERATOR_TOOLS}
150146COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/bin/hbase-entrypoint.sh /stackable/bin/
151147
152148USER ${STACKABLE_USER_UID}
@@ -155,30 +151,29 @@ WORKDIR /stackable
155151# Cache mounts are owned by root by default
156152# We need to explicitly give the uid to use
157153RUN --mount=type=cache,id=maven-hbase-operator-tools-${HBASE_OPERATOR_TOOLS},uid=${STACKABLE_USER_UID},target=/stackable/.m2/repository <<EOF
154+ cd "$(/stackable/patchable --images-repo-root=src checkout hbase-operator-tools ${HBASE_OPERATOR_TOOLS})"
158155
159- curl --fail "https://repo.stackable.tech/repository/packages/hbase-operator-tools/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src.tar.gz" | tar -xzC .
160- mv hbase-operator-tools-${HBASE_OPERATOR_TOOLS} hbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src
161- chmod +x patches/apply_patches.sh
162- patches/apply_patches.sh ${HBASE_OPERATOR_TOOLS} hbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src
156+ # Remove the Git repo because `git-commit-id-maven-plugin` tries to get the latest commit if a Git repo is present,
157+ # which fails due to a problem with worktrees, see https://github.com/git-commit-id/git-commit-id-maven-plugin/issues/215
158+ rm .git
163159
164160mvn \
165161 --batch-mode \
166162 --no-transfer-progress \
167163 -Dhbase.version=${PRODUCT} \
168164 -Dhbase-thirdparty.version=${HBASE_THIRDPARTY} \
169165 -DskipTests \
170- -fhbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src \
171166 package assembly:single
172167
173168# We need the "*" here as the directory won't be the same as the final tar file for SNAPSHOTs which we currently have to use for 2.6
174169# And we're stripping the top level directory while extracting because it may be called different than the folder name when it's a SNAPSHOT
175170mkdir /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}
176171tar -xz \
177- -f hbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src/hbase-operator-tools- assembly/target/hbase-operator-tools-*-bin.tar.gz \
172+ -f hbase-operator-tools-assembly/target/hbase-operator-tools-*-bin.tar.gz \
178173 -C /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}/ \
179174 --strip-components=1
180- mv hbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src/hbase-operator-tools- assembly/target/bom.json /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}.cdx.json
181- rm -rf /stackable/hbase-operator-tools- ${HBASE_OPERATOR_TOOLS}-src
175+ mv hbase-operator-tools-assembly/target/bom.json /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}.cdx.json
176+ (cd .. && rm -r ${HBASE_OPERATOR_TOOLS})
182177
183178envsubst '${PRODUCT}:${HBASE_OPERATOR_TOOLS}' < /stackable/bin/hbck2.env > /stackable/bin/hbck2
184179chmod +x /stackable/bin/hbck2
@@ -246,20 +241,13 @@ ARG STACKABLE_USER_UID
246241# This can be used to speed up builds when disk space is of no concern.
247242ARG DELETE_CACHES="true"
248243
249- COPY --chown=${STACKABLE_USER_UID}:0 hbase/phoenix/stackable/patches /stackable/patches
250- COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/patches/apply_patches.sh /stackable/patches
244+ COPY --chown=${STACKABLE_USER_UID}:0 hbase/phoenix/stackable/patches/${PHOENIX} /stackable/src/phoenix/stackable/patches/${PHOENIX}
251245USER ${STACKABLE_USER_UID}
252246WORKDIR /stackable
253247
254248RUN --mount=type=cache,id=maven-phoenix-${PHOENIX},uid=${STACKABLE_USER_UID},target=/stackable/.m2/repository <<EOF
255- cd /stackable
256- curl --fail "https://repo.stackable.tech/repository/packages/phoenix/phoenix-${PHOENIX}-src.tar.gz" | tar -xzC .
257- mv phoenix-${PHOENIX} phoenix-${PHOENIX}-src
258-
259- chmod +x patches/apply_patches.sh
260- patches/apply_patches.sh ${PHOENIX} phoenix-${PHOENIX}-src
249+ cd "$(/stackable/patchable --images-repo-root=src checkout phoenix ${PHOENIX})"
261250
262- # Passing "-f" means it'll build in the phoenix source directory without cding into it
263251# The Maven command can be found inside of the scripts in the create-release folder (release-util.sh as of Phoenix 5.2.0)
264252# https://github.com/apache/phoenix/tree/5.2.0/dev/create-release
265253mvn \
@@ -270,16 +258,17 @@ mvn \
270258 -Dhadoop.version=${HADOOP} \
271259 -DskipTests \
272260 -Dcheckstyle.skip=true \
273- -fphoenix-${PHOENIX}-src \
274261 clean \
275262 package
276263
277264# We need the "*" here as the directory won't be the same as the final tar file for SNAPSHOTs which we currently have to use for 2.6
278265# And we're stripping the top level directory while extracting because it may be called different than the folder name when it's a SNAPSHOT
279266mkdir /stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin
280- tar -xz -f phoenix-${PHOENIX}-src/phoenix-assembly/target/phoenix-hbase-*-bin.tar.gz -C /stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin/ --strip-components=1
281- mv phoenix-${PHOENIX}-src/phoenix-assembly/target/bom.json /stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin/phoenix-${HBASE_PROFILE}-${PHOENIX}.cdx.json
282- rm -rf /stackable/phoenix-${PHOENIX}-src
267+ tar -xz -f phoenix-assembly/target/phoenix-hbase-*-bin.tar.gz -C /stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin/ --strip-components=1
268+ mv phoenix-assembly/target/bom.json /stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin/phoenix-${HBASE_PROFILE}-${PHOENIX}.cdx.json
269+
270+ # Remove sources
271+ (cd .. && rm -r ${PHOENIX})
283272ln -s "/stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin" /stackable/phoenix
284273
285274# We're removing these to make the intermediate layer smaller
0 commit comments