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