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

如何在Jenkins中设置JEKYLL_ENV为Production并执行Jekyll构建?

解决Jenkins Windows环境下Jekyll构建时JEKYLL_ENV变量不生效的问题

我之前在Windows Jenkins环境里也碰到过一模一样的问题,折腾了好一会儿才搞清楚原因,给你几个可行的解决办法:

方法1:在同一个CMD命令块里串联执行

Windows CMD不支持Linux那种VAR=value command的前缀语法,而且如果把SET和构建命令分成两个独立的Jenkins步骤,每个步骤会启动新的CMD进程,环境变量不会跨进程传递。所以你需要把两个命令放在同一个步骤里,用&&连接,确保它们在同一个进程里执行:

SET JEKYLL_ENV=production && C:\Ruby24-x64\bin\jekyll build

这样设置的环境变量就能被后面的jekyll命令读取到了。

方法2:改用PowerShell执行命令

如果你的Jenkins支持PowerShell步骤,用PowerShell的环境变量语法会更直观,而且不需要担心进程问题:

$env:JEKYLL_ENV="production"; C:\Ruby24-x64\bin\jekyll build

PowerShell里$env:前缀用来设置环境变量,这条命令会在同一个会话里完成变量设置和构建操作。

方法3:在Jenkins构建环境中全局设置变量

如果不想每次都在命令里写变量设置,推荐直接在Jenkins的配置里添加环境变量,这样所有构建步骤都能用到:

  • 进入你的Jenkins项目配置页面
  • 找到「构建环境」(Build Environment)部分,勾选「Set environment variables」(如果没有这个选项,可能需要安装EnvInject插件,多数新版Jenkins已自带类似功能)
  • 添加变量:JEKYLL_ENV=production
  • 然后在构建步骤里直接执行:
C:\Ruby24-x64\bin\jekyll build

这种方式更干净,也避免了shell语法的兼容性问题。

为什么之前的方法失效?

  • JEKYLL_ENV=production C:\Ruby24-x64\bin\jekyll build是类Unix shell的语法,Windows CMD完全不支持这种临时环境变量的写法;
  • 把SET JEKYLL_ENV=production和构建命令分成两个Jenkins步骤时,每个步骤都是独立的CMD进程,前一个进程设置的变量不会被后一个进程继承,所以jekyll读取不到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:33:10