gpt4 book ai didi

gitlab - 如何传递凭据以在 Gitlab CI 脚本中拉取子模块?

转载 作者:行者123 更新时间:2023-12-02 19:51:45 26 4
gpt4 key购买 nike

我有几个项目,每个项目都在自己的存储库中,它们导入一个公共(public)库,该库也有自己的存储库。因此,.gitmodules 文件包含全名的库:

Submodule 'xx/yy' (https://gitlab.com/xx/yy.git) registered for path 'xx/yy'

但这行不通:

Fatal: could not read Username for 'https://gitlab.com': No such device or address

CI 脚本非常简单:

image: mcr.microsoft.com/dotnet/core/sdk:3.0.100-preview9-alpine3.9

variables:
GIT_SUBMODULE_STRATEGY: recursive

stages:
- build

before_script:
- "cd xx"
- "dotnet restore"

build:
stage: build
script:
- "cd xx"
- "dotnet build"

旧的答案是: GitLab pull submodules inside CI

但是事情已经改变了,根据文档,我们可以拥有没有相对路径的子模块,如下所示:https://docs.gitlab.com/ce/ci/git_submodules.html

最佳答案

tldr;像这样:

# .gitlab-ci.yml

stages:
- build

job1:
stage: build
before_script:
- git config --global credential.helper store
- git config --global credential.useHttpPath true
- |
git credential approve <<EOF
protocol=https
host=gitlab.com
path=my-group/my-submodule-repo.git
username=${CI_DEPENDENCY_PROXY_USER}
password=${CI_DEPENDENCY_PROXY_PASSWORD}
EOF
- git submodule update --init --recursive

script:
- echo "Let's start the build..."

说明

stages: - buildjob1: stage: build声明是样板文件——它们通知 gitlab ci 机器存在一个阶段(名为 build )和一个“属于”该阶段的工作。

before_script部分详细说明了需要在工作早期发生的事情 --- 下面的所有内容都必须在 script 之前完成开始了。

git config --global credentials.helper告诉git使用名为“store”的凭证助手。默认情况下,这是一个位于 ~/.git-credentials 的明文文件。包含以换行符分隔的用户名-密码修饰的 URI,每个对应于用户添加的给定 git 远程。

git config --global credentials.useHttpPath告诉git不要忽略 pathgit credential 的任何调用(显式或其他方式)的属性.这不是绝对必要的,而是一种很好的做法,例如,当您在同一个 host 上有多个 git Remote 时。 .

git credential approve读取标准输入(表示为 heredoc)并将给定的凭证传递给 credential.helper , 即 store , 写入 ~/.git-credentials .

git submodule update --init --recursive使用 .gitmodules 引用的内容填充现有(但尚未完成)的 super 项目工作树.

假设

上述示例做出以下假设:

引用资料:

关于gitlab - 如何传递凭据以在 Gitlab CI 脚本中拉取子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com