内容简介:在使用 CI 工具进行持续集成的时候, 免不了要定义配置文件, 并在配置文件中定义项目的工作流程. Circle 是一个对开源项目友好的 CI 工具, 本文将以对于大多数初次尝试使用 CircleCI 的用户, 最难以拿捏的, 莫过于配置中 docker 字段下 image 的定义, 本文将介绍两种类型的 Convenience Image, 在这些镜像中预设了很多依赖, 可以为我们进行持续集成提供便利.
在使用 CI 工具进行持续集成的时候, 免不了要定义配置文件, 并在配置文件中定义项目的工作流程. Circle 是一个对开源项目友好的 CI 工具, 本文将以 CircleCI 入手, 解析配置文件中定义镜像的配置项: image 字段.
对于大多数初次尝试使用 CircleCI 的用户, 最难以拿捏的, 莫过于配置中 docker 字段下 image 的定义, 本文将介绍 如何配置 image 选项 - 使用 CircleCI Convenience Image , 以及与之相关配置的 最佳实践 .
Convenience Image 的两种类型
CircleCI 为我们提供了 语言类镜像 和 服务类镜像两种类型的 Convenience Image, 在这些镜像中预设了很多依赖, 可以为我们进行持续集成提供便利.
语言类镜像
语言类镜像内置了某种语言相关的依赖和工具.
语言类镜像需要在 docker 字段下的第一个 image 字段中定义, 作为执行时的 首要容器 .
语言类镜像支持的语言列表:
- Android
- Clojure
- Elixir
- Go (Golang)
- JRuby
- Node.js
- OpenJDK (Java)
- PHP
- Python
- Ruby
- Rust
格式
docker: -image: ciecleci/language:version[-tag] 复制代码
使用示例
docker: -image: circleci/golang:1.9 复制代码
语言类镜像变体
在语言类镜像的基础上, CircleCI 还提供了这类镜像的变体, 即在提供了某种语言依赖的基础上增加了更多的依赖, 预装了其他的语言和工具
通过添加以下后缀, 就可以使用在某种 Convenience Image 的基础上预置了更多依赖的镜像
-
-node
- 添加了 Nodejs 相关依赖
-
-browsers
- 添加了 浏览器 相关依赖
- includes Chrome, Firefox, Java 8, and Geckodriver
-
-browsers-legacy
- 大致同上, 略有区别
- includes Chrome, Firefox, Java 8, and PhantomJS
-
-node-browsers
- 同时添加了 -node 变体 和 -browser 镜像变体所提供的依赖
-
-node-browsers-legacy
- 同时添加了 -node 变体 和 -browsers-legacy 镜像变体所提供的依赖
使用示例
- image: circleci/node:10-jessie-browsers 复制代码
服务类镜像
服务类镜像主要是为项目提供服务 (例如数据库服务) 时使用的.
它们必须要在语言类镜像后面定义, 作为 次要镜像 .
CircleCI 为以下服务提供了服务类镜像
- buildpack-deps
- DynamoDB
- MariaDB
- MongoDB
- MySQL
- PostgreSQL
- Redis
使用示例
- image: circleci/mongo:4.1.7-xenial 复制代码
服务类镜像变体
CircleCI 仅仅为服务类镜像提供了一种变体, -ram
使用示例
- image: circleci/postgres:9.5-postgis-ram 复制代码
关于镜像的最佳实践 Best Practices
使用 CircleCI Convenience Image 的最佳实践是 使用最精确的镜像.
这是因为 Convenience Image 是基于最新版本的上游镜像制作的. 使用最精确的镜像可以避免由于上游的镜像更新而导致的 Convenience Image 的更新从而所带来的不稳定性, 让项目的运行环境更为稳定.
CircleCI 的 Convenience Image 是基于 上游提供的编译好的镜像. 例如镜像 circleci/ruby:2.4-node
是基于最新的 Ruby 2.4-node
容器制作的.
配置 Image 的最佳实践就是通过一个额外的标签来固定镜像的版本.
也就是说, 与其使用 circleci/ruby:2.4-node 镜像, 不如加上一个标签 -jessie 或 -stretch 来固定镜像所用的操作系统, 来确保项目使用的镜像是基于某个特定版本的 Debian 系统 ( 例如 circleci/ruby:2.3.7-jessie )
我们也可以通过指定镜像的 SHA 版本来使用最精确的镜像.
使用精确镜像的两种方法:
- 使用一个标签来固定镜像的系统类型
- 使用 Docker 镜像的 ID
# 最佳实践示例 # 示例 1 # 使用固定系统的镜像 - image: circleci/ruby:2.4.2-jessie-node # 示例 2 # 使用固定版本镜像 - image:circleci/ruby@sha256:df1808e61a9c32d0ec110960fed213ab2339451ca88941e9be01a03adc98396e 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Maven 多仓库和镜像配置
- Docker 镜像,基于 alpine 系统的时区配置
- 树莓派SD卡镜像刻录与系统配置
- Docker - 配置阿里云的Docker镜像加速器
- KVM镜像制作及挂载镜像文件
- 查看Docker镜像仓库中镜像的所有标签
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Flash ActionScript 3.0 动画高级教程
Keith Peters / 苏金国、荆涛 / 人民邮电出版社 / 2010-1 / 65.00元
《Flash ActionScript 3.0 动画高级教程》是介绍Flash 10 ActionScript动画高级技术的经典之作,是作者在这一领域中多年实践经验的结晶。书中不仅涵盖了3D、最新绘图API以及Pixel Bender等Flash 10 ActionScript特性,深入介绍了碰撞检测、转向、寻路等Flash游戏开发技术,还通过实例具体讲解了等角投影和数值积分的基本理论和应用。 ......一起来看看 《Flash ActionScript 3.0 动画高级教程》 这本书的介绍吧!