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

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

内容简介:在使用 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
复制代码

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

查看所有标签

猜你喜欢:

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

风吹江南之互联网金融

风吹江南之互联网金融

陈宇(江南愤青) / 东方出版社 / 2014-6-1 / 55元

随着中国互联网金融浪潮高涨,P2P、众筹、余额宝、微信支付等新生事物层出不穷,加之大数据等时髦概念助阵,简直是乱花渐欲迷人眼,令媒体兴奋,公众狂热。那么,互联网金融真的能“颠覆”传统金融吗?当互联网思维对撞传统金融观念,是互联网金融的一统天下,还是传统金融业的自我革新?究竟是谁动了金融业的奶酪? 本书作者早期试水创立具有互联网金融雏形的网站,后来成为互联网金融的资深投资人,基于其多年在该领域......一起来看看 《风吹江南之互联网金融》 这本书的介绍吧!

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

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具