You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gitlab-ci.yml中引入其他项目的script.py脚本无需上传至当前项目

GitLab CI跨项目调用外部Python脚本的实现方案

首先明确:GitLab CI 的 include 关键字仅支持导入符合CI语法的YAML配置文件,无法直接引入Python脚本这类非配置文件,你可以通过以下几种方案实现需求,无需将脚本上传到当前项目:

方法1:作业运行时直接拉取脚本

在CI作业的script阶段直接通过curl或者git命令拉取目标脚本再执行即可,注意要使用脚本的原始内容链接(路径带raw而非blob)。

  • 公开项目无需鉴权,直接拉取即可:
your_job:
  image: python:3.10-slim
  script:
    # 拉取目标项目的Python脚本原始内容
    - curl -O https://gitlab.com/<目标项目命名空间>/<项目名>/-/raw/main/script.py
    # 执行脚本
    - python3 script.py
  • 私有项目可使用GitLab内置的CI_JOB_TOKEN鉴权,无需单独配置密钥:
    1. 先进入脚本所在项目的「设置」→「CI/CD」→「令牌访问」,将当前项目添加到允许访问的列表中
    2. 按照以下格式编写CI配置:
your_job:
  image: python:3.10-slim
  script:
    - curl --header "JOB-TOKEN: $CI_JOB_TOKEN" -O https://gitlab.com/<目标项目命名空间>/<项目名>/-/raw/main/script.py
    - python3 script.py

方法2:跨项目拉取CI制品

如果脚本所在项目已经配置了CI流水线,可以把script.py设置为对应作业的制品,当前项目直接通过needs:project关键字拉取制品即可:

your_job:
  image: python:3.10-slim
  needs:
    - project: <目标项目命名空间>/<项目名>
      job: <脚本所在项目中导出script.py为制品的作业名称>
      ref: main
      artifacts: true
  script:
    - python3 script.py

方法3:打包为Python依赖复用

如果该脚本是多个项目共用的通用工具,你可以把脚本所在项目打包为Python包,发布到GitLab自带的PyPI制品库,当前项目的CI作业中直接pip install安装对应包再调用功能即可,长期复用的场景下推荐使用该方案。


内容的提问来源于stack exchange,提问作者Khalil Azennoud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:21:01