[英]IBM Cloud Foundry Err: Unable to determine Go version to install
[英]Cloud foundry downloading wrong go version when binary file pushed to cf
嗨,當我將我的二進制文件推送到 cf 時,我們看到錯誤的 go 版本被下載
推送代碼的步驟
GOOS="linux" GOARCH=amd64 go build ${LDFLAGS} -o localdeploy/some-app main.go
注意:localdeploy 文件夾包含 manifest.yml 和 some-app 二進制文件
Go.mod文件
go 1.16
require (
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.git
Then i see following logs downloading go 1.15.5 instead of go 1.16
Below 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 file
Staging 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 ~```
二進制 buildpack 不會為您的應用程序安裝任何東西。 它實際上是一個無操作構建包。
由於您已在本地編譯應用程序,因此用於二進制文件的 Go 版本是您計算機上本地安裝的版本。 您可以根據本地安裝的內容來控制該版本。
二進制 buildpack 的 output 在這里令人困惑,因為您確實看到它下載了較舊的 Go 版本。 發生這種情況的原因是因為 buildpack 本身是在 Go 中編寫的,並且您在 manifest.yml 中有指向 buildpack 源代碼的 buildpack 定義。 因此要運行 buildpack,它必須先編譯自己。 它需要 Go 來執行此操作,因此它下載 Go,自行構建,然后自行運行。 這就是您看到的內容Download go 1.15.5
。
大多數(全部?)CloudFoundry 安裝將默認使用二進制 buildpack,因此您無需引用源代碼。 運行cf buildpacks
並從列表中獲取二進制 buildpack 的名稱。 它類似於binary-buildpack
或binary_buildpack
。 編輯您的 manifest.yml 並將https://github.com/cloudfoundry/binary-buildpack.git
替換為該值。
現在,當您推送時,它將使用已經編譯的現有構建包,您不應該看到有關正在下載的 Go 的消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.