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

如何在GitLab CI中运行镜像内脚本并传递Git环境变量参数?

解决方案

1. 先确认脚本路径(可选但稳妥)

你的脚本在镜像的$WORKDIR目录下,GitLab CI默认会把项目代码挂载到/builds/<命名空间>/<项目名>目录,所以如果当前工作目录不是镜像的$WORKDIR,先切换过去就行。可以在脚本里加一行cd $WORKDIR,或者直接用绝对路径调用脚本(比如知道WORKDIR是/app的话,就写ruby /app/run_log.rb)。

2. 修改CI配置运行脚本并传参

GitLab CI自带一堆预定义的Git环境变量,比如提交哈希CI_COMMIT_SHA、分支名CI_COMMIT_BRANCH、项目名CI_PROJECT_NAME这些,直接拿来当参数用就行。

修改后的config.yml如下:

stages:
  - collect
image: 
  name: usd3221/log-stats:latest
  entrypoint: [""]

default:
 tags:
  - local

job:
  stage: collect
  script:
    - pwd
    # 切换到镜像的WORKDIR目录
    - cd $WORKDIR
    # 执行脚本并传递Git环境变量作为参数
    - ruby run_log.rb "$CI_COMMIT_SHA" "$CI_COMMIT_BRANCH"

3. 几个注意点

  • 变量要用双引号包起来:如果变量值带空格或特殊字符,不加引号会解析出错。
  • 要是想用自定义参数名(比如你原来写的${argone}、${arg_2}),可以先在CI里定义变量再传:
    job:
      stage: collect
      variables:
        ARGONE: "$CI_COMMIT_SHA"
        ARG_TWO: "$CI_COMMIT_BRANCH"
      script:
        - cd $WORKDIR
        - ruby run_log.rb "$ARGONE" "$ARG_TWO"
    
  • 不用特意给脚本加执行权限:因为是用ruby命令直接调用脚本文件,只要文件存在、镜像里有Ruby环境就能跑。
  • 不确定$WORKDIR具体路径的话,先在script里加echo $WORKDIR或者pwd看看当前目录,确认脚本位置。

内容的提问来源于stack exchange,提问作者Umair Shahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:20:27