我试图通过我的包含文件从另一个项目中的模板文件运行shell脚本。
应如何配置才能工作?下面的脚本是我的代码的简化版本。
template.yml
deploy:
before_script:
- chmod +x ./.run.sh
- source ./.run.sh
gitlab-ci.yml
include:
- project: 'project-a'
ref: master
file: '/template.yml'
stages:
- deploy
很明显,命令实际上是从模板所在的 ProjectB 运行的,而不是 ProjectA 运行的。可以通过在模板文件中添加ls -a
来进一步确认。
那我们应该怎么打run.sh
?这两个项目都在不同组中的同一GitLab实例上。
答案 0 :(得分:0)
如果您有权访问项目A和B,则可以使用multi-project pipelines。您trigger从项目B到项目A中的管道。
在项目A中,克隆项目B并运行脚本。
job 1:
variables:
PROJECT_PATH: "$CI_PROJECT_PATH"
RELEASE_BRANCH: "$CI_COMMIT_BRANCH"
trigger:
project: project-a
strategy: depend
job 2:
rules:
- if: '$CI_PIPELINE_SOURCE == "pipeline" && $PROJECT_PATH && $RELEASE_BRANCH'
script:
- git clone -b "${RELEASE_BRANCH}" --depth 50 https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/${PROJECT_PATH}.git $(basename ${PROJECT_PATH})
- cd $(basename ${PROJECT_PATH})
- chmod +x ../.run.sh
- source ../.run.sh