2013-04-11 67 views
1

我正在研究iPhone應用程序,它有一個加載URL的UIWebview。當我在代碼中進行更改時,我在Github中提交它,然後每天晚上Jenkins都會執行構建並將其部署到服務器上。通過Jenkins外殼腳本更改Xcode的代碼

我的問題是,我想通過詹金斯shell腳本改變的UIWebView的URL。所以它應該使用開發網址和生成網址進行構建。我認爲我必須創造兩個不同的工作,但我如何告訴詹金斯工作應該爲哪個網址創建。

感謝您的幫助。

由於

回答

1

一個想法是使用命令行定義在編譯步驟-DmyURL='@"$(MYURL)"',然後使用一個paramarerized構建它接受URL作爲構建時間參數,然後從那裏設置的環境變量(它是參數化的版本是什麼)。

然後,在你的代碼,是指自定義的URL。

#ifndef myURL 
    #define myURL @"http://dev.foo.com" 
#endif 

然後,您只需使用myURL代替常量。

這樣做的另一種方法是在編譯步驟中定義一個簡單的值,它將是一個布爾值,然後可以將兩個URL都放入代碼中,但第一個解決方案允許在編譯時動態確定URL時間。

要使用布爾風格的機制,只需設置-DUSE_PROD_URL=$(USE_PROD)然後在代碼:

在布爾風格的例子,如果我想設置爲TRUE到USE_PROD_URL,我必須使用'
#if USE_PROD_URL 
    [email protected]"http://prod.url.com" 
#else 
    [email protected]"http://dev.uel.com" 
#endif 
+0

- DUSE_PROD_URL = $(YES)'?謝謝! – 2013-09-13 12:40:32

+1

@RenatoLochetti如果您在環境中沒有使用變量來確定您希望如何引發切換,那麼也是如此。如果將它設置爲'$(YES)',那麼編譯行不是動態的。通過將其設置爲'$(USE_PROD)',然後在環境中設置'USE_PROD'確定腳本運行的方式。這將允許構建環境不知道正在創建什麼樣的構建,並且可以在Jenkins中通過在每個構建基礎上定義「USE_PROD」來控制它,這正是我在這裏所要達到的目標。考慮上傳的生產版本和測試的非生產版本。 – gaige 2013-09-13 12:44:46