zoukankan      html  css  js  c++  java
  • goreleaser 方便的go 二进制包分发工具

    goreleaser 可以帮助我们进行go 二进制包的快速,简单分发,我们可以用来创建一个github release 以及发布到homwbrew formula 。

    安装

    mac 系统,实际根据自己的系统选择,我使用brew 安装

    brew install goreleaser

    使用

    • 创建go mod
    go mod init github.com/dalongrong/gorelease-app
    • 添加简单代码
    main.go
    package main
    
    import (
     "fmt"
    )
    
    func main() {
     fmt.Println("demoapp")
    }
    
    • 添加git 支持同时添加tag
    git init
    git add --all
    git commit -m  "init project"
    git remote add origin https://github.com/rongfengliang/gorelease-app.git
    git tag v1.0.0
    git push -u origin master
    git push -u origin v1.0.0
    • 添加goreleaser 支持
    goreleaser init
    • 测试构建
    goreleaser --snapshot --skip-publish --rm-dist

    效果

     goreleaser release --skip-publish --rm-dist
    
       • releasing using goreleaser 0.101.0...
       • loading config file file=.goreleaser.yml
       • RUNNING BEFORE HOOKS
          • running go mod download
          • running go generate ./...
       • GETTING AND VALIDATING GIT STATE
          • releasing v1.0.1, commit 101af58d04813fabb32567c4b4aab7925783a6fc
       • PARSING TAG      
       • SETTING DEFAULTS 
          • LOADING ENVIRONMENT VARIABLES
          • SNAPSHOTING      
          • GITHUB RELEASES  
          • PROJECT NAME     
          • ARCHIVES         
          • BUILDING BINARIES
          • LINUX PACKAGES WITH NFPM
          • SNAPCRAFT PACKAGES
          • CALCULATING CHECKSUMS
          • SIGNING ARTIFACTS
          • DOCKER IMAGES    
          • ARTIFACTORY      
          • S3               
          • HOMEBREW TAP FORMULA
          • SCOOP MANIFEST   
       • SNAPSHOTING      
          • pipe skipped error=not a snapshot
       • CHECKING ./DIST  
          • --rm-dist is set, cleaning it up
       • WRITING EFFECTIVE CONFIG FILE
          • writing config=dist/config.yaml
       • GENERATING CHANGELOG
          • writing changelog=dist/CHANGELOG.md
       • LOADING ENVIRONMENT VARIABLES
          • pipe skipped error=publishing is disabled
       • BUILDING BINARIES
          • building binary=dist/windows_386/gorelease-app.exe
          • building binary=dist/linux_386/gorelease-app
          • building binary=dist/linux_amd64/gorelease-app
          • building binary=dist/darwin_amd64/gorelease-app
          • building binary=dist/darwin_386/gorelease-app
          • building binary=dist/windows_amd64/gorelease-app.exe
       • ARCHIVES         
          • creating archive=dist/gorelease-app_1.0.1_Windows_x86_64.tar.gz
          • creating archive=dist/gorelease-app_1.0.1_Linux_i386.tar.gz
          • creating archive=dist/gorelease-app_1.0.1_Darwin_i386.tar.gz
          • creating archive=dist/gorelease-app_1.0.1_Darwin_x86_64.tar.gz
          • creating archive=dist/gorelease-app_1.0.1_Linux_x86_64.tar.gz
          • creating archive=dist/gorelease-app_1.0.1_Windows_i386.tar.gz
       • LINUX PACKAGES WITH NFPM
          • pipe skipped error=no output formats configured
       • SNAPCRAFT PACKAGES
          • pipe skipped error=no summary nor description were provided
       • CALCULATING CHECKSUMS
          • checksumming file=gorelease-app_1.0.1_Darwin_x86_64.tar.gz
          • checksumming file=gorelease-app_1.0.1_Windows_i386.tar.gz
          • checksumming file=gorelease-app_1.0.1_Darwin_i386.tar.gz
          • checksumming file=gorelease-app_1.0.1_Linux_x86_64.tar.gz
          • checksumming file=gorelease-app_1.0.1_Linux_i386.tar.gz
          • checksumming file=gorelease-app_1.0.1_Windows_x86_64.tar.gz
       • SIGNING ARTIFACTS
          • pipe skipped error=artifact signing is disabled
       • DOCKER IMAGES    
          • pipe skipped error=docker section is not configured
       • PUBLISHING       
          • pipe skipped error=publishing is disabled
       • release succeeded after 5.73s
    • 效果

    .goreleaser.yml 文件说明

    默认是没有windows 配置的,以下为修改支持windows的

    # This is an example goreleaser.yaml file with some sane defaults.
    # Make sure to check the documentation at http://goreleaser.com
    before:
      hooks:
        # you may remove this if you don't use vgo
        - go mod download
        # you may remove this if you don't need go generate
        - go generate ./...
    builds:
    - env:
      - CGO_ENABLED=0
      goos:
        - linux
        - darwin
        - windows
    archive:
      replacements:
        darwin: Darwin
        linux: Linux
        windows: Windows
        386: i386
        amd64: x86_64
    checksum:
      name_template: 'checksums.txt'
    snapshot:
      name_template: "{{ .Tag }}-next"
    changelog:
      sort: asc
      filters:
        exclude:
        - '^docs:'
        - '^test:'

    goreleaser 的功能还是很强大的,同时支持github 的release,同时我们也可以配置docker

    参考资料

    https://goreleaser.com/
    https://github.com/goreleaser/goreleaser
    https://github.com/rongfengliang/gorelease-app

  • 相关阅读:
    游标
    mobaxterm安装与使用(root_35/37/36/121)
    美团笔试--修改矩阵
    美团笔试1--螺旋矩阵
    assert函数
    2019年头条笔试--围坐分糖果
    邻值查找——stl函数lower_bound和upper_bound的使用
    动态规划练习1--腾讯暑期实习正式批
    Windows 7下硬盘安装CentOS6.4的解决方法
    Sublime Text 3 的一些基本使用方法和配置
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10396394.html
Copyright © 2011-2022 走看看