kubekey项目开发日志

kubekey项目开发日志

菜鸟教程熟悉go语言的基本语法

https://www.runoob.com/go/go-tutorial.htm

安装Go语言开发环境

  • Goland安装
  • GoPath、GOROOT、Go_Proxy配置

写一个小demo熟悉cobra的基本使用

  • BV1ka4y177iK
  • BV1mR4y1y7fC

主要以第一个视频为主,需要注意的是,cobra命令已经被弃用掉了,取而代之的是专门的脚手架工具cobra-cli,所以使用cobra-cli init/add等来进行快速创建命令和子命令

编译kk

  • 一开始直接go build ,发现好像是缺参数,一直在等我键入
  • 然后使用make kk 发现只报了git的fatal,目标文件bin/kk不存在
jalon@JalondeMacBook-Air kubekey % make kk
fatal: No names found, cannot describe anything.
CGO_ENABLED=0 go build -trimpath -tags "exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp" -ldflags "" -o bin/kk github.com/kubesphere/kubekey/v3/cmd/kk;
  • 可能和Goland内置终端权限不够有关,于是加上sudo,发现新的报错。这是指在获取版本控制系统(Version Control System,VCS)状态时出现了错误,退出状态码为128。而 “Use -buildvcs=false to disable VCS stamping.” 是建议使用 “-buildvcs=false” 选项来禁用版本控制系统的标记。最后的 “make: *** [kk] Error 1” 表示在执行make命令时发生了错误,错误码为1。这个错误通常与使用构建系统(如Makefile)和版本控制系统(如Git)相关。在某些情况下,构建系统会尝试从版本控制系统获取一些信息,比如当前的提交哈希值、分支信息等,以便在构建过程中进行标记或版本信息的嵌入。然而,出现了错误码128可能表示构建系统无法正确地与版本控制系统进行交互。
jalon@JalondeMacBook-Air kubekey % sudo make kk
Password:
fatal: unsafe repository ('/Users/jalon/code/kubekey' is owned by someone else)
To add an exception for this directory, call:

        git config --global --add safe.directory /Users/jalon/code/kubekey
CGO_ENABLED=0 go build -trimpath -tags "exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp" -ldflags "" -o bin/kk github.com/kubesphere/kubekey/v3/cmd/kk;
go downloading xxx
...
error obtaining VCS status: exit status 128
        Use -buildvcs=false to disable VCS stamping.
make: *** [kk] Error 1
  • 通过git init重新初始化Git仓库后再次sudo make kk,新的报错如下:
fatal: unsafe repository ('/Users/jalon/code/kubekey' is owned by someone else)
To add an exception for this directory, call:

        git config --global --add safe.directory /Users/jalon/code/kubekey
CGO_ENABLED=0 go build -trimpath -tags "exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp" -ldflags "" -o bin/kk github.com/kubesphere/kubekey/v3/cmd/kk;
error obtaining VCS status: exit status 128
        Use -buildvcs=false to disable VCS stamping.
make: *** [kk] Error 1
  • 根据提示执行git config –global –add safe.directory /Users/jalon/code/kubekey,然后再执行sudo make kk,成功,在./bin中生成了kk可执行文件

一些小点:

  • init 函数是一个特殊的函数,它在每个包完成初始化后自动执行,并且执行优先级比 main 函数高。init 函数主要用于初始化包级变量和执行必要的启动任务。重要的是,init 函数不需要在任何地方显式调用,Go 语言的运行时系统自动调用它。
  • 包的初始化按照在程序中导入的顺序进行,如果包 P 导入了包 Q,则只有在 Q 完全初始化(即 init() 调用结束)之后 P 才可能初始化。如果包 P 和 Q 是由不同的 go 文件构成,那么初始化的顺序是 go 文件的字母顺序。
  • 只有root.go里面有Execute函数
  • 用Cmd.Flags().BoolP会识别不到输入的值,为什么
  • root.go中的args为什么识别不出来

One thought on “kubekey项目开发日志

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注