【问题标题】:Set Jenkins environment variable in Python在 Python 中设置 Jenkins 环境变量
【发布时间】:2014-08-15 19:01:53
【问题描述】:

我正在构建一个 Jenkins 设置来自动化我们的 iOS (Xcode) 构建。

现在的流程如下:

  1. 构建是远程触发的。传递应用的名称、捆绑 ID、配置文件 URL(以及其他数据)。
  2. Jenkins 从 git 获取最新的代码库版本。
  3. 运行 Python 脚本以根据触发器中提供的数据编辑应用程序的 Info.plist 文件。此 Python 脚本还使用 this approach 安装配置文件。
  4. Jenkins 使用Xcode Plugin 构建项目。

Xcode 插件允许您指定用于构建应用程序的配置文件 UUID。第 3 步中的 Python 文件获取此 UUID。所以现在我需要保存该 UUID,以便 Xcode 插件可以以普通文本形式访问它。

我已经使用EnvInject Plugin 创建和设置了一个环境变量,它可以在 Xcode 插件中使用和使用。但我无法在作业运行时从任何脚本(Python 或 Shell)设置此环境变量,只能在作业的配置页面中硬设置。

希望有人可以提供帮助。谢谢!

【问题讨论】:

标签: python ios xcode jenkins continuous-integration


【解决方案1】:

但我无法在作业运行时从任何脚本(Python 或 Shell)设置此环境变量,

是的,你可以。

  • 您的 Python/Shell 脚本需要以 param=value 的格式将值写入预先确定的 path/to/file.props(经过一些反复,此路径也可以是动态的)。
  • 将 EnvInject 配置为从 path/to/file.props 读取
  • 所以:

    1. Python/Shell 动态运行并写入文件。
    2. EnvInject 读取文件并加载环境变量,包括$param
    3. 您的 $param 现在可用于其他作业/脚本

【讨论】: