這兩天寫了一個開源小工具,時間戳轉換與對比工具: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
操做,會自動將發佈目錄發佈到https://github.com/liujianping/ts/releases發佈頁中。 固然前提是在系統環境變量中設置好 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
的方式進行安裝。工具
首先,在項目的https://github.com/liujianping/ts/releases發佈頁中找到MacOS的安裝包地址:https://github.com/liujianping/ts/releases/download/v0.0.6/ts_0.0.6_Darwin_x86_64.tar.gz.學習
建立一個 brew formula
:ui
$: 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
不少好的開源項目都有完善的安裝指南,經過學習這些開源項目,將好的經驗應用到本身的項目中,是一條捷徑。
若是以爲有用,歡迎點贊個人開源項目: