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

为何Jenkins任务执行后Pre-send Script会被清空?

问题原因及解决方法

核心原因

你用脚本修改Pre-send Script后,只修改了Jenkins内存中的对象,没有将配置持久化到磁盘。当任务运行时,Jenkins会重新从磁盘加载任务配置,或是任务运行过程中自动保存配置时覆盖了内存中临时修改的内容,最终导致Pre-send Script被清空。

修正后的脚本

在遍历修改每个任务的publisher后,需要调用job.save()方法将任务配置保存到磁盘,确保修改永久生效:

for(job in Hudson.instance.items) {
    def list = job.getPublishersList()
    for (publisher in list) {
        if (publisher instanceof hudson.plugins.emailext.ExtendedEmailPublisher) {
            def preSendScript = "your script here"
            publisher.setPresendScript(preSendScript)
        }
    }
    // 保存任务配置到磁盘,持久化修改
    job.save()
}

额外注意事项

  • 若你的Jenkins版本较新,建议用Jenkins.instance替代Hudson.instance,两者功能一致,但Jenkins是后续版本的标准类名。
  • 修改脚本后重新在Jenkins脚本控制台执行,执行后手动查看任务配置确认Pre-send Script已保存,再运行任务验证是否生效。

内容的提问来源于stack exchange,提问作者聂超群

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:55:23