Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang 装逼指南 Ⅱ:在 Homebrew 上发布 Golang 项目

Golang 装逼指南 Ⅱ:在 Homebrew 上发布 Golang 项目

作者头像
郭旭东
发布于 2020-12-30 04:55:38
发布于 2020-12-30 04:55:38
99200
代码可运行
举报
文章被收录于专栏:云原生工具箱云原生工具箱
运行总次数:0
代码可运行

经过上篇文章,我们已经可以在 GitHub 上构建一个看上去正经的 Golang 项目了,但这并不是结束。一个真正的用 Golang 构建的可执行文件是可以在全平台运行的,前文中我们使用 goreleaser 发布了一个非常漂亮的 release 页面,并在 release 页面上提供多平台的可执行文件下载。但是如果只是拿着可执行文件到处拷贝执行,总归不够优雅,所以这里就介绍如何在 Homebrew 上发布自己的 Golang 应用,如何像各种牛逼的项目那样使用 brew 一键安装自己的项目。

Homebrew

对于使用 macOS 的用户来说,Homebrew 一点也不陌生,它类似于 CentOSyumUbuntuapt-get

Homebrew 是最初由 Max Howell 用 Ruby 写的 OS X 软件管理系统,其代码开源在 GitHub 上。

Homebrew 给自己贴了个一句话简介:The missing package manager for OS X。翻译过来成中文就是:macOS 缺失的软件包的管理器。名副其实地是,Homebrew 真的很好用。安装、升级、卸载等操作,在 Homebrew 的生态下,都只需要一条命令就可以了。并且 Homebrew 会自动为你解决软件包的依赖问题。

发布步骤

  • 创建 Formula
  • 修改 rb 脚本
  • 本地测试
  • 创建 Tap
  • 实际安装

创建 Formula

首先进入 release 页面,拷贝 macOS 的 Darwin 包地址

然后通过命令在本地创建 Formula

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew create https://github.com/sunny0826/kubecm/releases/download/v0.0.1/kubecm_0.0.1_Darwin_x86_64.tar.gz

通过这个命令, brew 会创建一个名为 kubecm.rb 的文件在 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ 目录。

修改 rb 脚本

然后在该目录可以看到 kubecm.rb 这个脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Documentation: https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Formula-Cookbook.md
#                http://www.rubydoc.info/github/Homebrew/brew/master/Formula
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!

class OtfccMac64 < Formula
  desc ""
  homepage ""
  url "https://github.com/sunny0826/kubecm/releases/download/v0.0.1/kubecm_0.0.1_Darwin_x86_64.tar.gz"
  version "0.0.1"
  sha256 "f393b14f9c42c890b8a60949b13a8f9b5c3f814daa8b18901656ccc3b866f646"

  # depends_on "cmake" => :build
  depends_on :x11 # if your formula requires any X11/XQuartz components

  def install
    # ENV.deparallelize  # if your formula fails when building in parallel

    # Remove unrecognized options if warned by configure
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    # system "cmake", ".", *std_cmake_args
    system "make", "install" # if this fails, try separate make/make install steps
  end

  test do
    # `test do` will create, run in and delete a temporary directory.
    #
    # This test will fail and we won't accept that! It's enough to just replace
    # "false" with the main program this formula installs, but it'd be nice if you
    # were more thorough. Run the test with `brew test otfcc-win32`. Options passed
    # to `brew install` such as `--HEAD` also need to be provided to `brew test`.
    #
    # The installed folder is not in the path, so use the entire path to any
    # executables being tested: `system "#{bin}/program", "do", "something"`.
    system "false"
  end
end

默认提供的脚本并不适合我们,修改这个脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Kubecm < Formula
  desc "Merge multiple kubeconfig"
  homepage "https://github.com/sunny0826/kubecm"
  url "https://github.com/sunny0826/kubecm/releases/download/v0.0.1/kubecm_0.0.1_Darwin_x86_64.tar.gz"
  version "0.0.1"
  sha256 "8c2766e7720049ba0ce9e3d20b7511796a6ba224ce1386cd1d4ef8cc6e1315cd"
  # depends_on "cmake" => :build

  def install
    bin.install "kubecm"
  end
end

分布填上 deschomepageurl 等信息,由于这里下载的是 darwin 包,所以直接在 install 中填上 bin.install"kubecm" 即可。

本地测试

保存脚本,然后使用 brew install kubecm 进行测试,查看结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Updating Homebrew...
Fast-forwarded master to origin/master.
Fast-forwarded master to origin/master.
==> Auto-updated Homebrew!
Updated 2 taps (sunny0826/tap, homebrew/cask).
==> Updated Formulae
sunny0826/tap/kubecm

==> Downloading https://github.com/sunny0826/kubecm/releases/download/v0.0.1/kubecm_0.0.1_Darwin_x86_64.tar.gz
Already downloaded: /Users/guoxudong/Library/Caches/Homebrew/kubecm-86.64.tar.gz
?  /usr/local/Cellar/kubecm/86.64: 5 files, 5.4MB, built in 1 second

