从Concourse的一个例子讲述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
是选填的。命令执行产生的内容可以通过这个属性来指定。每一个输出都有和输入一样的属性类型。
———
后面的内容下篇在继续。。。