Gocd 學(xué)習(xí)筆記

一犁享、GOCD 一些基礎(chǔ)概念

1. Task
任務(wù)或構(gòu)建任務(wù)是需要執(zhí)行的操作文兢。 通常是一個(gè)單一的命令
2. Job

  • 由多個(gè) Tasks 組成
  • 每個(gè)任務(wù)都是作為一個(gè)獨(dú)立的程序來運(yùn)行的
  • Task 執(zhí)行方式為順序執(zhí)行娱两,Task 之間是相互獨(dú)立的熔掺,即修改的環(huán)境變量不會(huì)影響到其它 Task
  • 一個(gè) Task 失敗邑茄,則該 Job 失敗蛋叼,除非另有說明落包,否則其余 Task 將不會(huì)運(yùn)行

3. Stage

  • 由多個(gè) Jobs 組成,每個(gè) Job 是獨(dú)立的
  • Job 執(zhí)行方式為并行部蛇,由于 Job 之間是相互獨(dú)立的,某個(gè) Job 失敗后咐蝇,其它的 Job 會(huì)被運(yùn)行到完成
  • 一個(gè) Job 失敗涯鲁,則該 Stage 失敗

4. Pipeline

  • 由多個(gè) Stages 組合而成

  • Stage 執(zhí)行方式為順序執(zhí)行,一個(gè) Stage 失敗有序,將不會(huì)執(zhí)行后續(xù) Stage

  • 一個(gè) Stage 失敗抹腿,則該 Pipeline 失敗

5. Materials and Triggers

  • 使用Git、SVN時(shí)旭寿,GoCD 可以輪詢檢測其變更警绩,以觸發(fā) Pipeline,也可以手動(dòng)觸發(fā)

  • Pipeline 可以有多個(gè) material(可以簡單的理解成代碼源)盅称,任何一個(gè) material 變更都可以觸發(fā) Pipeline

6. Pipeline dependency material

  • Pipeline 和 Pipeline 之間可以產(chǎn)生依賴關(guān)系肩祥,例如當(dāng) Pipeline1 完成之后觸發(fā) Pipeline2


    image.png
  • Pipeline 和Pipeline 之間也可以通過上游 Pipeline 中的某個(gè) Stage 完成后后室,觸發(fā)下游 Pipeline 執(zhí)行

    image.png

    7. Fan-out and fan-in
    Fan-out:

  • 一個(gè) material 的完成,觸發(fā)下游多個(gè) Pipeline 混狠,該 material 不一定是 Pipeline 依賴 material 岸霹,可以是任何 material

image

Fan-in:

  • 多個(gè)上游 material 觸發(fā)下游 Pipeline,在觸發(fā)下游 Pipeline 之前将饺,GoCD 將確保上游 Pipeline 的修訂是一致的

如圖贡避,git 觸發(fā) Pipeline1 和 Pipeline2 ,而 Pipeline1 的 Stage2 的完成和Pipeline2 的 Stage1 的完成是觸發(fā) Pipeline3 的條件予弧,如果 Pipeline2 的 Stage1的完成較快而 Pipeline1 的 Stage2 完成較慢刮吧,Pipeline 會(huì)等待 Pipeline1 的Stage2 的完成后被觸發(fā),它不會(huì)觸發(fā)與 Pipeline1 的不一致或舊的修改, 以確保一致性掖蛤。

image

8. Value Stream Map (價(jià)值流圖)

  • VSM 是端到端的視圖杀捻,詳細(xì)描述了它的上下游依賴關(guān)系,在決定哪個(gè) Pipeline
    被觸發(fā)時(shí)坠七,GoCD 的 fan-in 和 fan-out 解決方案將始終如一地處理所有依賴項(xiàng)水醋。

如圖旗笔,當(dāng) Repo1(git) 中有新的提交時(shí)彪置,GoCD 不會(huì)立即觸發(fā) Pipeline5,它將等待 Pipeline1 觸發(fā)并成功完成蝇恶,然后等待 Pipeline4 觸發(fā)并成功完成拳魁,最后,

它將觸發(fā) Pipeline5 與 Pipeline1 使用相同的 Repo1 相同的修訂版本撮弧。

image

