Gitlab ci 如何使用include in GitLab CI从另一个项目中的文件运行脚本?

Gitlab ci 如何使用include in GitLab CI从另一个项目中的文件运行脚本?,gitlab-ci,Gitlab Ci,我正试图通过include从另一个项目中的模板文件运行shell脚本 这应该如何配置才能工作?下面的脚本是我的代码的简化版本 项目A template.yml deploy: before_script: - chmod +x ./.run.sh - source ./.run.sh include: - project: 'project-a' ref: master file: '/template.yml' stages: - deploy

我正试图通过include从另一个项目中的模板文件运行shell脚本

这应该如何配置才能工作?下面的脚本是我的代码的简化版本

项目A
template.yml

deploy:
  before_script:
    - chmod +x ./.run.sh
    - source ./.run.sh
include:
 - project: 'project-a'
    ref: master
    file: '/template.yml'

stages:
  - deploy
项目B
gitlab ci.yml

deploy:
  before_script:
    - chmod +x ./.run.sh
    - source ./.run.sh
include:
 - project: 'project-a'
    ref: master
    file: '/template.yml'

stages:
  - deploy
显然,这些命令实际上是从ProjectB而不是模板所在的ProjectA运行的。这可以通过在模板文件中添加
ls-a
进一步确认


那么我们应该如何调用
run.sh
?两个项目都位于不同组下的同一GitLab实例上。

如果您有权访问项目A和B,则可以使用。您可以从项目B创建项目a中的管道

在项目A中,克隆项目B并运行脚本

项目B
作业1:
变量:
项目路径:“$CI项目路径”
发布分支:“$CI\U提交分支”
触发:
项目:项目a
策略:依赖
项目A
作业2:
规则:
-如果:“$CI_PIPELINE_SOURCE==”PIPELINE“&&&$PROJECT_PATH&&&$RELEASE_BRANCH”
脚本:
-git克隆-b“${RELEASE_BRANCH}”--深度50https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/${PROJECT_PATH}.git$(basename${PROJECT_PATH})
-cd$(basename${PROJECT\u PATH})
-chmod+x../.run.sh
-source../.run.sh

那么您想通过
项目B
管道执行shell脚本,但在
项目A
的范围内?例如,
ls-a
应该在
项目B
中运行的管道中打印
项目a
中的文件?我的理解正确吗?@rkm正确。在我的示例中,项目A包含
run.sh
。但由于我在项目B中包含
template.yml
,所以它无法看到
run.sh
。我正在尝试包含项目A及其依赖项。谢谢!我就是这样做到的。它工作得非常好,我不知道这个功能。现在我有了一个CI存储库,可以为一系列其他项目(构建、部署等)完成我所有的工作。这真是太棒了。如果有人想知道,您也可以设置触发器分支。我发现这对于不同的版本或语言非常有用(例如,我有一个适用于不同语言的
build
项目,一个用于构建
python
python
分支和一个用于构建
nodejs
分支)。