Skip to content

Commit

Permalink
Updated go releaser, updated release script
Browse files Browse the repository at this point in the history
  • Loading branch information
maoueh committed Apr 21, 2022
1 parent c6b911c commit 686481f
Show file tree
Hide file tree
Showing 4 changed files with 190 additions and 106 deletions.
107 changes: 64 additions & 43 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,62 @@
project_name: zap-pretty

before:
hooks:
- go mod download
- go generate ./...
release:
github:
owner: maoueh
name: zap-pretty
name_template: '{{.Tag}}'
builds:
- id: zap-pretty
goos:
- linux
- darwin
- windows
goarch:
- arm64
- amd64
targets:
- linux_amd64
- darwin_amd64
- darwin_arm64
- windows_amd64
main: ./
ldflags: -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}
binary: zap-pretty
env:
- CGO_ENABLED=0

archives:
# sfeth
- name_template: '{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
id: zap-pretty
builds:
- zap-pretty
replacements:
amd64: x86_64
darwin: macOS
linux: linux
format: tar.gz
files:
- LICENSE.md
- README.md

snapshot:
name_template: '{{ .Tag }}-next'

checksum:
name_template: checksums.txt

changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- '^support:'
- '^chore:'

builds:
- goos:
- linux
- darwin
- windows
goarch:
- amd64
targets:
- linux_amd64
- darwin_amd64
- windows_amd64
sort: asc

archive:
replacements:
darwin: MacOS
linux: Linux
windows: Windows
amd64: x86_64
files:
- LICENSE.md
- README.md
dist: dist

checksum:
name_template: 'checksums.txt'

sign:
cmd: keybase
signs:
- cmd: keybase
args:
- sign
- --infile
Expand All @@ -51,14 +67,19 @@ sign:
- --detached
signature: ${artifact}.sig
artifacts: checksum

snapshot:
name_template: "{{ .Tag }}-dirty"

brew:
github:
owner: maoueh
name: homebrew-tap
homepage: "https://github.com/maoueh/zap-pretty"
description: "A tiny binary to pretty-print Zap production JSON lines"
env_files:
github_token: ~/.config/goreleaser/github_token
brews:
- name: zap-pretty
ids:
- zap-pretty
tap:
owner: maoueh
name: homebrew-tap
commit_author:
name: goreleaserbot
email: matthieu.o.vachon@gmail.com
homepage: "https://github.com/maoueh/zap-pretty"
description: "A tiny binary to pretty-print Zap production JSON lines"
license: "MIT"

59 changes: 0 additions & 59 deletions bin/release

This file was deleted.

122 changes: 122 additions & 0 deletions bin/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#!/usr/bin/env bash

ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )"

dry_run=""
force="false"

main() {
pushd "$ROOT" &> /dev/null

while getopts "hnf" opt; do
case $opt in
h) usage && exit 0;;
n) dry_run="true";;
f) force="true";;
\?) usage_error "Invalid option: -$OPTARG";;
esac
done
shift $((OPTIND-1))

verify_github_token
verify_keybase

if [[ "$dry_run" == "true" && "$force" == "true" ]]; then
usage_error "Only one of -n (dry run) or -f (force) can be provided at a time"
fi

version="$1"; shift
if [[ "$version" == "" ]]; then
printf "What version do you want to release (current latest is `git describe --tags --abbrev=0`)? "
read version
fi

if [[ ! "$version" =~ ^v ]]; then
echo "Version $version is invalid, must start with a 'v'"
exit 1
fi

mode="Dry Run, use -f flag to switch to publishing mode"
if [[ "$force" == "true" ]]; then
mode="Publishing"
fi

echo "About to release version tagged $version ($mode)"
sleep 3

if [[ "$force" == "true" ]]; then
echo "Pushing to ensure GitHub knowns about the latest commit(s)"
git push
fi

args="--rm-dist"
if [[ "$force" == "false" ]]; then
args="--skip-publish --skip-validate $args"
fi

set -e
git tag "$version"
set +e

goreleaser release $args
if [[ $? -gt 0 || "$force" == "false" ]]; then
git tag -d "$version"
fi
}

verify_github_token() {
if [[ ! -f "$HOME/.config/goreleaser/github_token" && "$GITHUB_TOKEN" = "" ]]; then
echo "No GitHub token could be found in enviornment variable GITHUB_TOKEN"
echo "nor at ~/.config/goreleaser/github_token."
echo ""
echo "You will need to create one on GitHub website and make it available through"
echo "one of the accept way mentionned above."
exit 1
fi
}

verify_keybase() {
if ! command keybase &> /dev/null; then
echo "Keybase is required to sign the release (the checksum of all the artifacts"
echo "to be precise)."
echo ""
echo "You will need to have it available ('brew install keybase' on Mac OS X) and"
echo "configure it, just setting your Git username and a password should be enough."
exit 1
fi
}

usage_error() {
message="$1"
exit_code="$2"

echo "ERROR: $message"
echo ""
usage
exit ${exit_code:-1}
}

usage() {
echo "usage: release.sh [-h] [-f] [-n] [<version>]"
echo ""
echo "Perform the necessary commands to perform a release of the project."
echo "The <version> is optional, if not provided, you'll be asked the question."
echo ""
echo "The release being performed against GitHub, you need a valid GitHub API token"
echo "with the necessary rights to upload release and push to repositories. It needs to"
echo "be provided in file ~/.config/goreleaser/github_token or through an environment"
echo "variable GITHUB_TOKEN."
echo ""
echo "Keybase is required to sign the release (the checksum of all the artifacts"
echo "to be precise)."
echo ""
echo "You will need to have it available ('brew install keybase' on Mac OS X) and"
echo "configure it, just setting your Git username and a password should be enough."
echo ""
echo "Options"
echo " -f Run in write mode publishing the release to GitHub"
echo " -n Run in dry-run mode skipping validation and publishing"
echo " -h Display help about this script"
}

main "$@"
8 changes: 4 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ import (
. "github.com/logrusorgru/aurora"
)

var debug = log.New(ioutil.Discard, "", 0)
var debugEnabled = false
var severityToColor map[string]Color

// Provided via ldflags by goreleaser automatically
var (
version = "dev"
commit = "none"
date = "unknown"
)

var debug = log.New(ioutil.Discard, "", 0)
var debugEnabled = false
var severityToColor map[string]Color

var errNonZapLine = errors.New("non-zap line")

func init() {
Expand Down

0 comments on commit 686481f

Please sign in to comment.