9. Artifacts

  • GoCD 中的 Artifacts 是在 Pipeline 運(yùn)行期間最常生產(chǎn)的文件或目錄潘懊,每一個(gè)Job 都可以選擇發(fā)布 Artifacts,即文件或目錄贿衍。在運(yùn)行 Job 之后授舟,GoCD 將確保已發(fā)布指定的 Artifacts,并向用戶和其他下游階段和管道提供贸辈。

  • GoCD 提供了一種特殊的任務(wù)释树,稱為“獲取 Artifacts”,它允許從任何祖先 pipline 中提取和使用 Artifacts擎淤,即當(dāng)前 pipline 上游的任何 pipline奢啥。GoCD 將確保獲取 Artifacts 的正確版本,而不考慮系統(tǒng)中可能發(fā)生的任何其他事情嘴拢。

10. Agent

  • GoCD 的 agent 是 GoCD 生態(tài)系統(tǒng)的工人桩盲。系統(tǒng)中配置的所有任務(wù)都運(yùn)行在GoCD agent 上。GoCD 服務(wù)器輪詢 material 的變化(這發(fā)生在GoCD服務(wù)器本身)席吴,然后赌结,當(dāng)檢測到更改并需要觸發(fā) pipline 時(shí)捞蛋,相應(yīng)的 job 被分配給代理,以便他們執(zhí)行任務(wù)柬姚。

  • agent 選擇分配給他們的 job 襟交,在 job 中執(zhí)行task ,并向 GoCD 服務(wù)器報(bào)告 job 狀態(tài)伤靠。然后捣域,GoCD 服務(wù)器整理來自不同 job 的所有信息,然后決定 stage 的狀態(tài)宴合。

  • 每個(gè)部署業(yè)務(wù)的機(jī)器上都必須安裝 agent
    11. Resources

  • 資源是我們打在 Agent 的標(biāo)簽,以表示哪些 Agent 能運(yùn)行這個(gè)Job

如圖焕梅,我們運(yùn)行一個(gè)需要 Firefox 資源的 Job,那么只有 Agent1 和 Agent3 滿足卦洽,如何知道 Agent1 和 Agent3 上有 Firefox 贞言?在這兩個(gè) Agent 上打上標(biāo)簽"Firefox(or XXX)"

image.png

12. Environments

  • GOCD 中的 Environments 是對(duì) Pipeline 和 Agent 進(jìn)行分組和隔離的一種方式
  • Pipeline 可以與最大的一個(gè) Environment 相關(guān)聯(lián)。
  • Agent 可以與多個(gè)Environment 或任何 Environment 相關(guān)聯(lián)阀蒂。
  • Agent 只能在其關(guān)聯(lián)的 Environment 中提取屬于 Pipeline 的作業(yè)该窗。
  • 與 Environment 相關(guān)聯(lián)的 Agent 不能在與任何 Environment 無關(guān)的 Agent 中獲取 job 。
    13. Environment Variables
  • 環(huán)境變量在各層級(jí)都可以配置蚤霞,原則類似于全局變量和局部變量的概念酗失,最底層的變量值會(huì)覆蓋上層的變量值
    注:此環(huán)境變量跟上面的 Environment 不要混淆,前者指 a=1 變量賦值昧绣,后者為運(yùn)行環(huán)境


    image.png

    上圖各變量的最終值為:

ENV_ENV => 1
ENV_PIP => 2
ENV_STG => 3
ENV_JOB => 4
MY_VAR => 4

二规肴、Pipelines Dashboard in GoCD

以我的 dashboard 為例,定義了兩個(gè) pipeline group夜畴, 在 dashboard 里 pipeline 被列在他們所屬的 pipeline group 下面

image.png

注:

  1. “觸發(fā)” 按鈕強(qiáng)制一條 pipeline 開始構(gòu)建活動(dòng)拖刃。
  2. 帶有[選項(xiàng)按鈕的觸發(fā)器], 允許選擇 pipeline 應(yīng)該構(gòu)建的 material 的修訂,并觸發(fā) pipeline贪绘。


    image.png
  3. “暫投夷担”(Pause)按鈕暫停 pipeline 的調(diào)度

Dashboard 上的 Personalize 按鈕來定制和控制 Dashboard 看到的 Pipeline ∷肮啵可以選擇要查看的 Pipeline 均函,在這個(gè)列表中,并通過單擊“Apply”按鈕來保存選擇垄琐。從那時(shí)起边酒,Pipeline 指示板將只顯示選擇的。

