【问题标题】:Changing code of Xcode through Jenkins shell script通过 Jenkins shell 脚本更改 Xcode 的代码
【发布时间】:2013-04-04 06:20:30
【问题描述】:

我正在开发一个 iPhone 应用程序,它有一个加载 url 的 UIWebview。当我对代码进行更改时,我将其提交到 Github,然后每晚 Jenkins 都会进行构建并将其部署到服务器上。

我的问题是,我想通过 Jenkins shell 脚本更改 UIWebview 的 url。所以它应该使用开发 url 和生产 url 进行构建。我想我必须创建两个不同的工作,但是我如何告诉 Jenkins 工作它应该为哪个 url 构建。

感谢您的帮助。

谢谢

【问题讨论】:

    标签: iphone ios xcode build jenkins


    【解决方案1】:

    一种想法是在编译步骤-DmyURL='@"$(MYURL)"' 中使用命令行定义,然后使用参数化构建,它将 URL 作为构建时参数,然后从那里设置该环境变量(这就是参数化构建是为了)。

    然后,在您的代码中,引用定义中的 URL。

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

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

    另一种方法是在编译步骤中定义一个简单的布尔值,然后您可以将两个 URL 放入代码中,但第一个解决方案将允许在编译时动态确定 URL .

    要使用布尔风格的机制,只需设置-DUSE_PROD_URL=$(USE_PROD),然后在代码中:

    #if USE_PROD_URL
        URL=@"http://prod.url.com"
    #else
        URL=@"http://dev.uel.com"
    #endif
    

    【讨论】:

    • 在 bool 样式的示例中,如果我想将 TRUE 设置为 USE_PROD_URL,我必须使用 -DUSE_PROD_URL=$(YES)?谢谢!
    • @RenatoLochetti 如果您没有在环境中使用变量来确定您希望如何抛出开关,那是真的。如果将其设置为$(YES),则编译行不是动态的。通过将其设置为$(USE_PROD),然后在环境中设置USE_PROD 来确定脚本运行的方式。这将允许构建环境与正在创建的构建类型无关,并且您可以在 Jenkins 中通过在每个构建的基础上定义 USE_PROD 来控制它,这就是我在这里的目标。考虑一个用于上传的生产版本和用于测试的非产品版本。
    猜你喜欢
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2022-10-19
    • 2020-09-08
    • 2018-12-25
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多