在Xcode构建阶段运行脚本中设置全局环境变量

时间:2012-04-06 16:37:55

标签: xcode jenkins environment-variables jenkins-plugins run-script

我正在使用Jenkins进行持续集成构建。我有很多工作有很多相同的配置代码。我正在把这一切都拉到一个我希望在构建之前和之后运行的公共脚本文件中。

我一直无法弄清楚如何在该脚本中设置一些环境变量,因此Xcode构建命令和Jenkins构建都可以看到它们。

有人知道这是否可行?

2 个答案:

答案 0 :(得分:5)

不可能完全按照你的要求去做。进程无法更改另一个进程的环境变量。前后和实际构建步骤在不同的进程中运行。

但您可以创建一个脚本来设置公共环境变量并在所有构建之间共享该脚本。

首先会调用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

您的作业将如何分享脚本取决于您的环境和用例。你可以

  • 将脚本放在Jenkins主机上的一个众所周知的位置或
  • 如果所有作业共享同一个存储库或
  • ,则将脚本放在受版本控制的源代码树中
  • 将脚本放在自己的存储库中,并创建一个Jenkins构建文件,将脚本存档为构建工件。然后,所有其他作业将使用Copy Artifact插件从脚本作业的工件中获取脚本的副本。

答案 1 :(得分:-2)

Apple's Technical Q&A QA1067看来,如果您创建文件/Users/YOU/.MacOSX/environment.plist并使用所需的环境变量填充它,则所有进程(由用户在其主目录中使用environment.plist文件启动)将拿起这些环境变量。在新启动的进程获取变量之前,您可能需要重新启动计算机(或者只是注销并重新登录) This article还声称Xcode也会将这些变量传递给构建阶段脚本。我还没有测试过,但下次我重新启动MacBook时,我会告诉你它是否有效。

来自 http://developer.apple.com/library/mac/#/legacy/mac/library/qa/qa1067/_index.html

  

<强> Q: How do I set environment for all processes launched by a specific user?

     
     

A: It is actually a fairly simple process to set environment variables for processes launched by a specific user.

     

loginwindow搜索有一个特殊的环境文件   每次用户登录时。环境文件是:   〜/ .MacOSX / environment.plist(小心区分大小写)。哪里   '〜'是我们感兴趣的用户的主目录。你会的   必须使用终端自己创建.MacOSX目录   输入mkdir .MacOSX)。您还必须创建环境   归档自己。环境文件实际上是XML / plist格式   (确保将.plist扩展名添加到文件名的末尾或   这不行。)