From 2737dc57f82dc8875bf6d27bbcd89855ba7cd5f5 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Sun, 23 Apr 2023 18:22:01 +0200 Subject: [PATCH 1/4] Use pre-built binary for GraphViz --- ci/tasks/update-versions.js | 20 +++++-------------- docs/antora.yml | 2 +- server/ops/docker/jdk11-jammy/Dockerfile | 6 +++++- .../io/kroki/server/service/Graphviz.java | 2 +- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/ci/tasks/update-versions.js b/ci/tasks/update-versions.js index f1fbf973c..2d0dcb694 100755 --- a/ci/tasks/update-versions.js +++ b/ci/tasks/update-versions.js @@ -198,6 +198,11 @@ try { const { version } = plantumlVersionFound.groups diagramLibraryVersions.plantuml = version } + const graphvizVersionFound = line.match(/^ARG GRAPHVIZ_VERSION="(?.+)"$/) + if (graphvizVersionFound) { + const { version } = graphvizVersionFound.groups + diagramLibraryVersions.graphviz = version + } } const svgbobCargoContent = await fs.readFile(ospath.join(rootDir, 'server', 'ops', 'docker', 'Cargo.toml'), 'utf8') @@ -215,21 +220,6 @@ try { const { value: ditaaVersion } = await mvnEvaluateExpression('ditaa-mini.version') diagramLibraryVersions.ditaa = ditaaVersion - // GraphViz version - const ubuntuPackagesUrl = `https://packages.ubuntu.com/${KROKI_UBUNTU_VERSION}/graphviz` - const ubuntuPackagesResponse = await fetch(ubuntuPackagesUrl) - if (ubuntuPackagesResponse.status >= 200 && ubuntuPackagesResponse.status < 400) { - const ubuntuPackagesContent = await ubuntuPackagesResponse.text() - const found = ubuntuPackagesContent.match(/Package: graphviz \((?[0-9.]+)-[0-9]+\)/) - if (found) { - const { version } = found.groups - diagramLibraryVersions.graphviz = version - } - } else { - console.error(`Unable to GET ${ubuntuPackagesUrl} - ${ubuntuPackagesResponse.status} ${ubuntuPackagesResponse.statusText} - ${await ubuntuPackagesResponse.text()}`) - process.exit(1) - } - console.log({ diagramLibraryVersions: Object.fromEntries(Object.entries(diagramLibraryVersions).sort((a, b) => a[0].localeCompare(b[0]))), count: Object.keys(diagramLibraryVersions).length diff --git a/docs/antora.yml b/docs/antora.yml index 9b61c4710..cd9053ccc 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -14,7 +14,7 @@ asciidoc: ditaa-version: 1.0.3 erd-version: 0.2.1.0 excalidraw-version: 0.14.2 - graphviz-version: 2.42.2 + graphviz-version: 8.0.4 mermaid-version: 9.4.3 nomnoml-version: 1.5.3 nwdiag-version: 3.0.0 diff --git a/server/ops/docker/jdk11-jammy/Dockerfile b/server/ops/docker/jdk11-jammy/Dockerfile index 2a98c6d25..d3a478d40 100644 --- a/server/ops/docker/jdk11-jammy/Dockerfile +++ b/server/ops/docker/jdk11-jammy/Dockerfile @@ -210,6 +210,8 @@ FROM eclipse-temurin:11.0.18_10-jre-jammy ARG D2_VERSION="0.4.1" ARG PLANTUML_VERSION="1.2023.6" ARG UMLET_VERSION="2023-03-20_UMLet_v15.1" +ARG PLANTUML_VERSION="1.2023.6" +ARG GRAPHVIZ_VERSION="8.0.4" ARG TARGETARCH RUN addgroup --gecos 1000 kroki && adduser --disabled-password --ingroup kroki -u 1000 kroki @@ -226,7 +228,6 @@ RUN addgroup --gecos 1000 kroki && adduser --disabled-password --ingroup kroki - RUN apt-get update && apt-get install --no-install-recommends --yes \ libjpeg9 \ giflib-tools \ - graphviz \ fonts-freefont-ttf \ fonts-noto-cjk \ ghostscript \ @@ -238,6 +239,9 @@ RUN apt-get update && apt-get install --no-install-recommends --yes \ texlive-science && \ apt-get clean && apt-get autoremove +RUN wget "https://github.com/yuzutech/graphviz-builder/releases/download/${GRAPHVIZ_VERSION}/dot-linux-amd64" -O /usr/bin/dot && \ + chmod +x /usr/bin/dot + RUN wget "https://github.com/terrastruct/d2/releases/download/v${D2_VERSION}/d2-v${D2_VERSION}-linux-${TARGETARCH}.tar.gz" -O - | tar -zxv -C /usr/bin d2-v${D2_VERSION}/bin/d2 && \ mv usr/bin/d2-v${D2_VERSION}/bin/d2 /usr/bin/d2 && \ chmod +x /usr/bin/d2 diff --git a/server/src/main/java/io/kroki/server/service/Graphviz.java b/server/src/main/java/io/kroki/server/service/Graphviz.java index b00751f3a..4e0f9acbf 100644 --- a/server/src/main/java/io/kroki/server/service/Graphviz.java +++ b/server/src/main/java/io/kroki/server/service/Graphviz.java @@ -49,7 +49,7 @@ public SourceDecoder getSourceDecoder() { @Override public String getVersion() { - return "2.42.2"; + return "8.0.4"; } @Override From 87c2504c422c039fda317840cb8097641947060e Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Sun, 30 Apr 2023 17:10:54 +0200 Subject: [PATCH 2/4] libgd3 is a shared lib --- server/ops/docker/jdk11-jammy/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/server/ops/docker/jdk11-jammy/Dockerfile b/server/ops/docker/jdk11-jammy/Dockerfile index d3a478d40..07cda2e72 100644 --- a/server/ops/docker/jdk11-jammy/Dockerfile +++ b/server/ops/docker/jdk11-jammy/Dockerfile @@ -226,6 +226,7 @@ RUN addgroup --gecos 1000 kroki && adduser --disabled-password --ingroup kroki - # * texlive-pictures - Provides various graphics packages like "circuitikz" # * texlive-science - Provides various science packages like "siunitx" RUN apt-get update && apt-get install --no-install-recommends --yes \ + libgd3 \ libjpeg9 \ giflib-tools \ fonts-freefont-ttf \ From 04be66dcee1432cd708ce485bae17e54f1a6a9c7 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Sun, 30 Apr 2023 17:51:40 +0200 Subject: [PATCH 3/4] Add missing fonts for ERD --- server/ops/docker/jdk11-jammy/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/ops/docker/jdk11-jammy/Dockerfile b/server/ops/docker/jdk11-jammy/Dockerfile index 07cda2e72..01e3d8fd7 100644 --- a/server/ops/docker/jdk11-jammy/Dockerfile +++ b/server/ops/docker/jdk11-jammy/Dockerfile @@ -231,6 +231,8 @@ RUN apt-get update && apt-get install --no-install-recommends --yes \ giflib-tools \ fonts-freefont-ttf \ fonts-noto-cjk \ + fonts-liberation \ + gsfonts \ ghostscript \ poppler-utils \ texlive \ From 40fcb9e750b4edf5c4d8e48c1952fbb7f6cdbf59 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Sun, 30 Apr 2023 22:51:49 +0200 Subject: [PATCH 4/4] support targetarch arm64 --- server/ops/docker/jdk11-jammy/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/ops/docker/jdk11-jammy/Dockerfile b/server/ops/docker/jdk11-jammy/Dockerfile index 01e3d8fd7..6bcea598f 100644 --- a/server/ops/docker/jdk11-jammy/Dockerfile +++ b/server/ops/docker/jdk11-jammy/Dockerfile @@ -242,7 +242,7 @@ RUN apt-get update && apt-get install --no-install-recommends --yes \ texlive-science && \ apt-get clean && apt-get autoremove -RUN wget "https://github.com/yuzutech/graphviz-builder/releases/download/${GRAPHVIZ_VERSION}/dot-linux-amd64" -O /usr/bin/dot && \ +RUN wget "https://github.com/yuzutech/graphviz-builder/releases/download/${GRAPHVIZ_VERSION}/dot-linux-${TARGETARCH}" -O /usr/bin/dot && \ chmod +x /usr/bin/dot RUN wget "https://github.com/terrastruct/d2/releases/download/v${D2_VERSION}/d2-v${D2_VERSION}-linux-${TARGETARCH}.tar.gz" -O - | tar -zxv -C /usr/bin d2-v${D2_VERSION}/bin/d2 && \