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
包裹: