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
goreleaser 方便的go 二进制包分发工具的更多相关文章
- Python包管理工具小结
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...
- k8s包管理工具helm - 介绍和安装
目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...
- FreeBSD的新一代包管理工具Pkg 1.3.0 发布
Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级. Pkg ...
- 新一代开源Android渠道包生成工具Walle
本文转自:http://tech.meituan.com/android-apk-v2-signature-scheme.html 新一代开源Android渠道包生成工具Walle 新的应用签名方案A ...
- Python包管理工具和多版本环境管理
1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...
- Python打包分发工具setuptools
作为Python标准的打包及分发工具,setuptools可以说相当地简单易用.它会随着Python一起安装在你的机器上.你只需写一个简短的setup.py安装文件,就可以将你的Python应用打包 ...
- [sersync] github镜像 二进制包
这几天在搞数据的本地备份和远程备份的事情,用到了sersync这个国产的同步工具,可是发现他托管在google code,需要fanqiang才能下载, 于是就弄了一个github的镜像,顺便把64位 ...
- kubernetes实践之一:kubernetes二进制包安装
kubernetes二进制部署 1.环境规划 软件 版本 Linux操作系统 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18 ...
- Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
随机推荐
- Linux3.10.0块IO子系统流程(2)-- 构造、排序、合并请求
Linux块设备可以分为三类.分别针对顺序访问物理设备.随机访问物理设备和逻辑设备(即“栈式设备”) 类型 make_request_fn request_fn 备注 SCSI 设备等 从bio构 ...
- Innodb引擎简介
一.锁 二.什么情况出现阻塞 1.频繁更改的表,出现了慢查询 2.频繁访问的表,出现了备份等(表级锁) 三.查看运行情况 show engine innodb status; 四.关键参数 innod ...
- UNICODE_STRING(用户模式 内核模式)
UNICODE_STRING结构: typedef struct _UNICODE_STRING { USHORT Length; ...
- codeforce150A(简单的求质数问题)
A. Win or Freeze time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- NuGet 程序源包
https://api.nuget.org/v3/index.json (2018-4-24 10:20:07-最新测试,可以用) https://nuget.cnblogs.com/v3/inde ...
- HTML5触摸事件(touchstart、touchmove和touchend)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事 ...
- YLZ开发后端外网编写
如何取得前端的值并做处理 // 调用ESB来获取Ajaxpagerespon获得审核记录 @RequestMapping(value = "/queryBydwId", metho ...
- 20165326 java第六周学习笔记
第六周学习总结 ch8 String类对于有效处理字符序列信息非常重要. String对象的字符序列不能被修改删除,无法发生变化. StringBuffer类的对象实体的内存空间可以自动改变大小,便于 ...
- 通过调整浏览器UA设置欺骗限制上网
先上图片, 通过调整浏览器UA,欺骗识别,原来这个WIFI是只能手机端使用的,打开IE F12,进行如上图所示,进行修改,正常输入手机号,获取验证码,登陆后,即可上网了.虽然显示的是400,但实际 ...
- Android直播实现srs流媒体服务器部署
链接:http://blog.csdn.net/mr_sk/article/details/71086885 在配置文件中加入 pid 参数执行