功能介绍
流水线定义
流水线是云原生构建的一个载体,用户可以通过编排流水线。实现自动化构建,自动化测试,自动化发布等功能。帮助团队高质量、高效率的完成从开发到上线过程的持续集成工作。
流水线构成
流水线 Pipeline 由阶段 Stage、任务 Job 组成。每一条流水线中可以定义多个阶段,而每个阶段下支持定义多个任务。 
-   
Job用于定义在阶段中需执行的具体任务,比如执行shell 命令,插件任务等。 -   
Stage用于定义不同阶段需执行哪些Job。其中每项Stage都会按已定义的顺序依次执行,Stage中的所有Job可以按照定义顺序或并行执行。 
编写流水线
编写流水线本质上是在编写 .coding-ci.yml 配置文件,在其中你可以定义:
- 以何种条件触发流水线,包括:Git Event, Openapi
 - 每条流水线具体需要执行的任务
 
示例文件
流水线示例配置文件:
master:                        # 监听 master 分支
  push:                        # 代码推送后触发流水线
    - name: pipeline-1         # 流水线名称
      docker:
        image: node:16  
      stages:                  # 阶段
        - name: build stage
          jobs:                # 任务
            - name: install    
              script: npm install
        - name: unit test
          jobs:
            - name: test
              script: npm run test
    - name: pipeline-2
      stages:
        - name: test stage
          jobs:
            - name: echo
              script: echo hello
上述示例描述了在 master 分支下持续监听 git push 事件。若事件触发,那么就分别执行名字为 pipeline-1,pipeline-2 两条流水线中的阶段与任务。
具体配置文件的语法说明请参考流水线语法。
配置语法检查和自动补全
推荐在 IDE 中使用语法检查和自动补全插件,减少书写配置文件时的挫败感。效果如下:
配置方法,以 VS Code(Visual Studio Code) 为例:
1、安装 Yaml 插件。
2、配置 json-schema。
在 VS Code 的 setting.json 中加入如下配置:
"yaml.schemas": {
    "https://ci.coding.net/docs/conf-schema.json": ".coding-ci.yml"
},
简化配置语法
配置文件是 Yaml 格式,可以利用更多 Yaml 特性(如锚点 & 、别名 * 和对象合并 << 符号)来简化配置文件,详细说明可以阅读 《Yaml 高级特性》。
例如以下场景:当 master 和 dev 分支的流水线完全一致时,那么可以使用锚点与别名简写以减少重复内容。
.pipeline: &pipeline
  docker:
    image: node
  stages:
    - name: 依赖安装
      script: npm install
    - name: 测试用例检查
      script: npm test
master:
  push:
    - <<: *pipeline
dev:
  push:
    - <<: *pipeline
分场景执行任务
支持分场景编排执行任务。例如可以实现在 MR 合并请求的阶段只执行构建测试任务,但是在 tag push 阶段时不仅执行构建测试任务,还需要同步执行发布步骤。
.build-fragment: &build-fragment
  - name: build
    script: npm run build
  - name: test
    script: npm test
.deploy-fragment: &deploy-fragment
  - name: release
    type: zhiyun:pkg
    options:
      product: PRODUCT
      name: NAME
      dist: ./release
      overlying: true
  - name: deploy
    type: zhiyun:update
    options:
      product: PRODUCT
      name: NAME    
master:
  merge_request:
    - stages:
        - *build-fragment
'**':
  tag_push:
    - stages:
        - *build-fragment
        - *deploy-fragment
多级嵌套
支持引用多层嵌套结构:
.fragment1: &fragment1
  - name: build
    script: npm run build
  - name: echo 1
    script: echo 1
.fragment2: &fragment2
  - *fragment1
  - name: echo 2
    script: echo 2
master:
  merge_request:
    - stages:
        - *fragment2
2023-12-29最近更新在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。
