为了账号安全,请及时绑定邮箱和手机立即绑定

将二进制文件推送到 cf 时,Cloud Foundry 下载错误的 Go 版本

将二进制文件推送到 cf 时,Cloud Foundry 下载错误的 Go 版本

Go
桃花长相依 2023-02-21 19:08:20
嗨,当我将二进制文件推送到 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-buildpackor binary_buildpack。编辑您的 manifest.yml 并替换https://github.com/cloudfoundry/binary-buildpack.git为该值。

现在,当您推送时,它将使用已经编译的现有构建包,您不应该看到有关正在下载 Go 的消息。


查看完整回答
反对 回复 2023-02-21
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信