优化
本文档概述了用于优化Circleci配置的几种方法。将简要描述每个优化方法,呈现可能的使用情况,并将提供一个示例优化,用于加快作业。
注意:对于云客户,本文档中讨论的一些功能可能需要特定的定价计划。188bet娱乐官网访问我们188bet娱乐官网定价页面概述Circleci提供的计划。或者,如果您是登录Circleci Web应用程序,请转至计划从侧边栏查看并对您的计划进行调整。
Docker图像选择
为您的项目选择合适的Docker图像可能对构建时间产生巨大影响。例如,选择基本语言图像意味着每次运行管道时需要下载依赖性和工具,而如果您选择或构建具有这些依赖性和工具的映像已安装,则此时将为每个构建运行保存。配置项目和指定图像时,请考虑以下选项:
- Circleci提供了一系列便利图像,通常基于官方Docker图像,但预先安装了一系列有用的语言工具。
- 您可以创建自己的图像,最大限度地提高项目的特殊性。为了帮助我们,我们提供了一个Docker Image构建巫师,和手动构建图像的指导。
缓存依赖项
缓存应该是您在尝试优化工作时的第一件事之一。如果作业在任何时候提起数据,那么您可能会使用缓存。一个常见的例子是使用包/依赖关系管理器。例如,如果您的项目使用纱线,Bundler或PIP,则可以缓存在作业期间下载的依赖项以供以后使用,而不是在每个构建中重新下载。
版:2职位:建立:脚步:#组成“构建”工作的可执行命令集合-查看#将源代码拉到工作目录中-restore_cache.:#**如果分支密钥模板或Requirement.txt文件以来,恢复已保存的依赖性缓存,因为自上一个运行以来没有更改**键:deps1 - {{.branch}} - {{校验和“要求.txt”}}-跑:#使用pip安装和激活虚拟环境命令:|Python3 -M Venv Venv。venv / bin / spectatepip安装-r要求.txt-save_cache.:#**节省依赖缓存的特殊步骤**键:deps1 - {{.branch}} - {{校验和“要求.txt”}}path:-“venv“
记下使用a校验和
在缓存中键
;这用于计算特定依赖管理文件时(例如package.json.
要么要求.txt.
在这种情况下)变化因此,缓存将相应更新。在上面的例子中,restore_cache.
示例使用插值将动态值放入缓存键中,允许更多控制究竟究竟构成更新缓存的需要。
我们建议您验证依赖关系安装步骤在添加缓存步骤之前是否成功。缓存失败的依赖关系步骤将要求您更改缓存键以避免由于缓存而导致的窗口失败。
咨询缓存文件了解更多。
工作流程
工作流程提供了定义作业集合及其运行订单的方法。如果在您的构建中的任何点,您会看到一步,其中两个作业可以互相愉快地运行,工作流可能会有所帮助。工作流还提供了几种其他功能来增强和提高构建配置。阅读更多关于工作流程的更多信息工作流文档。
注意:所有计划都可以使用工作流,但同时运行作业假定您的计划提供多个计算机执行。
版:2.1职位:#在这里我们定义了两份工作:“构建”和“测试”建立:Docker.:#使用Docker执行程序-图片:Circleci / <语言>:<版本标签>#一个例子码头图像验证:用户名:mydockerhub-user.密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看#从VCS中取出代码-跑:<命令>#示例命令测试:Docker.:#与以前的Docker键相同。-图片:Circleci / <语言>:<版本标签>验证:用户名:mydockerhub-user.密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看-跑:<命令>工作流程:#在这里,我们可以向工作流程协调我们的工作版:2build_and_test.:#单个工作流命名为“build_and_test”职位:#我们运行我们的`Build`作业并同时测试-建立-测试
您可以查看更多工作流的示例Circleci演示工作流程。
工作区
注意:使用Workspaces假定您也使用工作流程。
工作区用于传递数据独特的奔跑并且是必需的下游工作。因此,如果您使用的工作流程,则在构建中早期运行的作业可能会获取数据,然后进行稍后可用对于稍后在构建之后运行的作业。
要持续到工作中的数据,并通过[Attach_Workspace.
密钥,配置作业以使用persist_to_workspace.
键。在路径中命名的文件和目录:属性persist_to_workspace.
将相对于用根键指定的目录上传到工作流的临时工作空间。然后上传文件和目录,可用于随后的作业(并重新运行工作流程)。
阅读更多关于如何使用工作空间的信息工作流程文件。
并行
注意:您的Circleci计划确定您可以在构建中使用的并行程度(1x,2x,4x等)
如果您的项目有一个大型测试套件,您可以配置您的构建以使用并行
一起和任何一种Circleci的测试拆分功能或者第三方申请或图书馆将您的测试跨越多台机器。Circleci在文件的基础上支持跨机器的自动测试分配,但是,您还可以手动自定义测试的分配方式。
#〜/ .circleci / config.yml版:2职位:Docker.:-图片:Circleci / <语言>:<版本标签>验证:用户名:mydockerhub-user.密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考测试:并行:4.
阅读更多关于拆分测试的更深入并行文件。
资源类
注意:符合条件的计划需要使用resource_class.
云上的功能。如果您在基于集装箱的计划中,您需要开票在您的帐户中启用此功能。System Administrators设置自托管安装的资源类选项。
使用resource_class.
,可以为每项作业配置CPU和RAM资源。对于云,看这表有关可用类列表,并且为Selo Hosted Installations联系您的系统管理员以获取列表。如果resource_class.
未指定或指定无效类,默认值Resource_Class:媒体
将会被使用。
以下是一个例子用例resource_class.
特征。
职位:建立:Docker.:-图片:buildpack-deps:可靠验证:用户名:mydockerhub-user.密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考环境:Foo:酒吧并行:3.resource_class.:大#实现带有4个VCPU和8GB RAM的机器。脚步:-跑:制作测试-跑:使
Docker层缓存
注意:绩效计划需要使用Docker层缓存。如果您在基于容器的计划上,您需要提升到绩效计划为您的组织启用DLC。
DLC是一个可以帮助减少的功能建造时间在您的构建中的Docker图像。如果您发现自己作为CI / CD进程的常规部分,则Docker层缓存非常有用。
DLC类似于缓存依赖项上面提到了它救赎您在作业中构建的图像图层,使其在后续构建中可用。
版:2职位:建立:Docker.:-图片:circleci / node:9.8.0-stract-浏览器#DLC在此处不做,其缓存取决于图像图层的共性。验证:用户名:mydockerhub-user.密码:$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步:-查看-setup_remote_docker.:docker_layer_caching.:真正#dlc将在此将显式缓存图层并尝试避免重建。-跑:Docker Build。
学习更多关于Docker层缓存
也可以看看
- 有关可以制作构建的完整清单,请考虑阅读我们的配置参考。
- Coinbase发布了一篇标题的文章在Coinbase持续整合:我们如何优化Circleci的速度,并将我们的构建时间减少75%
- 使用纱线加速构建缓存