如何正确使用EnvInject Jenkins插件?

如何正确使用EnvInject Jenkins插件?,jenkins,Jenkins,我想创建的工作流程 “Shell Executors”将变量写入build.properties文件 EnvInject插件读取build.properties将它们作为环境变量注入,因此可以在作业中的任何地方使用它们。 我得到了这样的例外: [EnvInject] - Loading node environment variables. Building remotely on master-worker (lucid) in workspace /data/jenkins/workspa

我想创建的工作流程

  • “Shell Executors”将变量写入
    build.properties
    文件
  • EnvInject插件读取
    build.properties
    将它们作为环境变量注入,因此可以在作业中的任何地方使用它们。
  • 我得到了这样的例外:

    [EnvInject] - Loading node environment variables.
    Building remotely on master-worker (lucid) in workspace /data/jenkins/workspace/QA-350_MultiJob
    [QA-350_MultiJob] $ /bin/sh -xe /tmp/hudson757569632298940894.sh
    + curl --user **** -X POST --header Content-Type: application/json --header Accept: */* -d {
      "description": "string",
      "mode": "DEFAULT",
      "name": "string",
      "start_time": "2015-11-05T13:26:40.626Z",
      "tags": [
        "string"
      ]
    } https://****
    + jq .id
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    
      0     0    0     0    0   144      0    286 --:--:-- --:--:-- --:--:--   286
      0    33    0    33    0   144     49    215 --:--:-- --:--:-- --:--:--     0
    + ID = "563c8d3ae4b0bf061cd3d999"
    /tmp/hudson757569632298940894.sh: 1: ID: not found
    Build step 'Execute shell' marked build as failure
    Finished: FAILURE
    

    只要在“属性文件路径”中指向的文件包含变量分配(例如ID=123),则无需在“属性内容”中添加任何内容

    • 验证shell脚本创建的工作区中的文件是否包含变量分配
    • 清除“属性内容”框
    • 您可以从“属性文件路径”中删除$WORKSPACE,默认情况下,它相对于作业的工作空间

    您应该将文件中的变量加载到作业环境中。

    遇到了这个问题,并且遇到了非常类似的问题

    同一条错误消息通知我,我试图创建的变量名未找到(注意,这个问题的原因是我们试图创建一个名为ID的变量,错误告诉我们“未找到ID”)

    如果删除'ID=${curl'周围的空格,应该可以解决这个问题

    在shell脚本中创建变量不需要使用空格。
    示例:MY_VARIABLE=“MY value”

    虽然@freebourn有很好的建议,但实际的错误表明
    ID=$(…)
    失败了,因为在shell中,赋值中不应该有空格:
    ID=$(…)
    下次,请给我们失败的代码(不是它的图像,某些关键细节会被屏蔽)。