构建环境
构建环境确定了在运行构建任务的时候,环境中拥有哪些软件;
云原生构建
使用 Docker 容器作为构建环境。
相比于传统的虚拟机容器,Docker 容器有非常巨大的优势, 行业中各个 CI 厂商也在向这方面发展。
请确保使用 云原生构建
时,拥有使用 Docker 容器的相关经验,
或至少了解 Docker 入门知识。
# 配置方式
Docker 容器的配置方式有两种:
- 指定一个 image(已有的镜像)。这些镜像是之前由其他人制作出来并且推送到镜像仓库中的。
- 指定一个 Dockerfile。在构建开始时,
云原生构建
会根据 Dockerfile 来即时制作镜像(或某种条件下使用缓存)来使用。
# 指定 Image
main:
push:
- docker:
# 通过此参数控制使用的 image
image: node:22
stages:
- stage1
- stage2
- stage3
用 pipeline.docker.image 参数指定 Docker Image。 其值可以是 公网中的官方镜像源或其他可以被访问到的镜像源 中的公开镜像。
# 指定 Dockerfile
main:
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
# 缺省镜像
如果以上两种方式都没有声明,那么将使用缺省值 cnbcool/default-build-env:latest
# 使用案例
# NodeJS
当需要使用 NodeJS 的构建环境时,可以直接使用 Docker Hub 之中的官方 NodeJS 镜像。
main:
push:
- docker:
image: node:20
stages:
- name: 依赖安装
script: npm install
- name: 测试用例检查
script: npm test