Tag: 哈德逊jenkins

与Jenkins和Fastlane的iOS持续集成和交付(第1部分)

在这一部分中,我们将: 了解什么是持续集成和持续交付以及为何如此重要 在MacMini上设置Jenkins 创建一个构建作业,从Github存储库中签出您的项目 在构建服务器(以及本地开发计算机)上安装fastlane工具 将fastlane集成到您的项目中并创建示例车道 请注意,我使用MacMini作为专用的构建服务器。 如果您使用的是MacBook,也可以阅读本文。 但是,在生产场景中,您可能要避免在执行自动构建的本地计算机上运行Jenkins。 1.什么是持续集成和持续交付? 持续集成(CI)是一种软件工程实践,通常将孤立的更改集成到较大的代码库中并立即对其进行测试。 持续集成的目标是验证这些更改的正确性,并尽快检测出集成错误。 为此,在每次集成后运行自动化测试是很普遍的。 连续交付(CD)是构建可以随时发布到生产环境的软件的功能。 持续交付的目标是确保软件代码始终处于可部署状态,无论它包括新功能还是仅包含错误修复。 2. CI和CD为什么重要? 每个与许多开发人员一起在开发团队中工作过的人都知道,将团队成员一直在努力的不同分支整合在一起可能会带来问题。 即使没有任何合并冲突,也总是有可能您在不注意或破坏构建的情况下弄乱了某些功能。 如果您使用的是持续集成,则更改将在集成之后立即进行测试,如果有任何问题,几乎会立即通知您。 频繁执行集成测试可确保大大降低交付损坏功能的风险。 频繁执行集成测试可确保大大降低交付损坏功能的风险。 除了对新功能和变更进行测试之外,能够随时发货也很重要。 想象一下,在最新的生产版本中存在一个严重的错误,您需要尽快发布一个错误修正版本。 如果您的交付过程花了几天时间才能准备好发布,这可能已经太迟了,有些用户已经卸载了您的应用程序。 3.为什么要在iOS项目中使用CI / CD? 无论您是定期将内部版本上传到测试服务(如TestFlight,Beta还是Hockey),还是要在较短的发布周期内提交应用程序更新(应该这样做),您都很可能会浪费大量时间重复以下步骤再三,一而再再而三: 执行回归测试 递增版本/内部版本号 负责签名和配置 上载到iTunes Connect 更新AppStore截图和元数据 考虑一下如何可以做一些有生产力的事情。 好在,这是个好消息:您可以轻松地自动化此繁琐的过程。 🚀 4.在MacMini上设置Jenkins 1.重新安装Mac OS X(在本文撰写时为Sierra) 2.创建一个新的管理员用户帐户。 (詹金斯稍后会创建一个单独的用户帐户) 3.从www.jenkins.io下载最新的Mac OS安装程序并运行它。 或者,您可以使用自制软件安装Jenkins( brew install jenkins) 4.安装程序完成后,它将自动打开浏览器并转到http:// localhost:8080,这是您的jenkins的本地地址。 (如果您是Mac OS的全新安装,则需要先安装Java。只需打开终端,输入jave并选择More Info…或从此处下载最新版本的JDK)。 […]

Jenkins + iOS构建

不久前,我需要为iOS项目设置构建管道。 这是一个经典的故事,开发团队解散了,公司需要一些外部软件帮助。 长话短说,这成为我修补iOS构建自动化的借口。 编译良好且有文档证明的开源项目是一回事,编译没有文档且无人问津的iOS项目,至少让我非常兴奋。 该项目是为iPad设计的,我认为我需要一个实际的项目来开发。 事实证明,为Apple设备开发软件仅需要Apple计算机。 不需要手机或平板电脑。 一切都可以通过模拟器来完成。 下一个困难的部分是弄清构建配置和库依赖关系。 这是我第一次听到cocoapods,事实证明它很整洁。 就像NPM用于节点,pip用于python,Cocoapods用于快速/目标C项目。 我不能在这里分享代码,但是可以分享我学到的课程。 资质认证 对于新开发者来说,这可能是最令人困惑的事情,但是实际上,这并不太疯狂。 所有这些都是关于知道谁编写了代码以及谁在分发应用程序。 证书 -每个开发人员都应在developer.apple.com上获得一个帐户,并生成自己的开发证书。 这用于签名代码。 您稍后将使用您的用户名和密码来获取证书。 证书的私钥仅在证书创建期间可用。 那些.p12私钥需要导入Mac的钥匙串中才能对代码进行签名。 标识符 -只是某种Java类,例如命名约定ID即可识别应用程序。 设备 -允许将设备注册到公司帐户,并且配置文件可以指定允许安装该应用程序的设备。 供应配置文件 -证书+应用程序ID +设备的组合。 它用于对应用程序进行签名。 编译中 安装Xcode和CLI工具。 安装分发证书和该证书的私钥。 Fastlane是人们多年来构建的实用程序的组合,可帮助实现iOS项目构建的自动化。 Jenkins Side自动化 对于Jenkins服务器端,在Jenkins管理内创建一个slave node 。 您可以: 在Mac上创建SSH帐户,让skin进入ssh。 要么 使用webstart方法,从Mac上从Jenkins的master下载slave.jar并手动启动。 可以为slave.jar创建自动启动。 在工作中,使用jenkin的插件将文件从jenkin的文件系统复制到Mac从节点。 为了执行构建, #!/ bin / bash -l export LANG =“ zh_CN.UTF-8” #秘密文件本地存储在构建服务器上 […]

如何使用Jenkins和VSTS为iOS项目设置CI和CD?

在我们开始之前,我想告诉您对CI / CD的轻微监督(持续集成/持续交付,持续部署)。 CI的成功取决于开发团队对文化的改变。 在这样的过程中,不需要人来决定何时以及什么生产。 CI / CD系统的最后一步将自动部署成功退出交付管道的所有构建组件/程序包。 因此,这里我将向您展示如何使用TFS插件通过VSTS配置Jenkins。 使用TFS插件使将Jenkins与VSTS一起使用来创建完整的CI / CD管道非常容易。 我不会涵盖有关Jenkins的任何细节,因为我假设如果您正在阅读此书,那么您已经知道如何使用Jenkins。 如果您不熟悉CI / CD,只需使用VSTS,无需安装,即可构建Xcode项目。 如果您知道如何使用Jenkins,那么我将向您展示如何将其连接到VSTS。 您将需要以下内容 完全安装和配置的Jenkins服务器 Team Foundation Server插件 免费的Visual Studio Team Services(VSTS)帐户 个人访问令牌 通过上面的内容,我们准备配置一个项目以从存储库中提取,使用Jenkins触发并构建VSTS。 创建团队项目 创建VSTS Team项目之后,我们可以切换到Jenkins。 在Jenkins中创建一个新项目以构建代码 对于源代码管理,选择Git或您使用的任何版本控制。 在库URL中复制库URL 单击添加,然后单击凭据旁边的詹金斯下拉列表 6.输入以下内容 字段名称-值 域-全局凭据(不受限制) 种类—用户名和密码 范围-全局(詹金斯,节点,项目,所有子项目等) 用户名-[留空] 密码-[VSTS个人访问令牌] ID — VSTS 说明— VSTS 点击添加 选择“ Archive theartifacts”生成后操作来归档生成的输出 保存项目 一旦我们触发了构建,我们将返回项目,以便触发发布 使用Jenkins,我们可以配置VSTS以在每次提交时启动此构建。 从“ […]

使用Jenkins在iOS中进行持续集成,立即进行Jenkins中的第一项工作。