如果一個(gè)新的 Pipeline 被其他人添加狸窘,Pipeline 也會(huì)顯示在該賬戶的的Dashboard 上墩朦。取消(Show newly created pipelines)復(fù)選框,以防止它們出現(xiàn)在我們的 Dashboard 上翻擒。


image.png

有四種配置 Pipeline 的方法:

  1. 通過管理界面來配置 Pipeline氓涣。

  2. 通過 Pipeline 界面的 “Config XML” 選項(xiàng)卡直接編輯 XML牛哺。

  3. 還可以通過調(diào)用配置API來配置 Pipeline

  4. 通過文件系統(tǒng)直接進(jìn)行 XML 編輯進(jìn)行配置后。默認(rèn)情況下劳吠,Go服務(wù)器每5秒對(duì)文件系統(tǒng)進(jìn)行輪詢引润,以更改 cruise-config.xml。該文件的位置顯示在 Admin >配置XML選項(xiàng)卡的右上角痒玩。

三淳附、Agent

Agent 頁面列出了服務(wù)器可用的所有代理和它們當(dāng)前的狀態(tài)。當(dāng) Agent 首次連接到服務(wù)器時(shí)蠢古,它是 “Pending”(掛起狀態(tài))奴曙。管理員必須在 GoCD 將工作安排在該Agent 之前啟用 Agent。

管理員也可以禁用 Agent 草讶。GoCD不會(huì)為一個(gè)被 Agent 的代理安排工作洽糟。如果在Agent 被禁用時(shí)正好有一項(xiàng)工作正在該 Agent 上建立,則該工作將被完成;然后才禁用 Agent堕战。管理員在重新安排工作之前需要啟用 Agent坤溃。

管理員可以選擇刪除不再需要的 Agent。在刪除 Agent 之前嘱丢,必須禁用該Agent 薪介。處于(building)狀態(tài)或者(cancelled)狀態(tài)的 Agent 不能被刪除。

可以將資源與 Agent 關(guān)聯(lián)起來屿讽,首先選擇您感興趣的 Agent昭灵。然后點(diǎn)擊 Resources 按鈕。

四伐谈、安裝

服務(wù)器使用的默認(rèn)端口都是 8153(HTTP端口)和 8154(HTTPS端口),一個(gè)或多個(gè) Agent 可以安裝在任何節(jié)點(diǎn)上试疙,而不一定是安裝 GoCD 服務(wù)器的節(jié)點(diǎn)诵棵。唯一的要求是 GoCD 服務(wù)器的端口8153和8154可以從安裝 Agent 的節(jié)點(diǎn)訪問。

服務(wù)器硬件要求:
  • 內(nèi)存 - 推薦最少 1GB 或者 2GB
  • CPU - 最低2核,2GHz 主頻
  • 硬盤 - 最低要求有1GB的剩余空間

依賴關(guān)系:

  • Java Runtime Environment (JRE) version 8
  • Git or other

運(yùn)行 GoCD 服務(wù)器的主機(jī)應(yīng)該有一個(gè)單獨(dú)的磁盤分區(qū)來存儲(chǔ) GoCD Artifacts祝旷。Artifacts存儲(chǔ)庫可以快速填充(特別是在存儲(chǔ)大型二進(jìn)制文件時(shí))履澳。如果不為Artifacts 創(chuàng)建單獨(dú)的分區(qū),系統(tǒng)磁盤將被填滿怀跛【啻可以在頁面 Pipeline Management 里或者 config xml 里指定 Artifacts 存儲(chǔ)位置。
以我的項(xiàng)目為例吻谋,我的 server 是用 docker 啟動(dòng)的忠蝗,在docker-compose指定了存儲(chǔ)卷


image.png
image.png

cr-uise--confi-g.xml 和 /godata/artifacts 在 同級(jí)目錄下 /godata/ 下,指定了 artifacts 的位置:

<cruise>
  <server artifactsdir="artifacts">
  ...
  </server>
</cruise>

