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默認灰色 執行成功後變爲綠色, 失敗會變爲紅色