在gitlab-ci作业中将文件从摇杆容器传递到乳胶容器

我想使用 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_pdfls figure向我显示了一个空文件夹,并且由于缺少数字,Latex 文章编译失败。

  • 根据这个答案和这个解释得很好的论坛帖子,应该可以使用工件在作业之间传递数据,但它们只使用一个容器来处理不同的作业。在我的情况下它不起作用。可能是因为我使用了两个不同的容器?
  • 另一种解决方案是仅使用rocker/tidyverse 容器并在其中安装latexmk,但由于apt install latexmk未知原因安装失败。也许是因为它有超过一百个依赖项,这对于 gitlab-CI 来说太多了?
  • 根据该答案,“依赖项”关键字可以提供帮助,但是当我使用它时,工件仍然不可用。
  • 如何将工件从一项工作传递到另一项工作?
  • 我应该按照docs.gitlab.com/caching 中的说明使用缓存吗?
以上是在gitlab-ci作业中将文件从摇杆容器传递到乳胶容器的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>