如何将Golang二进制文件发布到个人GitHub仓库
如何将Golang二进制文件发布到个人GitHub仓库
我对 ko 进行了一个临时修改,并希望通过 go get 来安装我修改后的版本(我无法仅在本地构建,因为它最终需要放入 Dockerfile 中)。目前,我在
github.com/cathyzhyi/ko/releases/tag/v1.9.8
发布了一个临时版本,并尝试使用
go get -v github.com/cathyzhyi/ko/cmd/ko@v1.9.8
然而,似乎 go get 找不到我上传的二进制文件,仍然在寻找官方版本。输出如下:
go: found github.com/cathyzhyi/ko/cmd/ko in github.com/cathyzhyi/ko v1.9.8
go: finding module for package github.com/google/ko/pkg/commands
go: found github.com/google/ko/pkg/commands in github.com/google/ko v0.6.0
我做的修改在这里:https://github.com/cathyzhyi/ko/commit/4570765c7eff6a3c5ad425a577d7cc4169c0be05
go.mod 中的包名已更新为 github.com/cathyzhyi/ko
我该如何让 go get 下载我的 ko 版本?我认为我需要将二进制文件上传到 go get 能够找到的特定位置。
更多关于如何将Golang二进制文件发布到个人GitHub仓库的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我认为你需要修改 go.mod 文件中的包名。
更多关于如何将Golang二进制文件发布到个人GitHub仓库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢您的帮助!不过,我想我之前的问题可能没有表述清楚。我原本是想将 ko 二进制文件发布到 GitHub,以便容器可以使用 go get 来安装它。
我发现了一个简单得多的方法,只需使用 wget 下载修改后的 ko 二进制文件即可。
你是说类似这样的吗?

yi_zhang: 我对 ko 做了一个临时修改,并希望使用 go get 来安装我修改后的版本(我无法只在本地构建,因为它最终需要放入 Dockerfile 中)
你目前能否在 Dockerfile(对我来说,它是一种发布管理器)之外工作?以减少调试的复杂性。
yi_zhang: 你指的是像这样的做法吗?
如果你从这里拉取:GitHub - cathyzhyi/ko: Build and deploy Go applications on Kubernetes,是的!或者你可以在 go.mod 中使用相对路径,并将其指向 cathyzhyi/ko 的本地副本。类似于这样:
replace gitlab.com/google/ko => ../cathyzhyi/ko
在 require 语句之前。
要让 go get 正确获取你的自定义版本,需要确保模块代理能访问你的仓库并解析正确的模块路径。从输出看,go get 找到了你的模块,但依赖解析时仍回退到官方版本,这是因为你的模块声明可能存在问题。
首先检查你的 go.mod 文件是否正确定义了模块路径和版本。你的 go.mod 应该类似这样:
module github.com/cathyzhyi/ko
go 1.19
require (
// 你的依赖项
)
然后,确保你已经正确打了标签并推送到 GitHub。对于版本 v1.9.8,需要创建并推送一个名为 v1.9.8 的标签:
git tag v1.9.8
git push origin v1.9.8
如果问题仍然存在,可能是因为 Go 模块代理缓存了官方版本。你可以尝试清除缓存或直接指定仓库:
go clean -modcache
go get -v github.com/cathyzhyi/ko/cmd/ko@v1.9.8
或者,在 go.mod 中使用 replace 指令强制使用你的版本。在你的项目 go.mod 中添加:
replace github.com/google/ko => github.com/cathyzhyi/ko v1.9.8
然后运行:
go mod tidy
go install github.com/cathyzhyi/ko/cmd/ko@latest
如果需要在 Dockerfile 中安装,可以这样编写:
FROM golang:1.19-alpine
RUN go install github.com/cathyzhyi/ko/cmd/ko@v1.9.8
确保你的 GitHub 仓库是公开的,或者设置 GOPRIVATE 环境变量:
export GOPRIVATE=github.com/cathyzhyi/ko
最后,验证你的发布文件是否包含必要的源码文件,而不仅仅是二进制文件。go get 需要源码来构建,所以确保你的发布包含完整的模块结构。

