嗨,當我將二進制文件推送到 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 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消