@@ -26,7 +26,7 @@ COPY hbase/licenses /licenses
26
26
USER ${STACKABLE_USER_UID}
27
27
WORKDIR /stackable
28
28
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}
30
30
COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/jmx/config${JMX_EXPORTER} /stackable/jmx
31
31
32
32
# 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
44
44
# ##
45
45
# ## HBase
46
46
# ##
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})"
54
48
55
49
# The release scripts of HBase also run the build twice (three times in fact, once again to build the site which we skip here).
56
50
# 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!
57
51
mvn --batch-mode --no-transfer-progress -Dhadoop.profile=3.0 -Dhadoop-three.version=${HADOOP} clean install -DskipTests
58
52
mvn --batch-mode --no-transfer-progress -Dhadoop.profile=3.0 -Dhadoop-three.version=${HADOOP} install assembly:single -DskipTests -Dcheckstyle.skip=true -Prelease
59
53
tar -xzf hbase-assembly/target/hbase-${PRODUCT}-bin.tar.gz -C /stackable/
60
54
mv 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
+
62
59
ln -s "/stackable/hbase-${PRODUCT}" /stackable/hbase
63
60
64
61
# ##
@@ -145,8 +142,7 @@ ARG DELETE_CACHES="true"
145
142
# so that they are not expanded. Disabling ShellCheck rules in a Dockerfile
146
143
# does not work, so please ignore the according warning (SC2016).
147
144
COPY --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}
150
146
COPY --chown=${STACKABLE_USER_UID}:0 hbase/stackable/bin/hbase-entrypoint.sh /stackable/bin/
151
147
152
148
USER ${STACKABLE_USER_UID}
@@ -155,30 +151,29 @@ WORKDIR /stackable
155
151
# Cache mounts are owned by root by default
156
152
# We need to explicitly give the uid to use
157
153
RUN --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})"
158
155
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
163
159
164
160
mvn \
165
161
--batch-mode \
166
162
--no-transfer-progress \
167
163
-Dhbase.version=${PRODUCT} \
168
164
-Dhbase-thirdparty.version=${HBASE_THIRDPARTY} \
169
165
-DskipTests \
170
- -fhbase-operator-tools-${HBASE_OPERATOR_TOOLS}-src \
171
166
package assembly:single
172
167
173
168
# 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
174
169
# 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
175
170
mkdir /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}
176
171
tar -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 \
178
173
-C /stackable/hbase-operator-tools-${HBASE_OPERATOR_TOOLS}/ \
179
174
--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})
182
177
183
178
envsubst '${PRODUCT}:${HBASE_OPERATOR_TOOLS}' < /stackable/bin/hbck2.env > /stackable/bin/hbck2
184
179
chmod +x /stackable/bin/hbck2
@@ -246,20 +241,13 @@ ARG STACKABLE_USER_UID
246
241
# This can be used to speed up builds when disk space is of no concern.
247
242
ARG DELETE_CACHES="true"
248
243
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}
251
245
USER ${STACKABLE_USER_UID}
252
246
WORKDIR /stackable
253
247
254
248
RUN --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})"
261
250
262
- # Passing "-f" means it'll build in the phoenix source directory without cding into it
263
251
# The Maven command can be found inside of the scripts in the create-release folder (release-util.sh as of Phoenix 5.2.0)
264
252
# https://github.com/apache/phoenix/tree/5.2.0/dev/create-release
265
253
mvn \
@@ -270,16 +258,17 @@ mvn \
270
258
-Dhadoop.version=${HADOOP} \
271
259
-DskipTests \
272
260
-Dcheckstyle.skip=true \
273
- -fphoenix-${PHOENIX}-src \
274
261
clean \
275
262
package
276
263
277
264
# 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
278
265
# 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
279
266
mkdir /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})
283
272
ln -s "/stackable/phoenix-${HBASE_PROFILE}-${PHOENIX}-bin" /stackable/phoenix
284
273
285
274
# We're removing these to make the intermediate layer smaller
0 commit comments