可以看到已经安装成功了!

创建 Tap

在本地测试成功之后,就可以把他发布了。这里需要在 GitHub 上创建一个名为 homebrew-tap 的 repo 注意该 repo 需要以 homebrew- 为前缀,像是这样。

然后将刚才的 kubecm.rb 脚本上传到这个 repo ,然后就可以通过 brew 的方式安装了。

实际测试

发布好之后,就可以测试发布成功没有了。

首先卸载之前使用本地脚本安装的应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ brew uninstall kubecm
Uninstalling /usr/local/Cellar/kubecm/86.64... (5 files, 5.4MB)

然后使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew tap sunny0826/tap && brew install kubecm

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install sunny0826/tap/kubecm

来进行安装。

结语

到这我们就成功的在 Homebrew 上发布了自己的 Golang 应用,本篇中的方法仅适合 Golang 开发的二进制可执行文件的发布,其他语言的发布需要在 .rb 脚本上有所修改,更多内容请参考官方文档。这里要再介绍一下我用 Golang 开发的另一个小工具 kubecm ,该项目之前我是使用 python 开发的,用于合并多个 kubeconfig 文件,本次重写新增了查看所有 kubeconfig 和 删除 kubeconfig 中 context 等功能,同时也在 Homebrew 上发布,欢迎拍砖。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
k3d+k3s+kubecm 本地快速搭建与管理集群
k3s 是由 Rancher Labs 于2019年年初推出的一款轻量级 Kubernetes 发行版,满足在边缘计算环境中运行在 x86、ARM64 和 ARMv7 处理器上的小型、易于管理的 Kubernetes 集群日益增长的需求。
郭旭东
2020/12/30
2.6K0
k3d+k3s+kubecm 本地快速搭建与管理集群
多k8s集群管理
多集群的切换是K8s运维中比不可少的问题,常见的基于多个集群进行切换的方法有三种:
huofo
2022/03/18
7040
Kubecm:管理你的 kubeconfig
该项目脱胎于 mergeKubeConfig[1] 项目,最早写该项目的目的是在一堆杂乱无章的 kubeconfig 中自由的切换。随着需要操作的 Kubernetes 集群越来越多,在不同的集群之间切换也越来越麻烦,而操作 Kubernetes 集群的本质不过是通过 kubeconfig 访问 Kubernetes 集群的 API Server,以操作 Kubernetes 的各种资源,而 kubeconfig 不过是一个 yaml 文件,用来保存访问集群的密钥,最早的 mergeKubeConfig[1] 不过是一个操作 yaml 文件的 Python 脚本。而随着 golang 学习的深入,也就动了重写这个项目的念头,就这样 kubecm[2] 诞生了。
郭旭东
2020/12/30
1K0
Kubecm:管理你的 kubeconfig
云原生工具集 · 管理多集群Kubeconfig
做为一个k8s的学习或者使用者,避免不了会操作不同的k8s集群,每次操作不同集群的时候,可能都会使用--kubeconfig指定要操作集群的配置文件,这样显得格外的麻烦,我使用过一段时间的alias,通过alias做命令别名,但是依旧不是那么清爽,前段时间看到一个kubecm[1]工具,简洁高效,解决了多集群切换以及kubeconfig文件内容管理的问题。
公众号: 云原生生态圈
2021/06/10
1K0
云原生工具集 ·  管理多集群Kubeconfig
K8S 多集群管理命令行工具: KubeCM​
简介 Easier management of kubeconfig. 安装 # 下载安装 https://github.com/sunny0826/kubecm/releases $ cd /usr/local/bin $ wget https://github.com/sunny0826/kubecm/releases/download/v0.15.3/kubecm_0.15.3_Linux_x86_64.tar.gz $ tar -zxvf kubecm_0.15.3_Linux_x86_64.tar
叨叨软件测试
2021/08/10
1.1K0
超实用的K8S命令行工具
将需要合并的集群配置kubeconfig文件统一放在一个目录下; 使用如下命令合并
tunsuy
2023/08/19
3360
超实用的K8S命令行工具
将项目发布到 Homebrew 官方仓库
Homebrew 标榜自己是 “macOS(或 Linux)缺失的软件包的管理器”,使用 macOS 作为开发终端的用户,往往绕不过 brew 这个软件包管理工具。确实在 macOS 上没有比 brew 更好用的软件包管理工具了,基本上想用的 CLI 工具,只需一行命令就可一键安装,非常的方便。记得去年博主还写过一篇 《Golang 装逼指南 Ⅱ:在 Homwebrew 上发布 Golang 项目》,当时只是介绍了如何将 Golang 开发的 CLI 工具发布到自建的 homebrew-tap 上。本文则是讲解如何将自己开发的软件,推送到官方的 homebrew-core[1] 仓库中,使用像 brew install kubecm 这样的命令即可完成安装。
郭旭东
2020/12/30
2K0
将项目发布到 Homebrew 官方仓库
K8S多集群切换俩种方法
随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。
SY小站
2020/06/29
1.3K0
推荐几款快速管理 Kubernetes 多集群环境的神器
Kubernetes 生态在很多企业广泛应用的当下,相信很多运维和开发人员都会同时管理和维护多个 Kubernetes 集群,比如:开发环境、测试环境、预发布环境、生产环境等等。
iMike
2020/07/23
3.2K0
推荐几款快速管理 Kubernetes 多集群环境的神器
Kubeconfig文件自动合并-实现K8S多集群切换
随着 Kubernetes 越来越流行,不管大公司还是小公司都往 Kubernetes 迁移,每个公司最少有两套集群(测试和生产),但是多个集群就有多个 Kubeconfig 用户授权文件。虽然官方文档中有介绍多个 Kubeconfig 文件合并成一个 Kubeconfig,但是对于一些新手来说,看得不是很明白。
YP小站
2020/06/23
3.5K0
告别手写,一键生成 Helm Chart README 文件
随着云原生应用的普及,Helm 的作用也日益凸显,越来越多的云原生应用以 Helm Chart 的形式发布,可以说现在如果没有一个 Helm Chart 都不好意思说自己是云原生应用。
郭旭东
2020/12/30
9350
告别手写,一键生成 Helm Chart README 文件
k8s-1.30.1版本一站式部署监控服务
官网:https://kubecm.cloud/zh-cn/introduction
希里安
2024/07/25
2600
k8s-1.30.1版本一站式部署监控服务
走进向量计算:从源码编译 OpenBLAS
不论是折腾深度学习、高性能计算,还是折腾向量数据库、相似性检索领域,在折腾的过程中,我们都可能会遇到需要 “OpenBLAS” 这个开源矩阵计算库的场景。
soulteary
2023/03/05
1.4K0
走进向量计算:从源码编译 OpenBLAS
解决 Error: parent directory is world writable but not sticky
使用 Homebrew 安装 yarn 时遇到了 Error: parent directory is world writable but not sticky
LinXunFeng
2019/06/18
9980
从零开始构建向量数据库:Milvus 的源码编译安装(二)​
本篇文章接上一篇[1],继续聊聊向量数据库领域,知名的开源技术项目:Milvus,在不同 CPU 架构的 macOS 环境下的编译安装。
soulteary
2023/03/05
2.6K0
从零开始构建向量数据库:Milvus 的源码编译安装(二)​
Homebrew:让你从 Mac 切换到 Linux 更轻松
Homebrew 项目最初是为了给 Mac 用户提供一个非官方的 Linux 式的包管理器。用户很快就爱上了它友好的界面以及帮助性的提示,而且,它已经被移植到 Linux 系统 —— 这看起来像是一个奇怪的命运转折。
用户1880875
2021/09/15
1.5K0
Mac安装Homebrew的正确姿势
Homebrew是 mac的包管理器,仅需执行相应的命令,就能下载安装需要的软件包,可以省掉自己去下载、解压、拖拽(安装)等繁琐的步骤。 比如安装服务器 nginx,打开终端执行以下命令即可安装:
yiduwangkai
2021/07/27
42.6K4
Mac安装Homebrew的正确姿势
Kubernetes 集群使用 Helm 搭建 GitLab 并配置 Ingress
通过之前的文章 初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台 ,我们已经演示了如何通过 Helm 安装 Spinnaker 平台到本地 Kubernetes 集群中。本次演示环境,我依旧是在本机 MAC OS 上操作,以下是安装的软件及版本:
哎_小羊
2019/05/25
6.5K0
手把手带你3步本地私有化部署DeepSeekR1,亲测成功
DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。
烟雨平生
2025/02/10
9.3K0
手把手带你3步本地私有化部署DeepSeekR1,亲测成功
如何使用bomber扫描软件物料清单(SBOM)以查找安全漏洞
 关于bomber  bomber是一款针对软件物料清单(SBOM)的安全漏洞扫描工具,广大研究人员可以通过该工具扫描和检测软件物料清单(SBOM)。 当你向一家供应商索要了他们的一个封闭源代码产品的软件材料清单,而他们以JSON文件的形式向你提供了一份材料清单,接下来你需要怎么做呢? 我们要做的第一件事就是查看软件物料清单中列出的任意组件是否存在安全漏洞,以及这些组件具有何种许可证,这将帮助我们确认使用该产品将承担何种风险。 而bomber正好可以帮助我们,该工具可以读取任何基于JSON或XML的Cycl
FB客服
2023/03/29
1.2K0
如何使用bomber扫描软件物料清单(SBOM)以查找安全漏洞
推荐阅读
相关推荐
k3d+k3s+kubecm 本地快速搭建与管理集群
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验