云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

服务器_单页网站建设_怎么样

小七 141 0

香港服务器_虚拟_物联网智能建筑

编者按:这篇客座文章是由Nacho Fernandez撰写的,他是手机游戏开发商的构建工程师,国王。你负责管理世界上票房最高的手机游戏《詹金斯》实例。您将了解到这涉及到帮助游戏工作室在八个不同的目标平台上迭代他们的工作,每个平台都有各自的SDK,在四个不同的主管道上,云服务器租用,再加上许多额外的辅助工作。当然,制片方希望这一切顺利进行,以便在每一个发行版(每两周发行一次)保持良好的特性和bug修复速度。打击数亿玩家全世界。怎么办您是否要确保环境的配置正确,所需软件的正确版本;帮助工作室保持其管道的稳定性和可伸缩性;确保Jenkins实例的可操作性;逐月提高构建速度?出汗没关系。你需要一些帮助!对于一个在King工作的建筑工程师来说,这只是办公室里的一天。面临着一个非常广泛的问题,高质量的标准,甚至更高的风险。谢天谢地,我们并不孤单。我们可以接触到很多工具,无论是开源工具,工作室开发的工具,大数据存储技术,还是我们巴塞罗那的stellar build infrastructure团队开发的工具,都可以帮助我们一路走到出版线上。我们将所有这些工具组合在一起,通过它们的组合,我们为工作室提供快速、易于操作的工作流程,在这里和那里节省时间,确保功能从开发到大师的顺利发布。我将在2019年12月4日在DevOps World | Jenkins World里斯本向我们的工作室解释我们在King使用的所有技巧,以加快构建速度并使Jenkins操作更容易。(如果您还没有注册会议,请单击此链接并使用JWFOSS,物联网学什么,注册费可享受30%的折扣。)现在,让我们来看看一些他们。我们使用内部弹性基础设施,在需要的时候从特定的模板生成机器。这意味着,对于每一个构建,我们都会得到一个全新的环境—没有中间产物或任何类似的东西,这很好。这也意味着我们需要克隆我们的存储库,每次都要编译所有的东西,这很糟糕。但是,微博淘客,我们有办法解决这两个问题问题。我们在生成虚拟机时,充分利用linkclones/Snapshot。每天晚上,我们都会运行一个引导程序,它将启动基本映像并执行我们决定的任何操作,然后再将其转换为模板并重新创建快照。在Candy Crush的例子中,我们更新缓存,这有助于我们减少git克隆和编译的时间。我们称这个引导程序为"cacheo"。看起来差不多这个:.Cacheo1。启动弹性代理模板映像2把它和詹金斯联系起来三。执行清理4触发git引用缓存作业5触发要缓存的所有生成6关闭模板映像,删除代理并重新创建链接的克隆快照每个工作室都可以指定缓存将在哪些模板上运行,以及它将在每个模板中执行什么操作。也许你想确保你的Android许可证是正确的。或者从Artifactory下载一些包。或许可以预先加载你的Gradle依赖项。不管它是什么,cacheo都会为你做,并且每晚上。一个最常见的用法是预填充本地git缓存,当这样做时,改进非常明显,特别是在Windows上:[cols=",,,,options="header",]|===|| Linux | MacOS | Windows|NFS | 2分钟11秒| 2分钟34秒| 8分钟32秒|局部| 1分钟20秒| 1分钟35秒| 3分钟49秒|差异|*快39%|*快39%|*快55%*|===这意味着,在Windows上,平均将源代码获取速度提高55%。太多了!!我们所有的主要游戏都使用同一个引擎;我们通过子模块来引入这些代码。这意味着无论何时构建游戏,都需要编译和链接大量共享代码。而且这种共享代码比实际游戏代码大的情况并不少见!谢天谢地,引擎团队帮了我们一把,他们开发了一种打包编译后的共享代码的方法。通常,游戏代码与共享代码的特定版本共存,更新不太频繁。有时一个月一次,有时是为了抓紧时间。这就意味着我们有可能在相当长的时间内编译完全相同的共享代码,每次我们构建游戏。多亏了这些预构建的构件,我们能够跳过编译的大部分,而代价是只需下载一个简单的构件编译项目()生成空的cmakelists()对于依赖项中的依赖项:将编译的依赖项合并到metalib(依赖项)将"依赖项"写入"生成的"cmakelists"作为"metalib(dependency)的"别名"elif使用预构建的库:将"生成的"cmakelists"与"metalib"添加为"dependency()compile_project()多亏了这些预构建的库,我们可以跳过很大一部分的编译,而且它的构建速度非常快!多个分支上的迭代工作,只要它们有相同的引擎版本,就会以明显的方式加速。但是,在某些特定情况下,我们确实选择构建共享代码,比如我们为实例。只是所以你知道了,手机免费建站,这个表上的平均时间是:[cols=",,",options="header",]|===|| iOS | Windows操作系统|无预建| 20分钟17s 124; 40分钟30秒|预建| 10分钟2秒| 23分钟20秒|差异|*快51%|*快43%*|===詹金斯的手术相当复杂。说"告诉我一些我不知道的事",对吧?而且有这么多移动部件(弹性基础设施、插件、脏工作区),可能每个人都不容易运行特定的维护任务。我们有许多由build infrastructure group创建的小管道,可以用来诊断和解决某些错误,以及收集其他方面可能很难找到的有用信息。这些管道执行的操作包括打印所有已安装的插件、删除脱机按需代理、从vSphere清理断开连接的虚拟机或在特定的Jenkins实例中重新运行puppet。任何用户都可以运行这些作业,不需要是管理员。这允许团队在需要时通过使用这些作业来解除自身的障碍。这是我特别喜欢的。你修改过多少次管道,当你试着运行它时,第一件事就是詹金斯说它需要批准?。脚本Approvalimportorg.jenkinsci.plugins.脚本安全.scripts.*@NonCPS公司定义调用(){sa=脚本审批.get()toApproveScripts=sa.getPendingScripts()。收集()println("toApproveScripts:"+toApproveScripts)到ApproveScripts.each{待定->sa.get().批准书(挂起.getHash())println("批准的脚本:"+挂起.getHash())}sa.保存()}最好的部分?我们所有的Jenkins实例都默认包含这些作业,因此没有人会错过有趣。额外的资源:了解如何CloudBees Accelerator为您提供了时间和创新了解Accelerator如何在构建周期上节省了300万小时发现CloudBees Flow的JFrog Artifactory插件