2

我在 GitLab 中有两个存储库,比如说存储库 A 和 B。

回购 A 包含:

  • read_ci.yml
  • read_ci.sh

read_ci.yml 包含:

stages:
  - initialise

create checksum from pipeline:
  stage: initialise
  script:
    - chmod +x read_ci.sh
    - source ./read_ci.sh

回购 B 包含:

  • gitlab-ci.yml

gitlab-ci.yml 包含:

include:
  project: 'Project/project_name'
  file: 
    - '.gitlab-ci.yml'
  ref: main

显然,这不符合我的意图。我想要实现的是在项目 B 管道中运行项目 A 脚本。原因是我希望从多个不同的管道调用项目 A 并在那里运行。

GitLab 的替代方案:Azure Pipelines。从资源仓库运行脚本

4

2 回答 2

1

如果要在项目 B 管道中运行项目 A 脚本,可以将存储库 B 添加为 A 中的 git 子模块

git submodule add -b <branch-B> <git-repository-B> <target-dir>

您还需要在 CI 作业中添加变量GIT_SUBMODULE_STRATEGY: recursive.

于 2021-10-22T21:02:53.710 回答
1

正如 Davide 提到的那样,子模块绝对可以工作,尽管它有点像用大锤挂画。如果您想要的只是存储库中的单个脚本,只需将其下载到您的容器中。使用带有 CI_JOB_TOKEN的v4 API来下载文件,然后只需使用 sh 运行它。如果您的辅助存储库中有许多文件并且想要全部访问它们,那么像 Davide 提到的那样使用子模块,并确保您的 CI 作业通过设置子模块策略来检索它们,如下所示:

variables:
  GIT_SUBMODULE_STRATEGY: normal
于 2021-10-24T03:09:29.987 回答