构建环境
构建环境确定了在运行构建任务的时候,环境中拥有哪些软件;
云原生构建
使用 Docker 容器作为构建环境。
相比于传统的虚拟机容器,Docker 容器有非常巨大的优势, 行业中各个 CI 厂商也在向这方面发展。
请确保使用 云原生构建
时,拥有使用 Docker 容器的相关经验,
或至少了解 Docker 入门知识 (opens new window)。
# 配置方式
Docker 容器的配置方式有两种:
- 指定一个 image(已有的镜像)。这些镜像是之前由其他人制作出来并且推送到镜像仓库中的。
- 指定一个 Dockerfile。在构建开始时,
云原生构建
会根据 Dockerfile 来即时制作镜像(或某种条件下使用缓存)并且使用。
# 指定 image
master:
push:
- docker:
# 通过此参数控制使用的 image
image: node:16
stages:
- stage1
- stage2
- stage3
在 pipeline.docker.image
参数指定 Docker image。
其值可以是公网中的 官方镜像库 (opens new window),
也可以是其他镜像源中的公开镜像。
# 指定 Dockerfile
master:
push:
- docker:
# 通过此参数控制使用的 Dockerfile
build: ./image/Dockerfile
stages:
- stage1
- stage2
- stage3
在 pipeline.docker.build
参数指定 Dockerfile。
# 镜像中的VOLUME
镜像中可能包含VOLUME
命令。
在镜像任务的容器启动时会通过 --volumes-from
参数,将这些 volume 共享给 镜像任务。
例如,在 Dockerfile 中准备了文件:
RUN mkdir /cache && echo '[{"author_email": "git_user1@xxx.com"}]' > /cache/cache.json
VOLUME /cache
在后续的 image-commands 中也可以访问到它。
- name: image-commands中访问pipeline volume
image: alpine
commands:
- cat /cache/cache.json
# 缺省镜像
如果以上两种方式都没有声明,那么将使用缺省值 codingci/default-env (opens new window)
此镜像包含了:git
, git-lfs
, jq
, rsync
, docker-compose
, node:14
# 使用案例
# NodeJS
当需要使用 NodeJS 的构建环境时,可以选择使用 Docker Hub 之中的 官方 NodeJS 镜像 (opens new window)。
master:
push:
- docker:
image: node:16
stages:
- name: 依赖安装
script: npm install
- name: 测试用例检查
script: npm test