Tag: 持续集成

Jenkins不能从项目文件夹运行xcodebuild

我正在尝试为iOS应用程序设置CI环境。 到目前为止,我已经获得了xcodebuild从命令行正确构buildtesting版本,但是当Jenkins试图执行它时,我在控制台中读取了以下内容: Started by user anonymous Building in workspace /Users/Shared/Jenkins/Home/jobs/Unit Tests/workspace Working directory is /Users/iosappdev/Documents/Xcode Projects/rules. [rules] $ /usr/bin/xcodebuild -version FATAL: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied java.io.IOException: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at hudson.Proc$LocalProc.<init>(Proc.java:244) at hudson.Proc$LocalProc.<init>(Proc.java:216) at hudson.Launcher$LocalLauncher.launch(Launcher.java:707) at hudson.Launcher$ProcStarter.start(Launcher.java:338) at […]

如何将Xcode Bot整合编号添加到生成脚本中

我正在用一个Settings.bundle文件创build一个iPad应用程序。 我正在编写构build脚本来显示应用程序版本号和xcode机器人集成号码(不是捆绑版本号)。 我search了networking,找不到任何解决scheme。 这是我得到的: — Add the app version number cd $PROJECT_DIR cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app" RELEASE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Info.plist) /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $RELEASE_VERSION" Settings.bundle/Root.plist — Add the build version number BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" Info.plist) /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $BUILD_NUMBER" Settings.bundle/Root.plist 在构build版本号中,我想用xcode bot集成号replaceCFBundleVersion。

苹果CI / Xcode服务和jenkins

有没有一种方法/插件来将新的Xcode服务和/或新的Apple CI与Jenkins集成? 为什么? Jenkins服务器+通过ssh连接的OSX构build从站的一个主要问题是unit testing不起作用 ,因为iOS模拟器需要一个graphics化的环境,在这个configuration中不存在。 我希望有可能将Xcode服务(支持unit testing)与Jenkins集成在一起。 这可能是因为使用Apple CI足以满足我的需求,但是这个问题的目标是将Xcode服务与Jenkins集成在一起 。 我所知道的 我有现有的Xcode Jenkins插件的经验,但似乎不支持全新的Xcode服务或新的Apple CI。 我特别热衷于通过CI进行unit testing(在旧式的ssh会话中不能正常工作)。 我想知道的 我想知道下面的问题目前不与jenkins和ssh连接生成奴隶: unit testing无头系统 验收testing与弗兰克或类似的 自动configurationconfiguration文件更新(Apple CI这样做) 关于目前Jenkins和ssh连接的构build奴隶工作正常的信息仍然应该与Xcode服务集成一起工作: 构build不同的构buildconfiguration(Release,Debug,TestFlight)/scheme 自动build立数字增量 (使用Jenkins我可以将我的项目中的内部版本号设置为${BUILD_NUMBER} ,Jenkins根据内部版本号设置这个环境variables。当Apple CI进行构build时,它可能会设置内部版本号。) 处理/同步Jenkins和Apple CI之间的版本号 从不同的Jenkins Jobs访问Apple CI的构build产品 例如一个工作上传到TestFlight 构build的备份 自动build立在git推到特定的分支 电子邮件通知 一些额外的问题/提示 我不确定Apple CI == Xcode service或者Apple CI是否使用 Xcode服务。 在后一种情况下,Xcode服务就像是一个智能的构build奴隶,Jenkins也许可以使用它来构build和testing,但是自己pipe理构build数量和产品。 我意识到,苹果CI是一个独立的CI,并且将几个CI彼此集成在一起并不是最容易或最有用的方式。 我只是担心苹果公司对我的需求不够灵活(见上文),jenkins的老办法也有一些问题(见上文)。

XCode 7.0.1,机器人和服务器5.0.4:testing目标“xx”遇到错误 – 超时等待120秒模拟器启动

预期结果:在创build一个机器人时,检查“testing”checkbox,Xcode服务器完美地执行WWDC中的MTtesting。 结果: Xcode baruff了一堆模拟器超时错误,并且集成失败。 Test target "xxx" encountered an error (Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /Library/Developer/XcodeServer/Integrations/Integration-0e5a387ef456a57b7a2d5a90d004256d/xxxx.log) 环境: XCode 7.0.1 服务器5.0.4 OSX 10.11 在两个不同的机器上复制两个不同的项目。 另外,在OSX 10.10和Xcode 6上也经历过这个 真正的问题:我是一名具有多年iOS经验的程序员。 很难相信,虽然也许不应该是这样,WWDC看起来如此简单的东西在Xcode的两个不同的操作系统和版本上将会如此困难。 任何帮助,将不胜感激! 笔记: 我在同一台机器上运行Xcode和Xcode Server。 我不需要SSH。 […]

PackageApplication今天停止与OS X 10.10(优胜美地)合作

