如何在本地复现GoReleaser远程构建以生成动态链接二进制文件?
问题:本地GoReleaser构建无法复现远程的动态链接二进制文件
有一个confluentinc/terraform-provider-confluent仓库使用GoReleaser工具编译二进制文件并发布到GitHub发布页。
根据相关issue的描述,标记为v1.32.0的提交生成的正式发布版本包含动态链接的二进制文件——这是预期行为:例如,下载该版本的terraform-provider-confluent_1.32.0_linux_amd64二进制文件后,执行file命令会显示“dynamically linked”:
$ file ~/MyDownloads/terraform-provider-confluent_1.32.0_linux_amd64/terraform-provider-confluent_1.32.0 /Users/klinou/MyDownloads/terraform-provider-confluent_1.32.0_linux_amd64/terraform-provider-confluent_1.32.0: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=8SfNWb1Abn_y718BUN-I/PH1ZOJTKh7G-G89wQMVi/7pnMTwFFJzGpJwJM40fD/vwMzK5ZvGUHoFFCvKApk, stripped
我尝试修改.goreleaser.yml配置以生成静态链接二进制文件,但遇到的问题是:本地运行GoReleaser时无法复现远程构建的动态链接结果——本地构建出的是静态链接文件:
$ git clone https://github.com/confluentinc/terraform-provider-confluent.git $ cd terraform-provider-confluent $ git checkout v1.32.0 $ git log --pretty=oneline | head -n 2 77e1ff645b2beb7c723d72e8a3a45404a86540ab chore: minor version bump v1.32.0 8794b8e9db91abc0386463824349dbbdca406917 #minor Prepare for 1.32.0 release (#382) $ goreleaser build • building... • loading config file file=.goreleaser.yml • loading environment variables • getting and validating git state • building... commit=77e1ff645b2beb7c723d72e8a3a45404a86540ab latest tag=v1.32.0 • parsing tag ... • building binary=dist/terraform-provider-confluent-internal_freebsd_arm_6/terraform-provider-confluent-internal_1.32.0 • building binary=dist/terraform-provider-confluent-internal_windows_arm_6/terraform-provider-confluent-internal_1.32.0.exe • building binary=dist/terraform-provider-confluent-internal_linux_arm64/terraform-provider-confluent-internal_1.32.0 • building binary=dist/terraform-provider-confluent-internal_windows_arm64/terraform-provider-confluent-internal_1.32.0.exe • storing release metadata • writing file=dist/artifacts.json • writing file=dist/metadata.json • build succeeded after 185.72s
执行file命令验证本地构建产物:
$ file dist/terraform-provider-confluent-internal_linux_amd64/terraform-provider-confluent-internal_1.32.0 dist/terraform-provider-confluent-internal_linux_amd64/terraform-provider-confluent-internal_1.32.0: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=mcIeopVb5rXUWUc_eSUS/j1Bzyx4mWzFzh_9rKrtG/KancpatKw1cE9IjTQJmA/t6Dl2Mx7-b1wnGTxHaMx, stripped
结果显示为“statically linked”,和远程发布的动态链接版本不符。请问需要修改哪些配置或调整GoReleaser命令,才能复现远程构建的结果,生成动态链接的二进制文件?
更新:有其他仓库的类似issue与此问题相关。
内容的提问来源于stack exchange,提问作者Kostya Linou
相关产品推荐
相关产品推荐

