CircleCI 配置第一章: 镜像 Image 配置 - 使用 CircleCI Convenience Image

栏目: Ruby · 发布时间: 5年前

内容简介:在使用 CI 工具进行持续集成的时候, 免不了要定义配置文件, 并在配置文件中定义项目的工作流程. Circle 是一个对开源项目友好的 CI 工具, 本文将以对于大多数初次尝试使用 CircleCI 的用户, 最难以拿捏的, 莫过于配置中 docker 字段下 image 的定义, 本文将介绍两种类型的 Convenience Image, 在这些镜像中预设了很多依赖, 可以为我们进行持续集成提供便利.

在使用 CI 工具进行持续集成的时候, 免不了要定义配置文件, 并在配置文件中定义项目的工作流程. Circle 是一个对开源项目友好的 CI 工具, 本文将以 CircleCI 入手, 解析配置文件中定义镜像的配置项: image 字段.

对于大多数初次尝试使用 CircleCI 的用户, 最难以拿捏的, 莫过于配置中 docker 字段下 image 的定义, 本文将介绍 如何配置 image 选项 - 使用 CircleCI Convenience Image , 以及与之相关配置的 最佳实践 .

Convenience Image 的两种类型

CircleCI 配置第一章: 镜像 Image 配置 - 使用 CircleCI 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 配置第一章: 镜像 Image 配置 - 使用 CircleCI Convenience Image
使用 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 版本来使用最精确的镜像.

使用精确镜像的两种方法:

  1. 使用一个标签来固定镜像的系统类型
  2. 使用 Docker 镜像的 ID
# 最佳实践示例
# 示例 1
# 使用固定系统的镜像
- image: circleci/ruby:2.4.2-jessie-node



# 示例 2
# 使用固定版本镜像
- image:circleci/ruby@sha256:df1808e61a9c32d0ec110960fed213ab2339451ca88941e9be01a03adc98396e
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序算法与技巧精选

程序算法与技巧精选

郭继展 / 2008-5 / 36.00元

《信息科学与技术丛书•程序算法与技巧精选》分17章,139个例题。书中介绍的算法和技巧涉及到随机数函数理论,基础数论,新意幻方,提高程序运行速度和精度,特定数据排序,穷举、递推、递归和迭代等诸多方面。这些算法和技巧大多是作者历年从事教学、软件开发、学术研究和学习的成果总结。 《信息科学与技术丛书•程序算法与技巧精选》内容不涉及计算机专业课程的诸多概念、理论,读者只需要学过C语言,有算法、结构......一起来看看 《程序算法与技巧精选》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器