要安装和设置Jenkins,您需要先阅读本教程。 您的第一份工作有以下职责。 iPA的所有Debug版本都将自动上传到Hockey App,或者您可以通过轻松修改脚本将其上传到任意位置。 所有版本的iPA版本都将自动上载到ItunesConnect。 现在,不浪费时间,让我们开始从事詹金斯的第一份工作。 从Jenkins主菜单中选择“凭据”。 点击(全局) 在单击“全局”时,您将找到以下屏幕截图,点击“添加一些凭证?”。 填写以下详细信息,在用户名和密码下面是您的GIT凭据。 按确定。 现在,凭据将在下面被喜欢。 复制“ id”即“ Git_Credentials” 进入菜单选项,选择“管理詹金斯”。 选择“管理插件”。 下载Xcode,Build TimeStamp,活动选择,掩码密码和管道插件。 选中“安装插件后重新启动jenkins”。 选择ManageJenkins,配置系统。 转到Xcode Builder设置。 填写详细信息,按照以下步骤查找您的团队ID。 确保钥匙串路径是安装证书的路径。 按“保存”。 现在该创建您的第一个Job了。 选择创建新作业。 选择管道,然后将作业命名为“ iOS_Builds”,然后按确定。 在当前登录用户(即/Users/Sudhir.kumar/.jenkins/jobs/iOS_Builds)中搜索.jenkins目录。 在此路径中,您将找到config.xml文件。 将此文件的内容替换为FILE的内容 现在转到Manage Jenkins并选择“从磁盘重新加载配置”。 点击iOS_Builds作业,然后单击带有参数的构建,您将看到这个漂亮的视图。 从作业菜单中单击配置,然后根据需要进行配置。 一件事是在管道脚本中,需要设置四个参数。 确保方案名称或工作空间名称中没有空格。 Your_WorkSpace_Name:这是从Git中签出的工作空间的名称 Your_Path_To_Info.Plist:$ {workspace}是作业文件夹之前的路径。 您必须提供作业文件夹之后的路径,直到info.plist Your_Product_Name:您要用来创建存档或Ipa的名称 Your_GIT_ID_FROM_CREDENTIALS:这是Jenkins Credentials菜单中的ID“ Git_Credentials”。 下载ExportOptions_Release.plist和ExportOptions_debug.plist并将它们保存在桌面上。 根据您的信息更新plist。 确保在xcode中,您的项目代码签名应为“手动”方式,应取消选中“自动管理签名”。 如需更多帮助,请遵循此。 填写完信息后,请单击build,您将看到此漂亮的GUI执行您的工作。 如果您在系统上设置jenkins时遇到任何问题,可以免费向我咨询,只需给我发送电子邮件至Sudhirkumar0187@gmail.com。 您也可以在评论中问我。 如果您喜欢这篇文章,请留下一些鼓掌。 […]

Jenkins for iOS版本

