diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index d6e6971dfd9..dadf630887a 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -112,9 +112,12 @@ jobs:
TIKA_VERSION="${{ steps.version.outputs.tag }}"
OUT_DIR=target/tika-grpc-docker
- mkdir -p "${OUT_DIR}/libs" "${OUT_DIR}/plugins" "${OUT_DIR}/config" "${OUT_DIR}/bin"
+ mkdir -p "${OUT_DIR}/libs/tika-grpc" "${OUT_DIR}/plugins" "${OUT_DIR}/config" "${OUT_DIR}/bin"
cp "tika-grpc/target/tika-grpc-${TIKA_VERSION}.jar" "${OUT_DIR}/libs/"
+ mvn -pl tika-grpc dependency:copy-dependencies \
+ -DoutputDirectory="${PWD}/${OUT_DIR}/libs/tika-grpc" \
+ -DincludeScope=runtime -q -B
# Copy tika-pipes plugin zip files
for dir in tika-pipes/tika-pipes-plugins/*/; do
diff --git a/.github/workflows/docker-snapshot.yml b/.github/workflows/docker-snapshot.yml
index 5b4e0414155..cb82d05592a 100644
--- a/.github/workflows/docker-snapshot.yml
+++ b/.github/workflows/docker-snapshot.yml
@@ -69,6 +69,38 @@ jobs:
tar xzf "tika-server/tika-server-standard/target/tika-server-standard-${TIKA_VERSION}-bin.tgz" -C "${OUT_DIR}/tika-server"
cp "tika-server/docker-build/minimal/Dockerfile.snapshot" "${OUT_DIR}/Dockerfile"
+ - name: Build tika-server minimal image for smoke test
+ uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
+ with:
+ context: target/tika-server-minimal-docker
+ platforms: linux/amd64
+ load: true
+ build-args: |
+ TIKA_VERSION=${{ steps.version.outputs.tika_version }}
+ tags: tika-server-minimal-smoke:ci
+
+ - name: Smoke test tika-server minimal image
+ run: |
+ cleanup() {
+ status=$?
+ if [ "$status" -ne 0 ]; then
+ docker logs tika-server-minimal-smoke || true
+ fi
+ docker rm -f tika-server-minimal-smoke >/dev/null 2>&1 || true
+ exit "$status"
+ }
+ trap cleanup EXIT
+ docker run -d --name tika-server-minimal-smoke -p 9998:9998 tika-server-minimal-smoke:ci
+ for i in $(seq 1 20); do
+ if docker logs tika-server-minimal-smoke 2>&1 | grep -q "Started Apache Tika server"; then
+ echo "tika-server minimal started successfully"
+ exit 0
+ fi
+ sleep 2
+ done
+ echo "ERROR: tika-server minimal did not start within 40 seconds"
+ exit 1
+
- name: Build and push tika-server minimal snapshot
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
@@ -89,6 +121,38 @@ jobs:
tar xzf "tika-server/tika-server-standard/target/tika-server-standard-${TIKA_VERSION}-bin.tgz" -C "${OUT_DIR}/tika-server"
cp "tika-server/docker-build/full/Dockerfile.snapshot" "${OUT_DIR}/Dockerfile"
+ - name: Build tika-server full image for smoke test
+ uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
+ with:
+ context: target/tika-server-full-docker
+ platforms: linux/amd64
+ load: true
+ build-args: |
+ TIKA_VERSION=${{ steps.version.outputs.tika_version }}
+ tags: tika-server-full-smoke:ci
+
+ - name: Smoke test tika-server full image
+ run: |
+ cleanup() {
+ status=$?
+ if [ "$status" -ne 0 ]; then
+ docker logs tika-server-full-smoke || true
+ fi
+ docker rm -f tika-server-full-smoke >/dev/null 2>&1 || true
+ exit "$status"
+ }
+ trap cleanup EXIT
+ docker run -d --name tika-server-full-smoke -p 9999:9998 tika-server-full-smoke:ci
+ for i in $(seq 1 20); do
+ if docker logs tika-server-full-smoke 2>&1 | grep -q "Started Apache Tika server"; then
+ echo "tika-server full started successfully"
+ exit 0
+ fi
+ sleep 2
+ done
+ echo "ERROR: tika-server full did not start within 40 seconds"
+ exit 1
+
- name: Build and push tika-server full snapshot
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
@@ -106,9 +170,12 @@ jobs:
TIKA_VERSION="${{ steps.version.outputs.tika_version }}"
OUT_DIR=target/tika-grpc-docker
- mkdir -p "${OUT_DIR}/libs" "${OUT_DIR}/plugins" "${OUT_DIR}/config" "${OUT_DIR}/bin"
+ mkdir -p "${OUT_DIR}/libs/tika-grpc" "${OUT_DIR}/plugins" "${OUT_DIR}/config" "${OUT_DIR}/bin"
cp "tika-grpc/target/tika-grpc-${TIKA_VERSION}.jar" "${OUT_DIR}/libs/"
+ mvn -pl tika-grpc dependency:copy-dependencies \
+ -DoutputDirectory="${PWD}/${OUT_DIR}/libs/tika-grpc" \
+ -DincludeScope=runtime -q -B
# Copy tika-pipes plugin zip files
for dir in tika-pipes/tika-pipes-plugins/*/; do
@@ -135,6 +202,40 @@ jobs:
cp "tika-grpc/docker-build/start-tika-grpc.sh" "${OUT_DIR}/bin/"
cp "tika-grpc/docker-build/Dockerfile" "${OUT_DIR}/Dockerfile"
+ - name: Build tika-grpc image for smoke test
+ uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
+ with:
+ context: target/tika-grpc-docker
+ platforms: linux/amd64
+ load: true
+ build-args: |
+ VERSION=${{ steps.version.outputs.tika_version }}
+ tags: tika-grpc-smoke:ci
+
+ - name: Smoke test tika-grpc image
+ run: |
+ cleanup() {
+ status=$?
+ if [ "$status" -ne 0 ]; then
+ docker logs tika-grpc-smoke || true
+ docker ps -a --filter "name=^tika-grpc-smoke$" || true
+ docker inspect -f '{{.State.ExitCode}}' tika-grpc-smoke || true
+ fi
+ docker rm -f tika-grpc-smoke >/dev/null 2>&1 || true
+ exit "$status"
+ }
+ trap cleanup EXIT
+ docker run -d --name tika-grpc-smoke -p 9090:9090 tika-grpc-smoke:ci
+ for i in $(seq 1 15); do
+ if docker logs tika-grpc-smoke 2>&1 | grep -q "Server started, listening on"; then
+ echo "tika-grpc started successfully"
+ exit 0
+ fi
+ sleep 2
+ done
+ echo "ERROR: tika-grpc did not start within 30 seconds"
+ exit 1
+
- name: Build and push tika-grpc snapshot
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
diff --git a/tika-grpc/pom.xml b/tika-grpc/pom.xml
index b3b3fe02cbb..68fc531a0f5 100644
--- a/tika-grpc/pom.xml
+++ b/tika-grpc/pom.xml
@@ -474,7 +474,7 @@
org.apache.tika.pipes.grpc.TikaGrpcServer
true
- lib/
+ tika-grpc/
diff --git a/tika-grpc/src/main/assembly/assembly.xml b/tika-grpc/src/main/assembly/assembly.xml
index 37c48d40324..849f2675720 100644
--- a/tika-grpc/src/main/assembly/assembly.xml
+++ b/tika-grpc/src/main/assembly/assembly.xml
@@ -25,7 +25,7 @@
- lib
+ tika-grpc
false
false
runtime