Agentbaker是用於在Azure提供Kubernetes節點的組件集合。
代理商有幾塊
代理商的主要消費者是Azure Kubernetes服務(AKS)。
AKS使用AgentBaker提供Linux和Windows Kubernetes節點。
開發代理商需要一些基本的必要條件:
運行make -C hack/tools install以安裝所有開發工具。
如果您更改用於生成自定義數據或自定義腳本擴展有效載荷的代碼或工件,則應make 。
此將代碼重新運行以將靜態文件嵌入GO代碼,這是在運行時實際使用的。
此外,該運行單位測試(相當於go test ./... )並再生快照testdata。
我們使用Golangci-lint來強制執行風格。
運行make -C hack/tools install以安裝襯裡。
運行./hack/tools/bin/golangci-lint run以運行linter。
我們目前有許多失敗,希望消除。
我們有工作可以在拉動請求下運行Golangci-lint。
該作業使用Linters“無新問題”功能。
只要PR不引入淨新問題,它們就應該通過。
我們也有一份誘使作業來執行提交消息樣式。
我們堅持傳統的提交。
更喜歡單一提交的拉請請求。
要清理過程中的提交,您可以使用git rebase -i來修復提交。
有關更多詳細信息,請參見GIT文檔。
大多數代碼可以通過香草GO單元測試進行測試。
請訪問官方的GitHub鏈接以獲取更多詳細信息。以下是一個簡短的用例。
Shellspec用作單元測試的框架。有2個安裝它的選項。
Shellspec已經包含在Makefile中。您可以通過運行make tools-install或make generate在root(/agentbaker)目錄中進行安裝。
注意: make generate將安裝並運行ShellSpec測試。
如果要在本地計算機中安裝它,請運行curl -fsSL https://git.io/shellspec | sh 。
默認情況下,應安裝在~/.local/lib/shellspec中。為了您的方便,請將其附加到$路徑。示例命令export PATH=$PATH:~/.local/lib/shellspec 。
您需要為測試編寫xxx_spec.sh文件。
例如, AgentBaker/spec/parts/linux/cloud-init/artifacts/cse_install_spec.sh是AgentBaker/parts/linux/cloud-init/artifacts/cse_install.sh的測試文件
要運行所有測試,在AgentBaker文件夾中,只需在root(/agentBaker)目錄中運行bash ./hack/tools/bin/shellspec即可。
bash ./hack/tools/bin/shellspec -x =>帶有-x ,它將顯示用於調試的詳細跟踪。bash ./hack/tools/bin/shellspec -E "<test name>" =>您可以使用-E和測試名稱運行單個測試用例。例如, bash ./hack/tools/bin/shellspec -E "returns downloadURIs.ubuntu."r2004".downloadURL of package runc for UBUNTU 20.04"對於單個測試用例,您也可以使用-xE來進行詳細的跟踪。bash ./hack/tools/bin/shellspec "path to xxx_spec.sh" ,通過提供完整的路徑一個特定的規格文件,您只能運行該規範文件,而不是AgentBaker Project中的所有SPEC文件。例如, bash ./hack/tools/bin/shellspec "spec/parts/linux/cloud-init/artifacts/cse_install_spec.sh" 我們還使用快照數據測試,它們將鍵API的輸出存儲為磁盤上的文件。
我們可以手動驗證快照內容看起來正確。
現在,我們有單位測試可以直接驗證內容而無需在磁盤上留下生成的文件。
有關示例,請參見./pkg/agent/baker_test.go (搜索dynamic-config-dir以查看驗證示例。)。
結帳E2E目錄。
該項目歡迎貢獻和建議。大多數捐款要求您同意撰寫貢獻者許可協議(CLA),宣布您有權並實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問https://cla.opensource.microsoft.com。
當您提交拉動請求時,CLA機器人將自動確定您是否需要提供CLA並適當裝飾PR(例如狀態檢查,評論)。只需按照機器人提供的說明即可。您只需要使用我們的CLA在所有存儲庫中進行一次。
該項目採用了Microsoft開源的行為代碼。有關更多信息,請參見《行為守則常見問題守則》或與其他問題或評論聯繫[email protected]。
CGMANIFEST文件是一個JSON文件,用於在治理不支持組件類型時手動註冊組件。文件名是“ cgmanifest.json”,您可以擁有所需的任意數量,並且可以在存儲庫中的任何地方。
文件路徑: ./vhdbuilder/cgmanifest.json cgmanifest.json
參考:https://docs.opensource.microsoft.com/tools/cg/cgmanifest.html
包裹: