持续集成与服务

DaoCloud 持续集成基于容器技术来运行您的测试任务,确保您的任务和其他租户的任务完全隔离并互不干扰。

入门

执行步骤
  1. 克隆源代码,切换到对应的提交。
  2. 挂载代码到测试环境。
  3. 设置环境变量。
  4. 执行“安装命令”。
  5. 执行“预备动作”。
  6. 执行“脚本”。

实现细节

DaoCloud 支持自定义的测试镜像,让您更方便地配置个性化的测试环境。

为了方便您准备测试环境,我们还提供了测试相关服务:

  • MySQL (5.5)
  • Redis (2.8)
  • MongoDB (2.6)
  • RabbitMQ (3.6)
  • PostgreSQL (9.1)

指定测试镜像

测试镜像代表了您的测试任务运行的环境。

您可以从下面的列表(DaoCloud 准备好的镜像)中选择您希望的运行环境,也可以使用自己构建的镜像:
  • daocloud/ci-python:2.6
  • daocloud/ci-python:2.7
  • daocloud/ci-python:3.1
  • daocloud/ci-python:3.2
  • daocloud/ci-python:3.3
  • daocloud/ci-python:3.4
  • daocloud/ci-golang:1.0
  • daocloud/ci-golang:1.1
  • daocloud/ci-golang:1.2
  • daocloud/ci-golang:1.3
  • daocloud/ci-golang:1.4
  • daocloud/ci-golang:1.5.1
  • daocloud/ci-golang:1.5
  • daocloud/ci-golang:1.6
  • daocloud/ci-node:0.6
  • daocloud/ci-node:0.8
  • daocloud/ci-node:0.10
  • daocloud/ci-node:0.12
  • daocloud/ci-php:5.5
  • daocloud/ci-php:5.6
  • daocloud/ci-ruby:1.8.7
  • daocloud/ci-ruby:1.9.3
  • daocloud/ci-ruby:2.0.0
  • daocloud/ci-ruby:2.1.2
  • daocloud/ci-ruby:2.1.4
  • daocloud/ci-ruby:2.1.6
  • daocloud/ci-ruby:2.2.0
  • daocloud/ci-ruby:2.2.2
  • daocloud/ci-java:openjdk6
  • daocloud/ci-java:openjdk7
  • daocloud/ci-java:oraclejdk6
  • daocloud/ci-java:oraclejdk7
  • daocloud/ci-java:oraclejdk8
  • daocloud/ci-java:oraclejdk9
  • daocloud/ci-gcc:4.4
  • daocloud/ci-gcc:4.6
  • daocloud/ci-gcc:4.7
  • daocloud/ci-gcc:4.8
  • daocloud/ci-gcc:4.9
  • daocloud/ci-gcc:5

当然您可以使用其他公开镜像,比如:

  • userxxx/python:3.0
  • useryyy/golang:1.1
  • daocloud.io/python:3.5

配置测试服务

您可以指定测试任务运行时依赖的服务,指定服务后,测试任务执行时可以直接访问。比如指定要使用 mysql,可以使用 mysql 作为主机名来访问服务节点,或者通过环境变量 MYSQL_PORT_3306_TCP_ADDR  来访问。

目前 DaoCloud 持续集成支持的服务及访问方式如下表所示(该列表正在不断完善中):

MySQL

Version:MySQL 5.5

Docker Link Alias: mysql

Host: mysql

Port: 3306

UserName: root

Password: 不设密码

Default Instance: test

环境变量:

  • MYSQL_PORT = tcp://1.2.3.4:3306
  • MYSQL_PORT_3306_TCP_ADDR = 1.2.3.4
  • MYSQL_PORT_3306_TCP = tcp://1.2.3.4:3306
  • MYSQL_PORT_3306_TCP_PROTO = tcp
  • MYSQL_PORT_3306_TCP_PORT = 3306

Redis

Version:Redis 2.8

Docker Link Alias: redis

Host: redis

Port: 6379

环境变量:

  • REDIS_PORT = tcp://1.2.3.4:6379
  • REDIS_PORT_6379_TCP_ADDR = 1.2.3.4
  • REDIS_PORT_6379_TCP = tcp://1.2.3.4:6379
  • REDIS_PORT_6379_TCP_PROTO = tcp
  • REDIS_PORT_6379_TCP_PORT = 6379

MongoDB

Version:MongoDB 2.6

Docker Link Alias: mongodb

Host: mongodb

Port: 27017

环境变量:

  • MONGODB_PORT = tcp://1.2.3.4:27017
  • MONGODB_PORT_27017_TCP_ADDR = 1.2.3.4
  • MONGODB_PORT_27017_TCP = tcp://1.2.3.4:27017
  • MONGODB_PORT_27017_TCP_PROTO = tcp
  • MONGODB_PORT_27017_TCP_PORT = 27017

RabbitMQ

Version:RabbitMQ 3.6

Docker Link Alias: rabbitmq

Host: rabbitmq

Port: 5672

环境变量:

  • RABBITMQ_PORT_5672_TCP_ADDR = 1.2.3.4
  • RABBITMQ_PORT_5672_TCP = tcp://1.2.3.4:5672
  • RABBITMQ_PORT_5672_TCP_PROTO = tcp 
  • RABBITMQ_PORT_5672_TCP_PORT = 5672

PostgreSQL

Version:PostgreSQL 9.1

Docker Link Alias: postgres

Host: postgres

Port: 5432

Username: postgres Password: 无

环境变量:

  • POSTGRES_PORT_5432_TCP_ADDR=1.2.3.4
  • POSTGRES_PORT_5432_TCP_PORT=5432
  • POSTGRES_PORT_5432_TCP_PROTO=tcp
  • POSTGRES_PORT=tcp://1.2.3.4:5432
  • POSTGRES_PORT_5432_TCP=tcp://1.2.3.4:5432

指定镜像初始化脚本

您可以通过“安装命令”(install_script) 字段来指定您对镜像的初始化动作,如安装底层依赖包等。

指定测试准备脚本

您可以通过“预备动作”(before_script ) 来为您的测试做准备,如构建代码,获取依赖代码等。

指定测试脚本

您可以通过“脚本”(script) 来指定运行具体的测试任务。

如:

go test your-code