如果需要更改 artifacts 存儲(chǔ)庫漓拾,那么安全的方法是:

  • 暫停所有 Pipeline阁最,等待 agent 網(wǎng)格中的所有活動(dòng)作業(yè)完成(所有 agent 都處于狀態(tài) "idle")
  • 關(guān)閉 GoCD 服務(wù)器
  • 將 artifacts 存儲(chǔ)庫復(fù)制到新位置
  • 按照上面的描述手動(dòng)編輯 GoCD 的配置文件戒祠,告訴 GoCD 在哪里可以找到新的 artifacts
  • 重啟GoCD服務(wù)器
Agent所在機(jī)器的硬件要求:
  • 內(nèi)存 - 推薦最少 128MB 或者 256MB
  • CPU - 最低2GHz主頻
    依賴關(guān)系:
  • 需要與 GoCD 服務(wù)器的 Java 版本相同
    Agent 本身并不需要太多內(nèi)存或 CPU。 但是速种,需要確保部署為構(gòu)建 Agent 的節(jié)點(diǎn)具有足夠的資源來構(gòu)建項(xiàng)目 --包括足夠的磁盤空間來檢查源代碼控制之外的源代碼姜盈。代碼控制工具(Git、SVN等)的客戶端軟件需要安裝在所有構(gòu)建 Agent 上配阵。另外馏颂,需要安裝任何其他軟件來構(gòu)建應(yīng)用程序(如不直接從源控制中檢出的項(xiàng)目源碼),需要安裝(例如棋傍,Maven或Rake)饱亮。
    安裝 agent 之后需要將 GO_SERVER_URL 配置為 server 的地址
    參考:
    https://docs.gocd.org/current/
    https://www.cnblogs.com/elisun/p/7071536.html

`

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市舍沙,隨后出現(xiàn)的幾起案子近上,更是在濱河造成了極大的恐慌,老刑警劉巖拂铡,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壹无,死亡現(xiàn)場離奇詭異,居然都是意外死亡感帅,警方通過查閱死者的電腦和手機(jī)斗锭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來失球,“玉大人岖是,你說我怎么就攤上這事∈蛋” “怎么了豺撑?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長黔牵。 經(jīng)常有香客問我聪轿,道長,這世上最難降的妖魔是什么猾浦? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任陆错,我火速辦了婚禮,結(jié)果婚禮上金赦,老公的妹妹穿的比我還像新娘音瓷。我一直安慰自己,他們只是感情好夹抗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布绳慎。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偷线。 梳的紋絲不亂的頭發(fā)上磨确,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音声邦,去河邊找鬼乏奥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亥曹,可吹牛的內(nèi)容都是我干的邓了。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼媳瞪,長吁一口氣:“原來是場噩夢啊……” “哼骗炉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛇受,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤句葵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后兢仰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乍丈,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年把将,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轻专。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡察蹲,死狀恐怖请垛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洽议,我是刑警寧澤宗收,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站绞铃,受9級(jí)特大地震影響镜雨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儿捧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挑宠。 院中可真熱鬧菲盾,春花似錦、人聲如沸各淀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至临谱,卻和暖如春璃俗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悉默。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工城豁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抄课。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓唱星,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跟磨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间聊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 通過文章“Spark核心概念RDD”我們知道,Spark的核心是根據(jù)RDD來實(shí)現(xiàn)的抵拘,Spark Scheduler...
    尼小摩閱讀 675評(píng)論 1 9
  • 1哎榴、 性能調(diào)優(yōu) 1.1、 分配更多資源 1.1.1僵蛛、分配哪些資源尚蝌? Executor的數(shù)量 每個(gè)Executor所...
    Frank_8942閱讀 4,526評(píng)論 2 36
  • 1.1、 分配更多資源 1.1.1墩瞳、分配哪些資源驼壶? Executor的數(shù)量 每個(gè)Executor所能分配的CPU數(shù)...
    miss幸運(yùn)閱讀 3,174評(píng)論 3 15
  • 急于討好是一種病吧。要學(xué)會(huì)和自己相處啊喉酌。說著說著不由得凄涼落淚了热凹。
    未肯十分紅閱讀 191評(píng)論 1 0
  • 一個(gè)人習(xí)慣了選擇平靜,每天樂此不疲的寫詩歌泪电,只是喜歡而已般妙,并沒有任何想著商業(yè)化的心思,只是想著把自己最真切的情懷用...
    田萍閱讀 150評(píng)論 2 6