首页 > 解决方案 > 在 Gitlab CI 中初始化私有子模块的问题

问题描述

我已经尝试了几天没有成功。希望有人可以帮助我。

我有一个私有存储库(我拥有),它有一个私有子模块(我也拥有),我正在尝试使用 gitlab CI 来获取我的二进制文件,这只是来自乳胶构建的 pdf。问题是当管道被触发时,我无法访问子模块来初始化它。我已遵循 此文档,即添加私有和公共 ssh 密钥,但没有成功。

这是我的 gitlab yaml 的样子,取自文档。我还添加了我的变量和部署密钥(我在主仓库和子模块中都尝试过)

image: registry.gitlab.com/islandoftex/images/texlive:latest
default:
  before_script:
    - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts

build_compendium:
  when: always
  variables:
    GIT_SUBMODULE_STRATEGY: recursive # Sometimes I add this, according to https://docs.gitlab.com/ee/ci/git_submodules.html
  script:
    # I HAVE TRIED DIFFERENT THINGS HERE, LIKE git submodule, git clone, etc...
    - pdflatex -synctex=1 -interaction=nonstopmode main.tex
    - pdflatex -synctex=1 -interaction=nonstopmode main.tex
  artifacts:
    expire_in: 1 day
    paths:
      - "main.pdf"

我最常遇到的错误是我被要求提供凭据,在管道构建期间我无法提供,或者我收到一条消息说我无权访问子模块。

我只知道一些关于 ssh 协议以及如何使用它连接到服务器的基础知识,但我可能会遗漏一些东西。

非常感激你的帮助。

标签: gitlabgitlab-cigit-submodules

解决方案


推荐阅读