嗨,当我将二进制文件推送到 cf 时,我们看到下载了错误的 go 版本推送代码的步骤运行构建命令GOOS="linux" GOARCH=amd64 go build ${LDFLAGS} -o localdeploy/some-app main.gocd本地部署cf push -f 清单.yml注意:localdeploy 文件夹包含 manifest.yml 和 some-app 二进制文件Go.mod文件go 1.16require ( github.com/cloudfoundry-community/go-cfenv v1.18.0 github.com/gin-gonic/gin v1.8.1 github.com/google/uuid v1.3.0 github.com/rs/zerolog v1.28.0 github.com/stretchr/testify v1.8.0)清单文件.yml applications: - name: some-app-1000-snapshot command: ./some-app stack: cflinuxfs3 buildpacks: - https://github.com/cloudfoundry/binary-buildpack.gitThen i see following logs downloading go 1.15.5 instead of go 1.16Below are the logs getting when pushed to cf --- application is working but why it is downloading 1.15 instead of 1.16 which is present in my mod fileStaging app and tracing logs... -----> Download go 1.15.5 -----> Running go build supply /tmp/buildpackdownloads/d612ac0e3047b21e80ecfeae72c39f81 ~ ~ -----> Binary Buildpack version 1.0.46 -----> Download go 1.15.5 -----> Running go build finalize /tmp/buildpackdownloads/d612ac0e3047b21e80ecfeae72c39f81 ~```
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
二进制 buildpack 不会为您的应用程序安装任何东西。它实际上是一个无操作构建包。
由于您已经在本地编译了您的应用程序,因此用于您的二进制文件的 Go 版本是您计算机上本地安装的版本。您可以根据本地安装的内容来控制该版本。
二进制 buildpack 的输出在这里令人困惑,因为您确实看到它下载了旧的 Go 版本。发生这种情况的原因是因为 buildpack 本身是用 Go 编写的,并且您在 manifest.yml 中有指向 buildpack 源代码的 buildpack 定义。因此要运行 buildpack,它必须先编译自己。它需要 Go 来做那件事,所以它下载 Go,构建自己,然后自己运行。这就是你在上面看到的内容Download go 1.15.5
。
大多数(全部?)CloudFoundry 安装将默认使用二进制 buildpack,因此您无需引用源代码。运行cf buildpacks
并从列表中获取二进制 buildpack 的名称。它将类似于binary-buildpack
or binary_buildpack
。编辑您的 manifest.yml 并替换https://github.com/cloudfoundry/binary-buildpack.git
为该值。
现在,当您推送时,它将使用已经编译的现有构建包,您不应该看到有关正在下载 Go 的消息。
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消