如何构建Terraform提供程序https://github.com/hashicorp/terraform-provider-aws适用于所有平台?
当我做make build
时,我在Mac上只得到一个二进制文件。
我想为Terraform通常支持的所有平台构建。
您可以通过设置Go工具链理解的环境变量GOOS
和GOARCH
,为特定的单个其他平台进行编译。例如,您可以在供应商的主包中运行以下程序,在x86_64上为Windows构建
GOOS=windows GOARCH=amd64 go install
不幸的是,为提供程序团队支持的所有架构构建的过程是由每个提供程序团队维护的构建过程,因此不同的提供程序可能会有所不同。然而,一种常见的模式——对于AWS提供商来说也是如此——是使用GoReleaser在多个平台上构建、标记和发布版本。
在撰写本文时,AWS提供商的.goreleaser.yml
指定了支持的操作系统和体系结构组合的矩阵。因此,如果安装GoReleaser,则可以使用goreleaser build
为同一组目标构建分发包。
团队使用GoReleaser来管理其发布的其他提供商也应该如此。一些提供者可能会使用其他模式,但在撰写本文时,GoReleaser是Terraform文档中推荐的技术,因此这是一个非常常见的选择。
您可以为所需的操作系统和体系结构传递环境变量GOOS
和GOARCH
。
例如:GOOS=linux GOARCH=ppc64 go build
构建用于linux ppc64体系结构。