您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Golang項目在github創建release后怎么自動生成二進制文件”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Golang項目在github創建release后怎么自動生成二進制文件”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
工具類的Golang項目需要編譯成二進制文件后在命令行中運行,所以希望在github里面創建一個新的release后能自動編譯成針對各個平臺的二進制文件,如下圖所示:
借助 GoReleaser 這款工具配合 github actions 可以很方便實現這種效果,下面講解下具體實現方法。
首先需要在 Golang 項目的根目錄創建 GoReleaser 配置文件 .goreleaser.yaml,內容如下:
# This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com before: hooks: # You may remove this if you don't use go modules. - go mod tidy # you may remove this if you don't need go generate - go generate ./... builds: - env: - CGO_ENABLED=0 goos: - linux - windows - darwin archives: - format: tar.gz # this name template makes the OS and Arch compatible with the results of uname. name_template: >- {{ .ProjectName }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 {{- else }}{{ .Arch }}{{ end }} {{- if .Arm }}v{{ .Arm }}{{ end }} # use zip for windows archives format_overrides: - goos: windows format: zip checksum: name_template: 'checksums.txt' snapshot: name_template: "{{ incpatch .Version }}-next" changelog: sort: asc filters: exclude: - '^docs:' - '^test:' # The lines beneath this are called `modelines`. See `:help modeline` # Feel free to remove those if you don't want/use them. # yaml-language-server: $schema=https://goreleaser.com/static/schema.json # vim: set ts=2 sw=2 tw=0 fo=cnqoj
然后創建 github actions 配置文件, 在Golang項目的根目錄創建 .github 文件夾,在這個文件夾里面創建 workflows 文件夾,在 workflows 文件夾里面創建 release.yaml 文件,內容如下:
name: goreleaser on: push: # run only against tags tags: - '*' permissions: contents: write # packages: write # issues: write jobs: goreleaser: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - run: git fetch --force --tags - uses: actions/setup-go@v3 with: go-version: '>=1.20.2' cache: true # More assembly might be required: Docker logins, GPG, etc. It all depends # on your needs. - uses: goreleaser/goreleaser-action@v4 with: # either 'goreleaser' (default) or 'goreleaser-pro': distribution: goreleaser version: latest args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' # distribution: # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
這個文件的內容不需要做任何修改,提交代碼并將代碼 push 到 github 后,在 github 的 release 頁面新建一個 release 后,在 Actions 頁面就可以看到有一個workflow在運行:
等這個 workflow 運行完成以后,在 release 的 Assets 里面就會出現針對各個平臺的二進制文件。
讀到這里,這篇“Golang項目在github創建release后怎么自動生成二進制文件”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。