Concourse是由Pivotal赞助的开源CICD工具,以pipeline机制运行任务并保留执行的状态。
通常状况下,用来配合PCF(Pivotal Cloud Foundry)使用。html
https://github.com/pivotalservices/concourse-pipeline-sampleslinux
Concourse独立抽象出Resource、Job以及Task模型。
Concourse的pipeline将Task、Job、Resource三者有机地结合起来,用yaml文件将Job和Resource集中配置,在容器中build(构建)。ios
执行的基本单元,表现为在一个全新启动的容器中所运行的脚本。
容器已经通过了预处理,所以其中包含了一个输入与输出目录,任务脚本可在这些目录中运行。git
做业(Jobs)是要执行的获取 (get)、放置(put)和任务(task)步骤序列,肯定做业的输入和输出 。
一个做业计划的执行实例被称为一次构建(Build),Concourse中的构建是可重复使用的,由于其中的任务在新的容器中也将从新运行。
所以,构建的工做线程不会受到以前运行结果的变动所影响。
此外,若是某次构建失败了,也能够经过一个名为Fly的Concourse命令行工具在某个容器中再一次在本地运行,经过这种方式实现更快的开发周期。github
管道(pipeline)围绕表明全部外部状态的"资源"(resources)和"与它们交互的做业job"构建。
资源(Resources)用于表示源代码(source code)、依赖项(dependenceis)、部署(deployments)和任何其余外部状态。
资源类型(Resource Types)被定义为管道自己的一部分,使管道更加自包含,并保持 Concourse 自己较小和通用,而无需求助于复杂的插件系统。web
resources是在pipeline的job会使用到的对象,被列在pipeline配置文件的resoureces键上,会在job的get、put等地方被使用。
每个resource的配置属性包括name、type、source、check_every、tags。windows
- name 指明使用的resource名称,必填项。 - type 代表resource的类型,必填项。 - source 选填项,指定resource 的的多个属性。对于Concourse来讲是一个黑盒,随着resource不一样的类型而决定。经常使用项 - check_every 选填项,指定检测新版本的间隔。默认值是1分钟。 - tags 指定workers池中带tag的workers进行这一步操做。
Jobs用来指定pipeline的行为、resources怎么加入处理流程。
每一个job的配置属性包括name、serial、buildlogstoretain、serialgroups、maxinflight、public、disablemanualtrigger、interruptible、onsuccess、onfailure、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。
plan必填项中的配置属性函数
- aggregate, 涉及get、resource - task, 执行用户定义的任务,涉及file(.yml文件格式)、params(参数)属性,file指定工做内容对应的yml文件,取自resource下相关路径 - get,得到指定资源 - put,
### platform platform 必填项,代表task的执行环境。 除了linux还有windows、darwin等。 ### inputs inputs 必填项,指定该task指望得到的输入项 也就是指明向task传递输入的文件 每一个输入项由以name、path两个属性来指定输入。 - name是必填项,表示输入的名称。 - path是可选的,表示路径。若是没有指明path,输入项的路径就是input名。 ### run run 必填项,指定在容器内执行的命令。 run当中有path、args、dir、user。 - path 表示相应的命令的执行路径,是必填项。其余三项都是选填。 - args 数组类型,每一个经过 Fly 执行的pipeline时指定的参数都会添加到这个数组内。 - dir 用来设置执行脚本的工做目录。 - user 显现地设置执行命令的用户,若是未指明,则取决于后台Garden的设置。通常在linux下都是root来执行。 ### output output 选填项。命令执行产生的内容能够经过这个属性来指定。 每个输出都有和输入同样的属性类型。
fly是Concourse的命令行工具(cli),能够从命令行管理Concourse实例工具
安装fly在Local PC(win7 64bit)
下载安装包: https://github.com/concourse/concourse/releases/download/
解压后,将fly.exe加入到系统环境变量PATH
安装配置完成后,运行fly -v命令查看版本是否与Concourse平台版本一致。
若是不一致,在使用fly命令时,会出现告警信息,可能会影响命令执行结果。
运行fly -h
或者fly -help
得到帮助信息。
从帮助信息中能够看到命令的别名, 便于命令的书写。
# abbreviation -t --target -p --pipeline -c --config -l --load-vars-from -v --var -p --pipeline -j --job -b --build # aliases up unpause-pipeline dp destroy-pipeline gp get-pipeline sp set-pipeline ps pipelines js jobs tj trigger-job ab abort-build bs builds w watch
# Login fly --target <targetName> login --team-name <teamName> --concourse-url <concourseUrl> # Set/update pipeline fly --target <targetName> set-pipeline --pipeline <pipelineName> --config pipeline.yml --load-vars-from config.yml --load-vars-from credentials.yml --var test_var=test-value fly -t <targetName> sp -p <pipelineName> -c pipeline.yml -l config.yml -l credentials.yml -v test_var=test-value # Unpause pipeline fly --target <targetName> up -p <pipelineName> fly -t <targetName> up -p <pipelineName> # Unpause job fly --target <targetName> up -j <pipelineName>/<jobName> fly -t <targetName> up -j <pipelineName>/<jobName> # Trigger job fly -t <targetName> tj -j <pipelineName>/<jobName> # Trigger job and start watching the log fly -t <targetName> tj -j <pipelineName>/<jobName> -w # Abort the job build fly -t <targetName> ab -j <pipelineName>/<jobName> -b <buildNumber> # Destory pipeline fly -t <targetName> dp -p <pipelineName> # List pipelines fly -t <targetName> ps # List jobs fly -t <targetName> js -p <pipelineName> # List all the job building history fly -t <targetName> bs -p <pipelineName> # List job building history fly -t <targetName> bs -j <pipelineName>/<jobName> # check pipeline resource fly -t <targetName> resources -p <pipelineName> # check resources log fly -t <targetName> check-resource -r <pipelineName>/<resourceName> --watch # Show the job build logs fly -t <targetName> w -j <pipelineName>/<jobName> -b <buildNumber> # List jobs detail ???js??? fly -t <targetName> gp -p <pipelineName> js
### How to check the pipeline Step-1: ` fly -t <target Name> up -p <pipeline Name> ` Step-2 Checking Current builds under job: `fly -t <target name> builds –j <concourse pipeline name>/<concourse job name>` Step-3 abort the previous pending builds then re-run job: `fly –t <target name> ab –j <pipeline name>/<concourse job> -b <build number>` Step-4 checking pipeline Resource if Step3 has no any pending builds: ` fly -t <target Name> resources -p <pipeline Name>` Step-5 check resources log : fly -t <target name> check-resource -r <concourse pipeline name>/<concourse resource name> --watch ` Step-6 fix the error at step3 if need. If step 5 has no error, please wait it.
Tutorial
A linear sequence of tutorials for learning how to use Concourse.
其余
黑色的是资源 Resource
Plan : task要作的事情
job默认灰色 执行成功后变为绿色, 失败会变为红色