更新:正确的答案可能是这一个: build设IPA Xcode 6.1错误 几年后,使用Jenkins从存储库构buildiOS项目。 突然间,今天发生了一个新的错误,停止构build。 我想我在这个教程的基础上根据这个设置的大部分: Beginning Automated Testing With Xcode Part 2/2 这一步导致错误: # 4 echo "*** Post build step 4" /usr/bin/xcrun -sdk iphoneos PackageApplication \ -o "${IPA_DIR}/${PROJECT}.ipa" \ -verbose "${APP}" \ -sign "${SIGNING_IDENTITY}" \ –embed "${PROVISIONING_PROFILE}" 查看发生错误的日​​志有点棘手,但是这里是: ### Codesigning '/Users/Shared/Jenkins/Home/jobs/myapp/workspace/myapp_adhoc_7.mobileprovision' with 'iPhone Distribution: mycompany Inc.' + /usr/bin/codesign –force –preserve-metadata=identifier,entitlements,resource-rules –sign iPhone Distribution: […]

从苹果开发网站获取configuration文件的API

我想知道是否有可能从Apple Developer Portal使用API​​获取最新的configuration文件? 我已经为iOS项目设置了CI,但每次更改时都必须手动更新configuration文件,所以我很乐意自动执行此过程。 谢谢

开发者与企业分布之间的CodeSign冲突

我的公司使用一个构build机器(Mac Mini)作为CI节点来构build我们的iOS应用程序。 我们目前在mini上构build一个Ad-Hoc和一个App Storeconfiguration。 我们最近注册了企业程序,并且也想开始构build企业configuration。 然而,我们的构build过程现在失败了,因为我们现在有两个证书,名为“iPhone Distribution:Widget Corporation”。 一个是AdHoc / AppStore的分发证书,一个是企业版(苹果称之为内部)。 我已经尝试修改迷你钥匙串,使得一个证书在login钥匙串中,一个在新的钥匙串中被称为“企业”,但是这只是将错误从开始构build: CodeSign error: Certificate identity 'iPhone Distribution: Widget Corporation' appears more than once in the keychain. 到构build结束: iPhone Distribution: Widget Corporation: ambiguous (matches "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/login.keychain and "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/enterprise.keychain) 我的问题是,是否有办法正确地沙箱两个证书,所以我可以在同一台机器上构build应用程序的Ad-Hoc,App Store和内部版本。 我尚未尝试的唯一可能的解决scheme是将证书与源代码捆绑在一起,并使用security来根据需要添加和删除证书。 显然这个解决scheme不是很漂亮,并且存在安全风险。 有任何想法吗?

为iOS应用程序保留/模拟webservices

我正在开发一个iOS应用程序,其主要目的是与一组远程Web服务进行通信。 对于集成testing,我希望能够运行我的应用程序对付某些具有可预测结果的假Web服务。 到目前为止,我已经看到两个build议: 创build一个为客户端提供静态结果的web服务器(例如这里 )。 实现不同的Web服务通信代码,基于编译时标志将调用Web服务或代码,将加载本地文件( 例如 另一个 )的响应。 我很好奇社区对这些方法的看法,以及是否有任何工具支持这个工作stream程。 更新 :然后让我提供一个具体的例子。 我有一个login表单,需要用户名和密码。 我想检查两个条件: wronguser@blahblah.com获取login被拒绝和 rightuser@blahblah.comlogin成功。 所以我需要一些代码来检查用户名参数,并给我一个适当的回应。 希望这就是我所需要的“假Web服务”的逻辑。 我如何干净地pipe理这个?

代码签名资源规则path在Jenkins CODE_SIGN_RESOURCE_RULES_PATH上失败

我很less关心人们如何对待以下问题。 基本上这听起来像“与ResourceRules.plist: cannot read resources生成失败jenkinsResourceRules.plist: cannot read resources ” 我的情况是: 1)jenkins 2)在本地我工作在Xcode 7testing版(在一个单独的分支) 3)我的队友在6.4.1工作,对他们来说一切正常 4)jenkins奴隶安装Xcode 6.4.1 你们中的一些人会说:“这个问题被问了数百万次”,就像这里 , 在 这里 , 在这里 。 但是 文档说明如下: 资源规则 OS X Mavericks v10.9之前的系统logging了一个签名function(–resource-rules)来控制捆绑包中的哪些文件应该由代码签名进行封装。 这个function已经被小牛淘汰了。 代码签名在小牛和后来总是密封所有文件的捆绑; 没有必要再明确指出这一点。 这也意味着Xcode中的代码签名资源规则path构build设置应该不再使用,并应保留为空。 所以我的问题是为什么每个人都快速绕过,破解,解决这个问题,当文件清楚地说,应该是空白的,它已经过时了? 这背后的真正问题是什么? 为什么构build失败了几年不需要的东西?

jenkins – Xcode构build工程codesign失败

下面是我的构build脚本(不使用xcodebuild插件)。 构build步骤的作品 我已经创build一个单独的钥匙串与所需的证书和私钥,它们在钥匙串访问中可见 钥匙串命令不会在脚本中失败 安全列表 – 钥匙串将这些显示为有效的钥匙串 这就像解锁命令并不真正成功。 当我尝试通过命令行运行codesign codesign -f -s "iPhone Developer: mycert" -v sample.app/ –keychain /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain 我明白了 CSSM_SignData returned: 000186AD sample.app/: unknown error -2070=fffffffffffff7ea 虽然我不确定我是否正确地从命令行模拟,因为您可以充其量 sudo -u jenkins bash xcodebuild ONLY_ACTIVE_ARCH="NO" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" -scheme "MySchemeName" CONFIGURATION_BUILD_DIR="`pwd`" security list-keychains -s /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain + security default-keychain -d user -s /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain + security unlock-keychain -p jenkins […]