从Concourse的一个例子讲述Pipeline的配置

2017-03-29
4 min read

pipeline

如图上所描述,黑盒就是每个resources,带颜色的盒子就是jobs,不同颜色代表起build的情况。实线代表没有trigger的resource,虚线代表由trigger的resource。

0. Pipeline

---
resources:
- name: director-artifacts  
  type: s3
  source:
    bucket: {{s3-bucket-name}}
    versioned_file: director_artifacts.tgz
    access_key_id: {{s3-access-key-id}}
    secret_access_key: {{s3-secret-access-key}}
- name: cf-template
  type: s3
  source:
    access_key_id: {{s3-access-key-id}}
    versioned_file: cf-template.yml
    bucket: {{s3-bucket-name}}
    secret_access_key: {{s3-secret-access-key}}
- name: cf-artifacts
  type: s3
  source:
    access_key_id: {{s3-access-key-id}}
    versioned_file: cf_artifacts.tgz
    bucket: {{s3-bucket-name}}
    secret_access_key: {{s3-secret-access-key}}
- name: bosh-cli-v2
  type: s3
  source:
    bucket: bosh-cli-artifacts
    regexp: bosh-cli-(.*)-linux-amd64
- name: bosh-create-env-ci
  type: git
  source:
    branch: master
    uri: [email protected]:xliuxu/bosh-softlayer-tools.git

jobs:
- name: deploy-director
  serial: true
  plan:
  - aggregate:
    - get: bosh-cli-v2
      resource: bosh-cli-v2
    - get: bosh-softlayer-tools
      resource: bosh-create-env-ci
  - task: deploy
    file: bosh-softlayer-tools/ci/tasks/create-env-automation/deploy-director-v2.yml
    params:
      SL_VM_PREFIX:         {{director-vm-prefix}} 
      SL_USERNAME:          {{softlayer-username}}
      SL_API_KEY:           {{softlayer-key}}
      SL_DATACENTER:        {{softlayer-datacenter}}
      SL_VLAN_PUBLIC:       {{softlayer-vlan-public}}
      SL_VLAN_PRIVATE:      {{softlayer-vlan-private}}
  - put: director-artifacts
    params:
      file: deploy-artifacts/director_artifacts.tgz

pipeline主要有两大块:resources和jobs。

resources是在pipeline的job会使用到的对象,这些对象会在job的get、put等地方被使用。这些resources都被列在pipeline配置文件的resoureces键上。每一个resource的配置属性包括name、type、source、check_every、tags。name是指明使用的resource名称,必填项。type是表明resource的类型,也是必填项。source是选填项,指定resource 的位置。对于Concourse来说是一个黑盒,随着resource不同的类型而决定。这里常常用到的aws的s3服务器、semver语义化的版本和git。check_every是选填项,指定检测新版本的间隔。默认值是1分钟。tags用来指定workers池中带tag的workers进行这一步操作。

Jobs用来指定pipeline的行为、resources这么加入处理流程。这些resources都被列在pipeline配置文件的resoureces键上。每个job的配置属性包括name、serial、build_logs_to_retain、serial_groups、max_in_flight、public、disable_manual_trigger、interruptible、on_success、on_failure、ensure、plan。name是指明使用的job名称,必填项。接下来几个都不是必填项。serial是指明build执行时是串行还是并行,默认值为false。build_logs_to_retain赋予整数值,指定最新几次的build日志是否保留。serial_groups设置所属的tag,同一tag会按序执行。max_in_flight指定同时执行的build数。public指定build的日志十分能被公开查询,也就是不用用户认证就能在UI上看到,默认是false。disable_manual_trigger默认设置为false, 当设置为true就不能手动触发job的执行。interruptible默认为false,如果设置为true,worker会不等待build的完毕直接退出。on_success是当job执行成功时的处理步骤。on_failure时当job执行失败时的处理步骤。ensure 设置时会不管job是否执行成功或者失败。 plan是必填项,Build Plan执行的计划任务。每个job都有一个单独的build plan。

在这个pipeline里,deploy-director job只能串行执行。并且该job获得两个输入,更新一个输出。这三个resource都在s3上面。job上执行一个task。

1. deploy task

该task会部署一个bosh的director,并且生成一个tarbar‘director-artifacts’,包含bosh-cli-v2的执行文件和bosh-softlayer-tools、cf-template三个文件

Task的配置信息:

---
platform: linux
image: docker:///boshcpi/azure-cpi-release

inputs:
- name: director-artifacts
- name: bosh-softlayer-tools
- name: cf-template

run:
  path: bosh-softlayer-tools/ci/tasks/create-env-automation/deploy-cf.sh

outputs:
- name: cf-artifacts

params:
  deploy_name:                          replace-me
  director_ip:                          replace-me

platform是必填项,表明task的执行环境。除了linux还有windows、darwin等。

inputs是必填项,指定该task期望获得的输入项。而每个输入项由以name、path两个属性来指定输入。其中,name是必填项,表示输入的名称。path是可选的,表示路径。如果没有指明path,输入项的路径就是input名。

run是必填项,指定在容器内执行的命令。run当中有path、args、dir、user。path表示相应的命令的执行路径,是必填项。其他三项都是选填。args是数组类型,每个通过 Fly 执行的pipeline时指定的参数都会添加到这个数组内。dir用来设置执行脚本的工作目录。user显现地设置执行命令的用户,如果未指明,则取决于后台Garden的设置。一般在linux下都是root来执行。

output是选填的。命令执行产生的内容可以通过这个属性来指定。每一个输出都有和输入一样的属性类型。

———

后面的内容下篇在继续。。。

comments powered by Disqus