這兩天寫了一個開源小工具,時間戳轉換與對比工具:ts,主要是在公司運維時使用。程序寫完了發現安裝過程不夠自動化,特別是對於我的使用 MacOS 系統,平常運維是 Linux 操做系統。雖然 Go 語言支持跨平臺編譯,可是拿着個二進制程序拷貝來拷貝去,總歸不像樣。本文記錄一下如何優雅在 Linux & MacOS 上發佈 Go 程序的過程。linux
在實操以前,請首先確認成功安裝如下工具:git
首先固然是完成項目的編碼工做。程序可以正常的編譯執行。以ts項目爲例。github
$: git clone https://github.com/liujianping/ts
$: cd
$: ├── LICENSE
├── README.md
├── cmd
│ ├── main.go
│ ├── main_test.go
│ └── root.go
├── **dist**
│ ├── CHANGELOG.md
│ ├── checksums.txt
│ ├── config.yaml
│ ├── darwin_386
│ │ └── ts
│ ├── darwin_amd64
│ │ └── ts
│ ├── linux_386
│ │ └── ts
│ ├── linux_amd64
│ │ └── ts
│ ├── ts_0.0.6_Darwin_i386.tar.gz
│ ├── ts_0.0.6_Darwin_x86_64.tar.gz
│ ├── ts_0.0.6_Linux_i386.tar.gz
│ └── ts_0.0.6_Linux_x86_64.tar.gz
├── go.mod
├── go.sum
├── **install.sh**
├── main.go
...
複製代碼
該項目很是簡單,代碼也不多。以上目錄展現了兩個關鍵目錄或文件, 分別是:ruby
這兩處變動均是經過工具生成的。如今咱們生成它:bash
$: rm -rf dist install.sh
# 生成安裝腳本
$: godownloader --repo=liujianping/ts > ./install.sh
# 生成發佈目錄
$: goreleaser init
# 直接操做會自動發佈到 github 對應的 repo 上,前提是須要 tag
$: goreleaser
複製代碼
經過goreleaser
操做,會自動將發佈目錄發佈到github.com/liujianping…發佈頁中。 固然前提是在系統環境變量中設置好 GITLAB_API_PRIVATE_TOKEN
環境變量,具體值請在 github 上進行申請。運維
其實以上過程完成後,就能夠實現跨平臺安裝了。install.sh
腳本能夠直接執行,經過判斷本地系統版本相應的去下載安裝包,自動進行安裝。curl
$: curl -sfL https://raw.githubusercontent.com/liujianping/ts/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
複製代碼
以上講的是經過 SHELL 腳本的方式安裝。對於MacOS系統而言,程序還能夠打包進入brew
包管理服務中,經過brew install
的方式進行安裝。工具
首先,在項目的github.com/liujianping…發佈頁中找到MacOS的安裝包地址:github.com/liujianping….post
建立一個 brew formula
:學習
$: brew create https://github.com/liujianping/ts/releases/download/v0.0.6/ts_0.0.6_Darwin_x86_64.tar.gz
複製代碼
經過這個命令,brew
會建立文件:/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ts.rb
.進行簡單的修改,僅提供安裝腳本:
# Documentation: https://docs.brew.sh/Formula-Cookbook
# https://rubydoc.brew.sh/Formula
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
class Ts < Formula
desc "timestamp convert & compare tool"
homepage ""
url "https://github.com/liujianping/ts/releases/download/v0.0.6/ts_0.0.6_Darwin_x86_64.tar.gz"
sha256 "cf28627f973b03c2c103032f9c2be35d1d2f556fdf79f5139cc659b5e07924dd"
# depends_on "cmake" => :build
def install
bin.install "ts"
end
end
複製代碼
保存修改。如今在我的電腦上就能夠進行brew install ts
安裝了。但這還沒完成發佈。在我的 github
帳號下建立一個homebrew-
前綴的repo
.如liujianping/homebrew-tap.將新建立文件: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ts.rb
發佈到該 repo
下。如今就能夠經過 brew
的方式安裝應用了。
$: brew tap liujianping/tap && brew install ts
複製代碼
不少好的開源項目都有完善的安裝指南,經過學習這些開源項目,將好的經驗應用到本身的項目中,是一條捷徑。
相關文章:
若是以爲有用,歡迎點贊個人開源項目: