迁移特拉维斯CI

本文档提供了如何从特拉维斯CI迁移到CircleCI的概述。

本文中引用的示例构建配置就是基于此例如JavaScript的库

先决条件

本文件假设:

  1. 你有CircleCI帐户链接到库。如果您还没有帐户,可以阅读我们的入门指南
  2. 你明白基本概念在CircleCI。

为什么要迁移到CircleCI?

  • 缩放并发:您可以运行多达80个并行作业在我们的每月性能计划,或更多在a定制计划。特拉维斯CI已在每个他们的计划封端的1,2,5和10并发性。
  • 资源类虚拟CPU和RAM是CircleCI工作中进行配置,以从战略加快构建和花学分,而这些数值都是固定的特拉维斯CI。
  • 并行的时机在同时运行多个作业的基础上,CircleCI提供了内置的功能测试分裂在多种环境由定时。这大大降低了挂钟时间与大型测试套件来完成。您必须实现此手动特拉维斯CI。
  • 球体: CircleCI提供的不是专有的集成球体,这是可重用的模板化配置。除了连接到服务和工具之外,orb还可以用于对团队和组织的配置进行标准化和模板化。访问注册表

配置文件

无论特拉维斯CI和CircleCI化妆使用的配置文件定义你的工作流程和工作。唯一的区别是,你CircleCI配置将生活在.circleci / config.yml在您的库的根。

下面,您将看到不同配置声明的并排比较。

特拉维斯CI 圆CI 描述
语言:,
操作系统:
泊坞窗,机,MacOS的,窗户 CircleCI不假定依赖关系或基于语言的命令;相反,选择一个遗嘱执行人并使用运行:如下图所示,执行你需要(例如,安装,构建,测试)的命令的步骤。
经销: 我们的Linux虚拟机执行器是一个Ubuntu虚拟机。您可以指定版本在配置
缓存: restore_cache:save_cache: 使用恢复和保存的缓存功能来控制缓存的构建
before_cache 运行: 如果希望在缓存之前运行任何命令,只需在循环中在缓存步骤之前放置run: step
before_install: 运行: CircleCI不会将命令划分为阶段或类型。使用运行:步骤指定任何命令,并责令其按您的需求。看到文件用于条件步骤的使用
安装: 运行: “ (看上面)
before_script 运行: “ (看上面)
脚本: 运行: “ (看上面)
after_script: 运行: “ (看上面)
部署: 运行: 使用一个运行:步骤以运行部署所需的命令。看到我们的部署指南为例子。
ENV: 环境: 使用环境:元素指定的环境变量
矩阵: 矩阵: CircleCI还提供在我们的工作流程配置矩阵语法。
阶段: 要求: 使用要求:元素来定义工作依赖和控制工作流程兼职

基于推入代码进行构建

以上链接的例子库是一个用于创建,读取,更新和删除文章的简单应用。这个应用程序是建立与MERN栈和有存在于客户机以及所述REST API每当码被推应该运行上的测试。

为了运行这个示例库的测试,一个简单的Travis配置的开始看起来可能像下面的示例:

语言node_js服务mongodbbefore_install- gydF4y2BaNPM我-g NPM @ 5node_js- gydF4y2Ba5”缓存npm

对于基本建立,一个特拉维斯CI的配置将充分利用语言最知名的依赖,构建工具和将抽象他们离开作为默认命令(可重写)在工作生命周期。在这种情况下,当构建运行,特拉维斯CI会自动运行NPM安装为了安装步骤,并运行npm开始为了脚本步。

如果用户需要对其CI环境进行更多的控制,Travis CI使用钩子属性之前/之后运行命令安装脚本脚步。在上面的例子中,“钩之前”用于指定该NPM版本被固定到。钩子可以执行shell脚本,以及哪些用户将在存储有时.travis在他们的存储库的根文件夹。

下面的CircleCI配置实现了相同的结果,节选自示例存储库:

2.1工作流2建立职位- gydF4y2Ba建立职位建立working_directory~ / mern-starter码头工人- gydF4y2Ba图片4.8.2 circleci /节点#初级执行图像AUTH用户名mydockerhub用户密码$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用- gydF4y2Ba图片蒙戈:3.4.4#服务/依赖性图像AUTH用户名mydockerhub用户密码$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用步骤- gydF4y2Ba结帐- gydF4y2Ba运行的名字update-npm命令sudonpm安装- gnpm@5”- gydF4y2Barestore_cache关键依赖缓存 -  {{校验和“包lock.json”}}- gydF4y2Ba运行的名字安装-NPM-凌晨命令NPM安装- gydF4y2Basave_cache关键依赖缓存 -  {{校验和“包lock.json”}}路径- gydF4y2Ba./node_modules- gydF4y2Ba运行的名字测试命令NPM测试

在上面,没有配置语言,而用户可以指定任意数量的步骤可以运行,对工序顺序没有限制。通过利用多克,特定的Node.js和MongoDB版本在每个可用命令这被运行。

缓存依赖

随着CircleCI你何时以及如何你的配置缓存和恢复依赖在控制。在上面的例子中,CircleCI.circleci / config.yml属性的校验和检查依赖项缓存包lock.json文件。您可以根据任何键(而不仅仅是键)设置缓存包lock.json),以及按照声明的顺序设置一组缓存路径。指的是缓存依赖文件了解自定义生成如何创建和恢复高速缓存。

在特拉维斯配置,依赖缓存在您的构建中发生脚本逐步的,它与您所使用的语言。在我们的例子中,通过使用缓存:NPM关键在.travis.yml,依赖性将默认缓存node_modules

环境变量

无论特拉维斯和CircleCI确保您的构建环境变量的使用。

在你CircleCI.circleci / config.yml你可以把环境变量直接在你的构建配置的步骤,作业或容器。这些变量是公开的,未加密的。随着特拉维斯CI,也可以包括加密环境变量直接在你的配置中(如果你安装特拉维斯宝石)。

在Web应用程序中设置环境变量

如果你已经使用特拉维斯CI的存储库设置,您将在CircleCI的项目设置页面中轻松设置环境变量。读取文件,设置环境变量单项目

随着CircleCI,还可以跨安全设置环境变量所有项目使用上下文

注意:CircleCI有几个内置的环境变量

工件上传

使用Travis CI,您可以使用AWS S3手动上传构建工件,也可以将其作为GitHub发行版的附件上传。

在CircleCI上,工件上传发生在配置中的一个步骤:

- gydF4y2Ba运行的名字测试命令NPM测试- gydF4y2Ba运行的名字代码覆盖命令/ node_modules /。bin /纽约报告--reporter =文本LCOV”- gydF4y2Bastore_artifacts#<存储测试results.xml,在Web应用程序或通过API可用。路径测试results.xml前缀测试- gydF4y2Bastore_artifacts路径报道前缀报道- gydF4y2Bastore_test_results路径测试results.xml

神器上传成功后,您可以在您的浏览器通过CircleCI API的工作页面的文物标签,或访问查看。阅读上的文档工件上传要学习更多的知识。

先进的工装

在特拉维斯更高级的配置可能使使用的构建矩阵(配置指定运行多个并行作业)或构建阶段(将作业分组为可以并发运行的阶段,以及使用连续作业依赖于以前作业的成功。)

随着CircleCI可以使用工作流在你的.circleci / config.yml定义作业的集合和他们的运行顺序,无论是借力并发,扇入或扇出生成,或顺序依赖性的基础之上。工作流程允许在你的构建配置复杂和精细的控制。