中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang項目在github創建release后怎么自動生成二進制文件

發布時間:2023-03-22 16:19:29 來源:億速云 閱讀:100 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Golang項目在github創建release后怎么自動生成二進制文件”,內容詳細,步驟清晰,細節處理妥當,希望這篇“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在運行:

Golang項目在github創建release后怎么自動生成二進制文件

等這個 workflow 運行完成以后,在 release 的 Assets 里面就會出現針對各個平臺的二進制文件。

讀到這里,這篇“Golang項目在github創建release后怎么自動生成二進制文件”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂川县| 通辽市| 吉木乃县| 丹江口市| 札达县| 南江县| 古浪县| 依安县| 横峰县| 贵定县| 东莞市| 旌德县| 丹东市| 荔浦县| 四会市| 伊金霍洛旗| 莱西市| 芜湖市| 宁南县| 吕梁市| 商城县| 通化市| 中卫市| 襄城县| 宝清县| 广德县| 东安县| 东方市| 元江| 怀远县| 靖江市| 东山县| 苍山县| 武陟县| 昌乐县| 河间市| 昌都县| 五华县| 平邑县| 抚顺市| 尼木县|