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 ...
随机推荐
- 前端基础之CSS属性
一.背景属性 <style> p { /*背景颜色*/ background-color: red; /*字体颜色*/ color: blue; /*宽度和高度*/ width: 600p ...
- js中的变量作用域问题
变量既可以是全局的,也可以是局部的. 全局变量可以在脚本的任何位置被引用.一旦你在脚本里声明了一个全局变量,就可以从这个脚本中的任何位置——包括函数内部引用它.全局变量的作用域是整个脚本. 局部变量只 ...
- SharePoint online Multilingual support - Development(1)
博客地址:http://blog.csdn.net/FoxDave 上一节讲了SharePoint Online网站多语言的实现原理机制,本节主要从编程的角度来谈一下如何进行相关的设置. 下面列出 ...
- oracle语句录
从表中选出一个某个单位最近的记录 select * from RSDL_SHXX where sbsj in (select max (sbsj) from RSDL_SHXX where DW_ID ...
- Spring学习五(JDBC支持)
Spring的jdbc支持 1配置db.properties,将有关JDBC的信息载入 2bean文件配置数据源,这里用e3p0作为数据源载入db.properties 3配置template的bea ...
- MySQL:安装mysqld系统及基础应用
MySQL篇 第一章.安装mysqld系统及基础应用 一.安装 注意:mysql的标点符号只能是英文的标点符号. 1.设置配置文件. 文件格式:文本格式 文件位置:Mysql的主目录下 文件名称:my ...
- TCCSuperPlayerView让Delphi支持app视频播放!
今天ChinaCock发布了新版,完美支持视频播放!新版本中,发布了新的控件TCCSuperPlayerView,以支持视频播放. 这是一个可视控件,拖放到Form上,调整好大小与位置,就可以调用他的 ...
- Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)
ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持. 3.视图系统支持超过5以上模板 4.支持定制事件的高可扩展性Websocket ...
- 自动化测试-20.selenium之FireFox下载项配置
前言: 当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置 ...
- Markdown显示反引号(`)
/********************************************************************** * Markdown显示反引号(`) * 说明: * 在 ...