CDS是一款自動化軟件,您可以在軟件上建立多種自動化作業方式,有效提升企業工作效率,優化復雜的工作流程,您可以在軟件上配置多種管道,將項目計劃節點和流程設置為管道,可以建立各種管道之間的連接,可以按照工作順序連接管道,可以執行多線程、多并發的工作流程,充分發揮能,解決平臺訪問人數很多導致延遲、奔潰的問題;軟件提供很多組件內容,支持CDSCTL組件,部署該組件可以通過命令行執行程序,支持引擎組件,引擎是CDS的核心組件,支持CDN組件,CDN是專門用于接收和檢索志的服!
CDS功能
CDS是企業級連續交付和DevOps自動化開源平臺。
CDS是OVH的第三代CI / CD工具。這是在CI / CD領域12年經驗的最終結果。熟悉該行業的大多數標準工具,我們發現對于我們確定的四個關鍵方面,沒有一個完全符合我們的期望。這就是CDS試圖解決的問題。
CDSCTL
CI / CD平臺最強大的命令行。cdsctl是CDS命令行-您可以使用它編寫腳本,cdsctl還提供一些很酷的命令,例如cdsctl shell,無需打開瀏覽器即可瀏覽您的項目和工作流程。
CDS工人
管道是按順序構造的,包含一個或多個并發作業。作業將由工人執行。二進制工作程序可從CDS Job獲得
項目
CDS項目匯集了多個實體,例如管道,應用程序,工作流,環境。一個項目還允許鏈接一個或多個存儲庫管理器,例如github,bitbucket,gitlab…
一個項目通常與一個或多個具有不同ACL的組相關聯。
整合方式
集成啟用了CDS上的某些功能。
它可能涉及工件的存儲,存儲庫管理器,可用于觸發工作流的鉤子,用于生成工作程序的基結構。
管道配置
管道是按順序構造的,包含一個或多個并發作業。
工作流程配置
CDS工作流程允許您使用條件分支將管道與手動或自動門進行鏈接。
工人模型
CDS的目標是在需要時啟動,該應完全符合您的所有要求。為了自動按需縮放,可以注冊一個工人模型。
模型的目標是根據體系結構,預安裝的二進制文件或庫來描述給定Docker / ISO映像的功能。
管道
管道描述了如何執行一些事情才能獲得預期的結果。在CDS中,管道屬于單個項目,并且可以與該項目的應用程序一起使用。
管道是在連續的結構化階段包含一個或多個并發作業。
可以對CDS管道進行參數設置。這樣,當您具有類似的工作負載時,您就可以重用相同的管道。例如,您可以使用相同的管道先在生產前環境中部署,再部署到生產環境中。
一個?階段是一組將并行運行的作業。如果上一個階段成功,則按順序執行各個階段。
讓我們來看一個真實的用例:構建CDS的管道。該管道包括四個階段:
在構建最小階段是推出所有的Git分支。此階段的主要目標是編譯Linux版本的CDS二進制文件。
在構建其他OS /拱階段只推出在主分支。此階段編譯os / arch支持的所有二進制文件:linux,openbsd,freebsd,darwin,windows – 386,amd和arm。
該包裝階段推出了針對所有的Git分支。此階段準備docker映像和Debian軟件包。
最后,無論Git分支是什么,都將啟動Publish階段。
只要有可能,大多數任務將并行執行。這樣會產生非??焖俚姆答仯虼宋覀儗⒑芸熘谰幾g是否正確。
階段
通常,在CDS中,構建管道由以下階段構成:
編譯階段:構建二進制文件
分析和單元測試階段:運行所有單元測試并分析代碼質量
打包階段:構建最終的軟件包,虛擬機映像或Docker映像。
一個階段?是一組將并行運行的作業。如果上一個階段成功,則按順序執行各個階段。
您可以在舞臺上定義觸發條件,以在給定條件下啟用/禁用它。例如,您可能要在所有分支上運行“編譯階段”和“分析與單元測試”階段,但要專門在“打包階段”master和dlop分支上運行。
CDS軟件特色
彈
CDS的資源/工作是按需啟動的,以保證用戶的低等待時間,不會過度消耗閑置的資源。
可擴展的
在CDS中,任何類型的行動(Kubernetes和OpenStack部署,推送到Kafka,測試CVE……)都可以在高級插件中捕獲,作為用戶的構建模塊使用。這些插件的編寫和使用都很簡單,所以很容易以有效和無壓力的方式滿足最奇特的需求。
靈活,但簡單
CDS可以運行復雜的工作流程,有各種中間步驟,包括構建、測試、部署1/10/100、手動或自動門、回、條件分支……這些工作流程可以作為代碼存儲在git倉庫中。CDS為Core團隊最常見的場景提供了基本的工作流程模板,以便于采用過程。這樣一來,從無到有建立一個功能的CI/CD鏈就會變得快速而簡單。
自助服務
最后,一個關鍵的方面是自助服務的想法。一旦用戶創建了CDS項目,他們就可以在這個空間里完全自主,可以自由地管理管道,委托訪問權限等。所有用戶都可以根據自己的需要自由地定制他們的空間,并在開箱即用的基上進行建設。個化工作流程模板、插件、在自定義虛擬機口味或自定義硬件上運行構建和測試……所有這些都可以在沒有CDS管理員的任何干預下完成。
CDS教程
從存儲庫導入CDS工作流
在本教程中,您將從現有的git存儲庫創建CDS工作流。
該存儲庫必須添加.cds/目錄。
使用Web UI時,將“按代碼”創建CDS工作流。
先決條件
在您的CDS實例上擁有一個帳戶
在您的CDS實例上設置一個GitHub,Bitbucket Server或GitLab之類的存儲庫管理器。
準備你的git倉庫
初始化存儲庫中的cds文件的最簡單方法是遵循第一個教程
創建管道文件 .cds/build.pip.yml
創建應用程序文件 .cds/cdsdemo.app.yml
創建工作流程文件 .cds/cdsdemo.yml
從UI創建工作流程
在您的CDS項目-高級選項卡上附加存儲庫管理器
轉到“工作流程”標簽,單擊“創建工作流程”
單擊“來自存儲庫”,選擇一個存儲庫管理器
選擇一個git存儲庫,描述如何克隆它,單擊“存儲庫”
顯示找到的文件,單擊“創建工作流程”按鈕
顯示簡歷頁面,單擊“查看工作流程”
查看工作流程
構建和部署標準應用程序
在本教程中,您將使用Web UI創建CDS工作流。
使用兩個管道創建工作流:一個用于構建,另一個用于部署
發現應用程序和環境概念。
發現運行條件。
本教程似乎很長,請放心,它非常詳細,需要10到15分鐘的時間才能嘗試。
您將使用許多CDS概念,發現管道的重用,以及如何使用CDS變量。
1-創建您的CDS項目
讓我們創建一個項目。在頂部導航欄上,單擊“創建項目”。
輸入項目名稱
當您要使用cdsctl時,項目密鑰將非常有用。
點擊“創建”按鈕。
2-在您的項目上添加存儲庫管理器
現在創建了項目,您必須鏈接存儲庫管理器。確保在您的CDS實例上設置了GitHub,Bitbucket Server或GitLab這樣的存儲庫管理器。
選擇“高級”部分
在“鏈接到資源庫管理器”部分中,選擇“ github”,單擊“連接”
顯示一個彈出窗口,單擊“單擊此處”以最終確定與GitHub的鏈接。這樣,您就可以允許CDS在GitHub上創建鉤子。
在這里,GitHub與您的CDS項目建立了良好的鏈接。
3-創建一個應用程序,將其鏈接到一個Git倉庫
您有一個項目,已鏈接到GitHub。讓我們創建一個應用程序。
CDS應用程序對于鏈接到Git存儲庫很有用。
轉到“項目”->“應用程序”選項卡,單擊“創建新應用程序”
輸入應用程序名稱,此處為“ my-java-app”
轉到高級選項卡,選擇一個存儲庫
展開配置,選擇“ https”。如果您的存儲庫是公開的,則可以保留空白字段,單擊“保存”
4-在您的應用程序上添加變量
您已經有了一個應用程序,讓我們創建一個應用程序變量。我們將在Job中進一步使用它。
選擇變量選項卡,名稱為“ my-vaable”,鍵入“ stng”,值為“ my-value”
點擊“保存”
5-創建工作流程
我們開始吧,您將創建您的第一個工作流程。
轉到項目->工作流程選項卡
輸入工作流程名稱,單擊下一步
現在,您必須選擇第一個管道。由于您還沒有管道,因此您將創建一個新管道,名為“ build-pipeline”。點擊下一步
現在,您必須選擇一個應用程序。選擇您的應用程序“ my-java-app”,單擊“下一步”。
我們不需要構建管道的環境,請點擊“完成”
6-編輯用于構建應用程序的第一個管道
使用名為“ build-pipeline”的空管道初始化工作流。您現在必須創建自己的第一份工作。
在您的工作流程中,選擇管道“ build-pipeline”,單擊“編輯管道”。
點擊“添加工作”
添加第一步“ CheckoutApplication”
添加第二步“腳本”。腳本的內容是`mvn package`
第三步是“工件上傳”,以上傳構建的二進制文件
最后一步是“ JUnit”。此步驟“始終執行”,使您可以在UI上查看測試結果。
關于“ build-pipeline”的最后一件事:當您使用mvn時,您可能想要添加mvn和java。單擊需求鏈接,添加二進制文件的前提條件。
7-在工作流程中添加一個鉤
在此示例中,我們創建了一個工作流來構建和部署應用程序。這是標準的持續集成和持續交付工作流程。
因此,我們必須在每個git分支的每次提交時觸發此工作流。如果構建正常,這對于從所有開發人員編譯代碼和部署master分支將很有用。
該應用程序鏈接到GitHub Git存儲庫,我們有兩種選擇來自動觸發工作流程:
添加一個Git倉庫Webhook
或添加一個Git倉庫詢器。
兩者之間的區別很簡單:如果無法從GitHub訪問您的CDS實例,則Git存儲庫Webhook不起作用。因此,我們必須添加一個Git存儲庫詢器
選擇管道根,單擊“添加鉤子”
選擇一個Git倉庫詢器
詢器已添加并鏈接到您的第一個管道
8-運行您的工作流程
現在該啟動您的工作流程了,單擊綠色按鈕“運行工作流程”。
在彈出窗口中,您可以選擇git分支,單擊綠色按鈕“確定”
正在構建的第一個管道(您可以雙擊它,這是一個快捷方式),可以看到志。
管道完成了,這是成功的。
單擊“測試”選項卡,可以看到單元測試。
單擊“工件”,您將看到已構建的工件。
9-添加用于在登臺中部署應用程序的管道
好的,我們有一個要部署的工件。讓我們創建一個部署管道,并在構建管道之后觸發它。
選擇“構建管道”
創建一個“部署管道”,單擊“下一步”
選擇應用程序“ my-java-app”,單擊“下一步”
創建一個名為“ staging”的新環境,單擊“ Finish”
工作流現在包含兩個管道
10-添加用于在生產中部署應用程序的管道
與之前相同,我們將添加一個管道以在生產環境中進行部署。
選擇“部署管道”
選擇“部署管道”,單擊“下一步”
選擇應用程序“ my-java-app”,單擊“下一步”
創建一個名為“生產”的新環境,單擊“完成”
工作流現在包含兩個管道
11-在部署之前添加運行條件
因此,現在,您有了工作流來構建應用程序并將其部署在登臺環境中。但是,我們不想部署所有分支中的所有內部版本,我們只希望部署master分支。讓我們在上創建一個“運行條件” git.branch,以在git branch等于時自動觸發登臺部署master。
選擇“部署管道”,單擊“編輯運行條件”
添加一個運行條件“ git.branch”,其值為“ master”,單擊“加號”按鈕
點擊“保存”
12-在生產環境中部署之前添加運行條件
與登臺上的“部署管道”相同,我們將在部署在“生產”中的管道上添加條件。
選擇“ deploy-pipeline_2”,單擊“編輯運行條件”
添加一個運行條件“ cds.manual”,其值為“ true”,單擊“加號”按鈕
13-編輯工作流程中管道的名稱
在您的項目中,您有兩個管道:“ build-pipeline”和“ deploy-pipeline”?!安渴鸸艿馈笔褂昧藘纱危阂淮斡糜凇暗桥_”部署,另一次用于“生產”。
讓我們重命名工作流程上的管道。
選擇“部署管道”,在左上方,單擊“編輯”按鈕。重命名為“自動部署管道”
對第二個“部署管道”執行相同的作,將其重命名為“ manual-deploy-pipeline”
14-編輯“部署管道”
“部署管道”目前為空。讓我們添加一些東西來模擬部署。我們將從應用程序中使用CDS變量。
選擇“自動部署管道”,單擊側欄上的“編輯管道”
添加步驟“工件下載”和步驟“腳本”。
該腳本包含 echo “deploying {{.cds.application}} with vaable {{.cds.app.my-vaable}} on envinment {{.cds.envinment}}”
15-運行您的工作流程
讓我們運行工作流程。
管道“自動部署管道”將自動啟動。
該管道上的腳本步驟包含 deploying my-java-app with vaable my-value on envinment staging沒有按預期啟動生產中的管道部署。
16-在生產中運行部署
使用,在“手動部署管道”上添加運行條件時cds.manual = true,必須單擊“運行”以在生產環境中啟動部署。
選擇“手動部署管道”,單擊左上方的“播放”按鈕
腳本步驟顯示 deploying my-java-app with vaable my-value on envinment pduction