Octopus 开发指南
建立Octopus管理流程
Octopus借鉴了Maven,并基于make提供了一组项目构建管理工具。 生成管理过程包含多个阶段,一个阶段包含多个操作。 为了方便起见,动作的名称也代表当前阶段。 动作的总体流程关系如下所示:
每个动作的说明:
| 动作名称/当前阶段 | 作用 |
|---|---|
generate, gen, g | 通过controller-gen生成octopus的部署清单和deepcopy/runtime.Object实现;通过protoc生成adaptor接口的proto文件 |
mod, m | 下载 Octopus的依赖文件 |
lint, l | 通过golangci-lint来验证octopus,如果安装失败,则回滚到go fmt和go vet。<br/使用 DIRTY_CHECK=true验证整个项目是否在dirty tree中。 |
build, b | 根据操作系统的类型和架构编译octopus,生成二进制文件到bin目录。使用 "CROSS=true "编译支持的平台的二进制文件(在这个repo中搜索 constant.sh文件)。 |
test, t | 运行单元测试 |
verify, v | 使用Kubernetes集群运行集成测试。 使用 CLUSTER_TYPE来指定本地集群的类型,默认为k3d。不需要设置本地集群,也可以使用环境变量USE_EXISTING_CLUSTER=true指出一个现有的集群,然后集成测试将使用当前环境的kubeconfig与现有集群进行通信。 |
package, pkg, p | 打包Docker镜像 |
e2e, e | 运行E2E测试 |
deploy, dep, d | 推送Docker镜像并为当前版本创建manifest镜像。 使用 WITHOUT_MANIFEST=true防止推送manifest镜像,或者使用ONLY_MANIFEST=true只推送manifest镜像,使用IGNORE_MISSING=true在需要时对平台列表中定义的缺失镜像发出警告。 |
执行一个阶段可以运行make octopus <stage name>,例如,在执行test阶段时,请运行make octopus test。 要执行一个阶段,将执行先前顺序中的所有动作,如果运行make octopus test,则实际上包括执行generate,mod,lint,build和test动作。
要通过添加only命令来运行某个动作,例如,如果仅运行build动作,请使用make octopus build only。
要组合多个动作,可以使用逗号列表,例如,如果要按顺序运行build,package和deploy动作,请使用make octopus build,package,deploy。
通过BY环境变量与dapper集成,例如,如果仅通过dapper运行build动作,请使用BY=dapper make octopus build。
使用案例
假设在Mac上尝试以下示例:
在本地主机上运行,当前环境将安装其他依赖项。 如果任何安装失败,您将收到相应的警告。
make octopus build:执行build阶段,然后获取darwin/amd64的可执行二进制文件。make octopus test only:在darwin/amd64平台上执行test动作。REPO=somebody OS=linux ARCH=amd64 make octopus package:执行package动作,完成后可获取linux/amd64的可执行二进制文件和一个Repo名为somebody的Octopuslinux/amd64的镜像。CLUSTER_TYPE=make octopus verify only:使用kind集群执行verify操作。
在本地主机中支持多架构镜像。
CROSS=true make octopus build only: 执行build操作,然后获取受支持平台的所有执行二进制文件。CROSS=true make octopus test only: 目前不支持交叉平台测试。CROSS=true REPO=somebody make octopus package only: 执行package操作,指定镜像的组织名为somebody并构建所有支持的平台的镜像。make octopus package only: 当前不支持darwin平台的镜像.
CROSS=true REPO=somebody make octopus deploy only: 执行deploy操作,然后将所有支持的平台的镜像推送至somebody仓库,并且创建当前版本的Manifest 文件.make octopus deploy only: 当前不支持darwin平台镜像.
在
dapper模式下构建,当前环境中不需要其他依赖项,这类选项适合于构造CI/CD,并具有良好的环境可移植性。BY=dapper make octopus build:执行build阶段,然后获取linux/amd64可执行二进制文件。BY=dapper make octopus test:在linux/amd64平台上执行test操作。BY=dapper REPO=somebody make octopus package only:执行package操作并获得linux/amd64架构和组织名为sombody的镜像。
注意事项
在dapper模式下:
- 不允许使用
USE_EXISTING_CLUSTER=true。
适配器的生成管理
适配器的构建管理与Octopus相似,但执行方式不同。 执行任何适配器的阶段都可以运行make adapter <适配器名称> <阶段名称>。 请查看开发适配器了解更多详细信息。
所有组件的构建管理
随着组件的增加,一个接一个地构建它们的操作变得更加麻烦。 因此,通过指定阶段或动作,构建管理对所有组件执行相同的阶段或动作。 例如,运行make all test将执行Octopus和所有适配器的test阶段。 要执行一个动作,只需输入一个only后缀命令即可。
贡献者工作流程
欢迎进行贡献,请查看CONTRIBUTING以获取更多详细信息。