6

我正在使用Jenkins進行持續集成構建。我有相當多的作業具有相同的配置代碼。我正在把這一切都推到一個通用的腳本文件中,我希望在構建前後運行。在Xcode構建階段運行腳本中設置全局環境變量

我一直無法弄清楚如何在該腳本中設置一些環境變量,以便Xcode構建命令和Jenkins構建都可以看到它們。

有誰知道這是可能的嗎?

+0

也許這個答案可以幫助 - http://stackoverflow.com/a/32743908/67824。它不會讓你定義全局環境變量,但它確實允許你改變xcodeproj的構建設置,這大概是你想要的環境變量(至少對我來說是這種情況)。 – 2016-11-09 13:20:02

回答

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構建,將腳本歸檔爲構建工件。所有其他工作將使用Copy Artifact插件從腳本作業的構件中獲取腳本的副本。
+0

我不明白這有何幫助。我(和其他許多人)正在研究這個問題的原因是,通過設置環境變量,一個構建步驟的能力會影響下一個構建步驟。在我的情況下,即使設置一個預定義的處理器宏就足夠了,但你的答案既不。或者,也許你的意思是某個構建步驟應該寫入輸出變量的腳本,並由所有其他目標運行? – 2016-01-06 10:27:06

0

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(小心區分大小寫)。 '〜'是我們感興趣的用戶的主目錄。您將要使用終端(由 鍵入mkdir .MacOSX)自行創建.MacOSX目錄。您還必須自己創建環境 文件。該環境文件實際上是XML/plist格式 (確保將.plist擴展名添加到文件名末尾或 這不起作用)。

+0

它工作?我一直無法讓xcode使用這種方法來查看我的變量... – brendanjerwin 2013-04-29 12:35:10

+0

@brendan nope,不幸的是,它對我也不起作用。 – chown 2013-04-29 18:50:05

相關問題