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

如何在Jenkins自由风格作业中为readFileFromWorkspace脚本传参?

在Jenkins自由风格作业中给脚本传参的方法

方法1:直接调用脚本文件传参

如果你的scripts/myscript.sh已经在Jenkins工作区里,直接修改shell步骤,像平时在终端里那样调用脚本加参数就行,不用再读脚本内容:

freeStyleJob('Myjob') {
    wrappers {
        preBuildCleanup()
    }
    steps {
        shell('./scripts/myscript.sh argument1 argument2')
    }
}

要是脚本没执行权限,就在shell步骤里先加一句授权命令:

shell('chmod +x scripts/myscript.sh && ./scripts/myscript.sh argument1 argument2')

方法2:读取脚本内容同时传参

如果必须用readFileFromWorkspace读取脚本内容执行,可采用以下两种子方法:

子方法2.1:通过环境变量传参

先在job里定义环境变量,脚本里直接读取这些变量即可:

freeStyleJob('Myjob') {
    wrappers {
        preBuildCleanup()
    }
    environmentVariables {
        env('ARG1', 'argument1')
        env('ARG2', 'argument2')
    }
    steps {
        shell(readFileFromWorkspace('scripts/myscript.sh'))
    }
}

对应myscript.sh里的使用方式:

#!/bin/bash
echo "第一个参数:$ARG1"
echo "第二个参数:$ARG2"
# 业务逻辑直接调用$ARG1、$ARG2即可

子方法2.2:参数拼接在脚本执行语句后

把读取的脚本内容和参数拼接在一起,前提是脚本本身支持用$1、$2接收位置参数:

freeStyleJob('Myjob') {
    wrappers {
        preBuildCleanup()
    }
    steps {
        shell("""
            ${readFileFromWorkspace('scripts/myscript.sh')} argument1 argument2
        """)
    }
}

对应脚本示例:

#!/bin/bash
echo "参数1:$1"
echo "参数2:$2"

方法3:动态输入构建参数

如果想每次构建时手动修改参数,给job添加构建参数,然后在shell步骤里引用即可:

freeStyleJob('Myjob') {
    wrappers {
        preBuildCleanup()
    }
    parameters {
        stringParam('ARG1', 'default_arg1', '第一个参数的描述')
        stringParam('ARG2', 'default_arg2', '第二个参数的描述')
    }
    steps {
        shell("./scripts/myscript.sh \${ARG1} \${ARG2}")
    }
}

构建时会弹出参数输入框,填写完成后,脚本里用$1、$2就能拿到对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:53:01