作者:江西风起如斯 | 来源:互联网 | 2023-09-15 09:19
我想使用GitlabCI来编译一篇Latex文章,如tex.stackexchange上的这个答案中所述(类似的pdf生成示例在artifacts的gitlab文档中显示
我想使用 Gitlab CI 来编译一篇 Latex 文章,如tex.stackexchange 上的这个答案中所述(类似的 pdf 生成示例在artifacts的gitlab 文档中显示)。我使用了期刊编辑提供的特殊乳胶模板。我的 Latex 文章包含使用 R 统计软件制作的数字。R 和 Latex 是两个具有很多依赖项的大型软件安装,因此我决定使用两个单独的容器进行构建,一个用于使用 R 进行统计分析和可视化,另一个用于将 Latex 文档编译为 pdf。
以下是内容.gitlab-ci.yml
:
knit_rnw_to_tex:
image: rocker/verse:4.0.0
script:
- Rscript -e "knitr::knit('article.Rnw')"
artifacts:
paths:
- figure/
compile_pdf:
image: aergus/latex
script:
- ls figure
- latexmk -pdf -bibtex -use-make article.tex
artifacts:
paths:
- article.pdf
knit_rnw_to_tex
在 R "rocker" 容器中执行的作业成功,我可以从 gitlab "jobs" 页面下载图形工件。第二份工作的问题compile_pdf
是ls figure
向我显示了一个空文件夹,并且由于缺少数字,Latex 文章编译失败。
- 根据这个答案和这个解释得很好的论坛帖子,应该可以使用工件在作业之间传递数据,但它们只使用一个容器来处理不同的作业。在我的情况下它不起作用。可能是因为我使用了两个不同的容器?
- 另一种解决方案是仅使用rocker/tidyverse 容器并在其中安装latexmk,但由于
apt install latexmk
未知原因安装失败。也许是因为它有超过一百个依赖项,这对于 gitlab-CI 来说太多了?
- 根据该答案,“依赖项”关键字可以提供帮助,但是当我使用它时,工件仍然不可用。
- 如何将工件从一项工作传递到另一项工作?
- 我应该按照docs.gitlab.com/caching 中的说明使用缓存吗?