内容简介:作者简介刘仁权(弈阁)
研发效能领域洞察系列
CircleCI 在 2019 年被 Forrester 评为云原生连续集成领域的领导者,并被提名为多个Best DevOps Tools列表。CircleCI 是第一个通过 FedRAMP认证的CI / CD 工具,每月在 Linux,macOS,Docker 和 Windows 构建环境中处理超过 3000 万个构建。
作者简介
刘仁权(弈阁)
蚂蚁金服 高级开发工程师
刘 仁权,花名弈阁,蚂蚁金服研发效能部高级开发工程师, 主要从事DevOps平台持续交付系统研发工作,在Pipeline编排、容器化调度、CI提效、插件体系等方面有丰富的实战经验。
01
诞生
CircleCI成立于2011年,创始人是Paul Biggar和Allen Rohner,总部位于旧金山,目前在全球拥有远程员工300+,估值近1.155亿美元,最近又获得了1亿美金的融资 (2019年还是5000万美元来着,不到一年翻了4倍) 。
CircleCI在2019年被Forrester(国外有名独立的技术和市场调研公司)评为云原生连续集成领域的领导者,并被提名为多个Best DevOps Tools列表。CircleCI是第一个通过FedRAMP认证的CI / CD工具, 每月在Linux,macOS,Docker和Windows构建环境中处理超过3000万个构建。
CircleCI致力于通过先进的持续交付技术支持企业通过自动化构建、测试和交付过程来快速发布他们可信任、高质量的代码。目前包括FaceBook、三星(Samsung)、福特汽车公司(Ford Motor Company)、Spotify、Lyft、Coinbase、PagerDuty、Stitch Fix和BuzzFeed在内的数千家领先公司,都依靠CircleCI来加速交付和提高质量。
02
优势
目前业界的CI/CD产品有很多,但是CircleCI运行CI/CD有其非常多独特的优势, 主要总结在这8个方面:
-
通过workflows编排强大的控制执行能力
-
一流的 docker 支持(支持运行任意的公共或私服docker仓库、通过executor自定义编排到job中、支持layer缓存等等)
-
支持自定义CPU/RAM
-
无论什么语言都可运行
-
强大的缓存能力
-
通过ssh或者本地build可以非常简单上手的debug
-
强大的安全保障
-
丰富的CI/CD数据视图
那么具体如何体现这些优势呢,下面将从CircleCI执行流程出发详细了解其功能组成
03
架构介绍
下图是CircleCI执行流程整体概要图,包含了CircleCI的驱动方式、编排能力、调试能力、集成三方服务、调度方式等多个功能模块。
下面将详细介绍每个部分的功能特点:
驱动方式
CircleCI触发方式非常多样化,通过统一的CircleCI API支持了VCS(集成了GitHub、GitHub Enterprise和Bitbucket等)、Pipline UI界面、CLI或者服务API调用等多种方式来触发一次Pipeline。
Tips:最新的API v2,传送门 (https://circleci.com/docs/api/v2)
编排能力
CircleCI通过config.yml丰富的定义具备了强大的执行能力,通过workfows编排任务,并且内置了多种功能强大的step,包括run(自定义脚本)、checkout(下载代码)、save_cache/restore_cache(保存和恢复缓存)、store_artifacts/store_test_results(产物存储)等多种能力。
:chestnut: 举一个栗子 :
version: 2
#定义job
jobs:
#1.编译
build:
working_directory: ~/my-project
steps:
#下载代码
- checkout
#恢复缓存
- restore_cache:
keys:
- v1-m2-{{ checksum "pom.xml" }} #通过checksum校验pom.xml是否变更,从而判断是否
- v1-m2-
#执行一个自定义脚本
- run:
environment:
MVN_ARGS: "-Dmode=dev"
command: |
set -xu
mvn clean install $MVN_ARGS
#更新缓存
- save_cache:
key: v1-m2-{{ checksum "pom.xml" }}
paths:
- ~/.m2
# 保存产物
- store_artifacts:
path: ~/my-project/
destination: target
# 上传测试结果(比如mvn的testng-resutls.xml)
- store_test_results:
path: ~/my-project/target/surefire-reports
#2.发布到sit环境
deploy-sit:
docker:
- image: ubuntu:14.04
working_directory: /tmp/my-project
steps:
- run:
name: deploy is test pass
command: ansible-playbook site.yml -i staging
#3.发布到sit环境
deploy-prod:
docker:
- image: ubuntu:14.04
working_directory: /tmp/my-project
steps:
- run:
name: Deploy if tests pass and branch is Master
command: ansible-playbook site.yml -i production
通过workflows去定义job的编排方式,关于workflows的更多介绍,第二期为你解答~
workflows: version: 2 build-deploy: jobs: - build: filters: branches: ignore: - develop - /feature-.*/ - deploy-staging: requires: #deploy-sit需要依赖build执行 - build filters: # 过滤仅在某些条件下执行 branches: only: master - deploy-prod: requires: - build filters: branches: only: master
每个workfolw可以产出产物,共享一份workspace,并且多个workflow之间的cache可以共享。
执行器
CircleCI设计了executors,支持将job调度到不同类型的执行器上,包括Docker、 Linux 、 Mac、GPU等等
具体语法见:
executor |
备注 |
docker |
通过image执行镜像 |
machine |
包括linux、unbuntu等 |
macos |
macos,支持指定os版本 |
windows |
通过虚拟机运行 |
:chestnut: 再举个栗子:
运行在ubuntu上
version: 2.1 jobs: build: machine: image: ubuntu-1604:201903-01 steps: - checkout - run: name: "Testing" command: echo "Hi"
运行在mac上
jobs: build: macos: xcode: "11.3.0"
集成能力-orbs
CircleCI 2.0新定义了一种新的yaml对象orbs, orb是一个可重用的YAML配置包,它将重复的配置压缩成一行代码,包含了jobs、command、executors等等的一个大集合,通过orbs集成了非常丰富(nb)的 工具 链,集成方包括: AWS、 Azure、ConfigCat、Docker Hub、Google Cloud、Helm等等。
截止到2020年4月2号,已经有400+ orbs
:chestnut:orb的使用方式也特别简单,举个栗子:
version: 2.1
orbs:
#这里的hello是orbs的一个引用, hello等价于circleci/hello-build@0.0.5
hello: circleci/hello-build@0.0.5
workflows:
"Hello Workflow":
jobs:
#hello等价于circleci/hello-build@0.0.5,hello-build是它的一个job
- hello/hello-build
关于orbs的更多语法介绍,第二期为你解答~
系列预告 - 深入解读企业级持续交付系统CircleCI
Part 1:What is CircleCI ?
Part 2:Pipeline语法完整解读
Part 3:手把手指导入门案例
Part 4:全新UI界面
如果还想要了解更多,这里有更多研发效能内容推荐:
趋势研究:从0到1打造软件供应链
点击查看原文:《 【前沿探索】安全交付:GCP 的安全软件供应链 》
硬核的俄文会议转播,如何打造下一代IDE?
点击查看原文:《 JetBrains OpenDay 2019 盘点:如何打造下一代 IDE 》
长按识别二维码关注我们
号外号外!!!
蚂蚁金服研发效能团队招募进行中, 高级iOS开发工程师/技术专家、资深前端开发工程师/技术专家、高级 Java 开发工程师/技术专家、技术支持、静态程序分析技术专家、产品专家 等 十余+ 岗位持续开放,让我们一起助力内部及外部伙伴研发效能的持续提升,「效」傲江湖:rocket::rocket::rocket:
详细岗位信息扫描下方二维码
如果你对任何岗位感兴趣,欢迎发简历到: AntLinkE@antfin.com
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何构建高效自主的容器云交付平台?
- Drone 0.8.3 发布,为容器构建的持续交付平台
- Docker微服务-镜像构建交付和使用Rancher进行容器创建管理
- 中国金茂构建面向地产业务的云管平台,强化IT服务交付与安全性
- 每月处理 3000w+ 构建的企业级持续交付系统 CircleCI 是怎么炼成的?(一)
- 每月处理 3000万+ 构建的企业级持续交付系统 CircleCI 是怎么炼成的?(三)带你4步创建入门级wor...
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度探索C++对象模型
斯坦利•B.李普曼 (Stanley B. Lippman) / 侯捷 / 电子工业出版社 / 2012-1 / 69.00元
作者Lippman参与设计了全世界第一套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)和implicit(隐藏于程序代码背后)的C++语意。 本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模......一起来看看 《深度探索C++对象模型》 这本书的介绍吧!