Jenkins是一个用Java编写的开源自动化服务器,旨在使开发人员发现自己重复的某些任务自动化。 Jenkins支持多个插件,使您可以使用许多第三方服务。 最好的事情是,如果找不到或使用插件,则只能受自己的脚本编写能力的限制,因为它能够运行任意的Shell脚本。 安装: 以下是在系统上安装Jenkins的先决条件,您的系统应具有: Homebrew是一个免费的开源软件包管理系统,可简化在Apple macOS操作系统上安装软件的过程。 爪哇 要安装brew运行以下命令: ruby -e“ $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 有时它会拒绝访问,然后执行以下两个命令,然后执行上述命令: sudo chown -R“ $ USER”:admin / usr / local sudo chown -R“ $ USER”:admin /库/缓存/自制 要安装Jenkins: 酿造安装詹金斯 如果您的系统上未安装Java,请运行以下命令来安装Java: brew cask安装java 要安装Jenkins: 酿造安装詹金斯 ln -sfv /usr/local/opt/jenkins/*.plist〜/ Library / LaunchAgents launchctl加载〜/ Library / LaunchAgents / homebrew.mxcl.jenkins.plist 要启动Jenkins,请运行以下命令: 詹金斯 它将启动Jenkins并生成密码。 设定: 转到http:// localhost:8080,输入生成的密码。 […]

问题5 –须藤忍者–中

卡兰 1.实用距离表达式 在做验证的时候常常需要距离表达式的帮忙,但有时候case都做不完整,这个网站提供了很多范例! 2.nodejs 6.0版本 Nodejs 6.0正式发布了,官方宣布已经可以支持大部分的es6语法,但感觉…应该会有很多npm套件都会有冲突吧!先等一阵子稳定之后再升级吧!话说最近的节点怎么一直不断升级。 3.js文件系统 虽然js文件系统已经不是新玩意,但毕竟有任何跟随跟其他套件的帮助,一直以来也没有深入这一块。偶然之间想起,查了一下google,这篇文章写得还挺清楚的。呼,是该了解更进阶的的js了! 亨利 1. Docker上的Jenkins 2.0 很多团队都不敢贸然在开发流程中引入Docker,一个很大的原因是很多服务都还没有针对Docker做过最佳化。2015年Docker大流行时,网路上也出现了不少质疑Docker将服务虚拟化化之后随之而来的性能指标。但持该论点的文章,大多都是采用短时间,高并发的基准测试(套一句行话来说就是“烧机”式的测试)去测试Docker的性能,而不是真的让MySQL在生产环境上运行然后慢慢调整性能。但说实在地,声称测试的架构,谁又有这么大颗的心脏敢放它在生产环境上运行呢? 扯太远了。此周主要是发现Jenkins 2.0在Docker上执行的效能比1.x来说有非常显著的改善。由于目前Sudo是使用CircleCI做CI,还没有做CD,但在正式引入CD之前我预想到了一个问题。 CircleCI的IP不固定,要怎么样在兼顾AWS Security Group政策的替代下执行CD? 我目前想到的最合理的替代方案是直接在AWS内建立自己的CI / CD环境(至于如何架设还需要再研究,因为最终目的是一台EC2都不要管,全部改用ECS),而Jenkins正是但自行测试一次Jenkins 1.x之后,不是安装插件时让系统的load飙高到连壳都卡住的地步,不然就是正式建置专案时记忆体被塞爆(在已经挂上swap的附属下)。曾经试着开spot instance去执行,但问题没有解决。 连官方都在下载的选项中正式提供Docker的安装方式,Jenkins 2.0这次的表现让我又对它抱持一线希望。 2. React Native串接Cocoapods并通过fastlane部署时的陷阱 在茫茫Google中寻觅觅是否有人写好Flurry或Google Analytics的包装器一阵子之后,我放弃了。因为不是写完之后就摆在那里根本没去更新iOS库,不然就是一抓下来挂上上喷奇怪的错误(Google Analytics的wrapper在虚拟器中测试会喷出奇怪的错误)。绝望之下,我只好卷起袖子自己取代React Native与iOS库了。 官方文件写得很详细,而且我从Exporting Swift(我很惭愧地表示我不会Objective-C)开始做,步骤少得有点过分。颤抖地点击编译并执行,还真的可以跑(数据有确实地传回Google Analytics,真心不骗)。 我的代码有效,但我不知道为什么。 扯远了。这一次真正要分享的是如果React Native有挂Cocoapods,Fastfile要一并更新,否则会发生找不到库的错误。例如以下步骤行: 健身房(方案:“ app”,项目:“ ios / app.xcodeproj”) 一开始开发React Native与设定fastlane时,它不会预设你未来会挂Cocoapods上去,因为不是每个人都会用到Cocoapods,或可能使用了Cocoapods以外的套件管理工具。但如果第一次执行完pod安装,Cocoapods实际上会提醒你之后记得都要使用* .xcworkspace考虑到开发时的专案档: [!]从现在开始使用`app.xcworkspace`。 我记得这件事,之后也都是使用* .xcworkspace开发,但每次通过fastlane部署的时候都会在健身房那一步出错,跟我继续说ld找不到库连接。 明明开发时在虚拟机上面跑都没有问题,为什么部署的时候就会出错? 这两个唯一的差异不就是一个透过Xcode执行,一个透过fastlane执行吗? 于是我打开Fastfile,将那行该死的Gym改成以下形式: 健身房(方案:“ app”,工作区:“ […]

持续集成e Delivery com Jenkins + Fastlane

普遍存在的iOS,CI,Porémquaissãoos reaisbenefícios等极端问题,以及所有不动产的使用情况。 取消时间限制后,您将收到一份详细的表述,并注明时间。 议程 o持续集成e持续交付无关联性的重要内容。 安装快速通道 证明工作单位 建造辅助睾丸的工作 在AppStore上上传作业 Oéé持续集成(CI) Quantas否决了2个合并的违约情况,trabalhando em分支,separados的问题,a que que bra decódigo的问题,acho queééumum否环境的desenvolvimento com pois es desémésrés, ques nossocódigoestásemperestávele atualizado a mesmo tempo? 继续阅读完整内容的方法。 集成商(Ela Consemble em)提交了一份完整的声明,并在一份完整的声明中对您的担保书进行了说明。 示例,解散的A trabalha em uma特征,separada,解构的量化的B acaba de fazer o合并de sua特征Recémentrega。 Nosso sistema de持续集成,A证明书,A证明书和Mantida证明书的完整集成(Testes de UI por exemplo)。 Assim podemos identities erros deintegraçãoe pequenos bugs mais […]

在Jenkins中设置分布式体系结构(运行iOS / Mac OS构建)

在本文中,我们将设置Jenkins以运行iOS / Mac OS构建。 目标 众所周知,我们需要Apple硬件才能运行Mac / iOS版本。 如果您在Linux机器上托管Jenkins CI服务器,则该服务器无法运行Mac / iOS 建立。 因此,我们需要创建一个分布式系统(主/从架构),以便从服务器能够运行Mac / iOS 建立。 Master →Linux Server(托管Jenkins的远程计算机) 从站 →Mac(在其中构建项目) 设定 下载Jenkins并在远程计算机上托管。 在浏览器中输入詹金斯地址,您将看到以下屏幕: 登录后,您可以看到仪表板。 在Jenkins中配置从节点 转到Jenkins→管理Jenkins→管理节点 单击新节点→添加节点名称→检查永久代理→按确定 将远程根目录添加到/ Jenkins (稍后我们将在从属节点中创建此目录)。 选择启动方法: 通过Java Web Start启动代理 →单击保存。 如果未显示该选项,则需要在Jenkins中添加TCP端口。 为JNLP代理管理Jenkins>配置全局安全性> TCP端口。 添加一个静态端口。 (启用防火墙中的端口 ) 您可以看到处于断开状态的新创建的代理 单击节点以查看启动方法 在詹金斯中连接主从 首先,在从站中创建一个工作目录/ Jenkins 。 这将是Jenkins将放置所有项目文件的目录,并且必须与Jenkins中的Node中指定的远程根目录匹配(请参见图: 在Jenkins中设置新节点 )。 打开您的mac终端并点击命令 cd / […]

Fast将Fastlane与多个目标集成到一个iOS项目中🚀

现在,让我向您展示由3个不同目标组成的项目结构,以便我们可以通过快速通道进行相应的构建。 因此,Fastfile是一个定义所有“通道”的红宝石文件。 车道是您希望Fastlane运行的一组指令。 因此,我希望大家使用Atom IDE作为文本编辑器来完成与快速通道相关的操作,该操作快速且具有更智能的上下文感知自动完成功能,代码导航功能(如大纲视图),定义并查找所有引用,我们还可以悬停显示信息,诊断(错误和警告)和文档格式。 因此,现在在fastfile中创建通道之前,我们将为项目中定义的3个目标创建3个环境变量文件,这将帮助我们通过fastfile部署特定的目标app / ipa。 您可以使用Atom编辑器创建此空文件,并确保文件名应类似于此语法-“ .env。” 在环境变量中,我们将定义以下内容: SCHEME — —应用程序使用的确切方案或目标名称 BUNDLE IDENTIFIER — —特定目标或方案的标识符 PROVISION PROFLE NAME —提供配置文件的名称保存在本地Mac中,因此,在存档应用程序时,fastlane会尝试通过该名称查找配置文件。 名称将与Apple开发者帐户条款部分中显示的名称相同。 注意:-要查找存储在系统中的配置文件,路径应为:〜/ Library / MobileDevice / Provisioning Profiles。 默认情况下,〜/ Library文件夹在finder中是隐藏的,因此您必须取消隐藏它或使用Finder菜单中的Go-> Go to folder …输入路径,或使用Terminal并执行命令。 APP NAME — —项目中使用的目标/方案的名称。 因此,现在我们将在.env.App1文件中添加以下内容 SCHEME =“ App1” BUNDLE_IDENTIFIER =“ com.SandeepM.app1” PROVISION_NAME_DEV =“ Develop_App1” PROVISION_NAME_ADHOC =“ Adhoc_App1” PROVISION_NAME_APPSTORE =“ […]

使用JENKINS在iOS中进行持续集成

JENKINS是一个开源自动化服务器,可用于自动化各种任务,例如构建,测试和部署软件。 它允许持续集成。 持续集成是一种开发实践,要求开发人员定期将代码集成到共享存储库中。 Jenkins将安装在您的服务器或本地系统上。 有关安装和配置的详细信息如下: 安装和配置: 要进行Jenkins的基本设置,自动化iOS构建,触发构建失败和稳定性电子邮件,以获取可下载的ipa,请执行以下步骤: 步骤1:下载JENKINS 对于MAC。 步骤2:打开Jenkins。 输入详细信息(用户名和密码)。 步骤3:单击管理Jenkins→管理插件→搜索插件并安装→重新启动jenkins→交叉检查已安装的插件。 注意:为svn和Xcode集成安装Subversion插件,以提供与xcode相关的设置。 第4步:返回Jenkins主页。单击New Item,输入Job name,选择freestyle project。单击OK。现在创建了作业。 第5步:点击您的工作,点击配置。 步骤6:我们现在将进行项目级别的配置,其中包括以下步骤: 通常,给项目名称。 在“源代码管理”部分中,选择Git或Subversion(根据您的需要,我使用了svn)→给出存储库url→输入svn的凭据。 在“构建触发器”中,选择“轮询SCM”以给出我们希望詹金斯检查提交更改并触发构建的时间间隔(例如:给15分钟的时间,我们将使用H / 15 * * * *)。 在添加构建步骤中,选择XCODE→输入要为其创建构建的目标的名称。 在“配置”中,根据项目的需要提供调试或发布模式。 要创建.ipa,请在常规构建设置中点击设置,然后选择打包应用程序并构建.ipa? →给出.ipa文件名模式(这是您要赋予ipa的名称)。 再次单击Add Build Step→Execute shell→write命令来执行脚本。 注意:脚本文件(.sh)应该保存在我们的詹金斯($ {JENKINS_HOME} / workspace)工作区中。 在Post-build Actions中,选择Archive theartifacts以获取可下载的ipa。这些文件(内部版本)是可下载文件,可以从jenkins主页访问。 注意:为避免与供应配置文件和证书有关的错误: 将供应配置文件复制到Jenkins用户文件夹。 供应配置文件位于文件夹/ YourUserName / Library / MobileDevice / Provisioning Profiles中, 例如:在我的机器中,配置文件位于/ […]