我正在使用Jenkins进行持续集成构建。我有很多工作,其中许多都具有相同的配置代码。我正在将所有这些代码提取到一个常见的脚本文件中,并希望在构建前和构建后运行它。
我一直无法弄清楚如何在脚本内设置一些环境变量,以便Xcode构建命令和Jenkins构建都可以看到它们。
有人知道是否可能吗?
我正在使用Jenkins进行持续集成构建。我有很多工作,其中许多都具有相同的配置代码。我正在将所有这些代码提取到一个常见的脚本文件中,并希望在构建前和构建后运行它。
我一直无法弄清楚如何在脚本内设置一些环境变量,以便Xcode构建命令和Jenkins构建都可以看到它们。
有人知道是否可能吗?
很遗憾,你要求的事情是不可能做到的。一个进程无法更改另一个进程的环境变量。预先和后续以及实际构建步骤在不同的进程中运行。
但是,你可以创建一个脚本来设置共同的环境变量,并在所有构建之间共享该脚本。
这将首先调用你的shell以执行脚本中的命令,然后调用xcodebuild:
# Note the dot in the beginning of the next line. It is not a typo.
. set_environment.sh
xcodebuild myawesomeapp.xcodeproj
export VARIABLE1=value1
export VARIABLE2=value2
/Users/YOU/.MacOSX/environment.plist
并填充所需的环境变量,那么所有进程(由用户在其主目录中具有environment.plist文件的情况下启动)都将获取这些环境变量。在新启动的进程获取变量之前,您可能需要重新启动计算机(或仅注销并重新登录)。问:如何为特定用户启动的所有进程设置环境?
答:实际上,为特定用户启动的进程设置环境变量是一个相当简单的过程。
登录窗口每次用户登录时都会搜索一个特殊的环境文件。该环境文件是: ~/.MacOSX/environment.plist(请注意大小写敏感)。其中'~'表示我们感兴趣的用户的主目录。您需要使用终端自己创建.MacOSX目录(通过键入mkdir .MacOSX)。您还需要自己创建环境文件。实际上,环境文件是以XML/plist格式存在的(确保在文件名末尾添加.plist扩展名,否则将无法正常工作)。