openBinaryFile: 在 Gitlab CI bash 脚本中执行 pandoc 时不存在

openBinaryFile: does not exist when executing pandoc in Gitlab CI bash script

我收到这个错误:

pandoc: sh: openBinaryFile: does not exist (No such file or directory)

当尝试在 Gitlab CI bash 脚本中使用 Pandoc 构建一些资产时。

I have a repo, Finnito/Science, 使用 Hugo 为 Gitlab Pages 站点提供服务。我正在尝试设置一个 Gitlab CI 管道来在我提交回购协议时从我的 Markdown 源构建我的 HTML 幻灯片和 PDF 文档,这样我就不必在本地构建它们。

我一直在尝试 pandoc 的不同 Docker 图像,但决定 pandoc/latex 是我最好的选择,因为它是 "official" 并且建立在 Alpine 之上,它既漂亮又轻巧。但我似乎无法理解这个错误。

我已经为 pandoc 尝试了各种不同的咒语,但它们似乎不起作用。

我的 Gitlab CI 工作是这样的:

assets:
  image: pandoc/latex
  script:
    - chmod +x ci-build.sh
    - sh ci-build.sh

我的 ci-build.sh 脚本如下所示:

#!/bin/sh

modulesToBuild=(
    "/builds/Finnito/science/content/10sci/5-fire-and-fuels"
    "/builds/Finnito/science/content/10scie/6-geology"
    "/builds/Finnito/science/content/11sci/4-mechanics"
    "/builds/Finnito/science/content/11sci/5-genetics"
    "/builds/Finnito/science/content/12phy/2-mechanics"
    "/builds/Finnito/science/content/12phy/3-electricity"
)

for i in "${modulesToBuild[@]}"; do

    # Navigate to the directory.
    cd $i

    # Build the HTML slides and
    # PDFs for all markdown docs.
    for filename in markdown/*.md; do
        file=${filename##*/}
        name=${file%%.*}
        pandoc/latex pandoc -s --mathjax -i -t revealjs "markdown/$name.md" -o "$name.html"
        pandoc/latex pandoc "markdown/$name.md" -o "$name.pdf" --pdf-engine=pdflatex
    done
done

老实说,我完全不知道如何在 Docker 容器中成功调用 pandoc。我对此很陌生,这一切都没有什么意义!

任何帮助将不胜感激!

图像已 /usr/bin/pandoc 设置为 entry point。这意味着当 运行 容器时不必指定 pandoc 命令;提供命令将导致 pandoc 尝试读取具有给定命令名称的输入文件,这会导致您看到的错误。

有一段时间,images 使用自定义入口点脚本来检测是否应该执行不同的二进制文件。但这被恢复了,因为它被证明是不可靠和令人困惑的。