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 使用自定义入口点脚本来检测是否应该执行不同的二进制文件。但这被恢复了,因为它被证明是不可靠和令人困惑的。
我收到这个错误:
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 使用自定义入口点脚本来检测是否应该执行不同的二进制文件。但这被恢复了,因为它被证明是不可靠和令人困惑的。