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

 
 
 
 

goreleaser 方便的go 二进制包分发工具的更多相关文章

  1. Python包管理工具小结

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...

  2. k8s包管理工具helm - 介绍和安装

    目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...

  3. FreeBSD的新一代包管理工具Pkg 1.3.0 发布

    Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级. Pkg ...

  4. 新一代开源Android渠道包生成工具Walle

    本文转自:http://tech.meituan.com/android-apk-v2-signature-scheme.html 新一代开源Android渠道包生成工具Walle 新的应用签名方案A ...

  5. Python包管理工具和多版本环境管理

    1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...

  6. Python打包分发工具setuptools

    作为Python标准的打包及分发工具,setuptools可以说相当地简单易用.它会随着Python一起安装在你的机器上.你只需写一个简短的setup.py安装文件,就可以将你的Python应用打包 ...

  7. [sersync] github镜像 二进制包

    这几天在搞数据的本地备份和远程备份的事情,用到了sersync这个国产的同步工具,可是发现他托管在google code,需要fanqiang才能下载, 于是就弄了一个github的镜像,顺便把64位 ...

  8. kubernetes实践之一:kubernetes二进制包安装

    kubernetes二进制部署 1.环境规划 软件 版本 Linux操作系统 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18 ...

  9. Linux RPM、YUM、APT包管理工具

    ⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...

随机推荐

  1. Linux3.10.0块IO子系统流程(2)-- 构造、排序、合并请求

    Linux块设备可以分为三类.分别针对顺序访问物理设备.随机访问物理设备和逻辑设备(即“栈式设备”)   类型 make_request_fn request_fn 备注 SCSI 设备等 从bio构 ...

  2. Innodb引擎简介

    一.锁 二.什么情况出现阻塞 1.频繁更改的表,出现了慢查询 2.频繁访问的表,出现了备份等(表级锁) 三.查看运行情况 show engine innodb status; 四.关键参数 innod ...

  3. UNICODE_STRING(用户模式 内核模式)

    UNICODE_STRING结构: typedef struct  _UNICODE_STRING { USHORT Length;                                   ...

  4. codeforce150A(简单的求质数问题)

    A. Win or Freeze time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. NuGet 程序源包

    https://api.nuget.org/v3/index.json  (2018-4-24 10:20:07-最新测试,可以用) https://nuget.cnblogs.com/v3/inde ...

  6. HTML5触摸事件(touchstart、touchmove和touchend)

      HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事 ...

  7. YLZ开发后端外网编写

    如何取得前端的值并做处理 // 调用ESB来获取Ajaxpagerespon获得审核记录 @RequestMapping(value = "/queryBydwId", metho ...

  8. 20165326 java第六周学习笔记

    第六周学习总结 ch8 String类对于有效处理字符序列信息非常重要. String对象的字符序列不能被修改删除,无法发生变化. StringBuffer类的对象实体的内存空间可以自动改变大小,便于 ...

  9. 通过调整浏览器UA设置欺骗限制上网

    先上图片, 通过调整浏览器UA,欺骗识别,原来这个WIFI是只能手机端使用的,打开IE   F12,进行如上图所示,进行修改,正常输入手机号,获取验证码,登陆后,即可上网了.虽然显示的是400,但实际 ...

  10. Android直播实现srs流媒体服务器部署

    链接:http://blog.csdn.net/mr_sk/article/details/71086885 在配置文件中加入 pid 参数执行