Skip to content

Commit

Permalink
Update goreleaser
Browse files Browse the repository at this point in the history
  • Loading branch information
mfridman committed Jul 3, 2023
1 parent 4e04e08 commit efd0320
Show file tree
Hide file tree
Showing 7 changed files with 119 additions and 61 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: goreleaser

on:
push:
tags:
- '*'

permissions:
contents: write

jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- run: git fetch --force --tags
- uses: actions/setup-go@v4
with:
go-version: stable
# More assembly might be required: Docker logins, GPG, etc. It all depends
# on your needs.
# ${{ github.ref_name }} or $GITHUB_REF_NAME or ${{env.GITHUB_REF_NAME}} currently.
- run: ./scripts/release-notes.sh ${{github.ref_name}} > ./release_notes.txt
- uses: goreleaser/goreleaser-action@v4
with:
# either 'goreleaser' (default) or 'goreleaser-pro':
distribution: goreleaser
version: latest
args: release --clean --release-notes=./release_notes.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro'
# distribution:
# GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@
# Local testing
.envrc
*.FAIL

dist/
release_notes.txt
28 changes: 28 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
#
# See https://goreleaser.com/customization/ for more information.
before:
hooks:
# You may remove this if you don't use go modules.
- go mod tidy
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
goarch:
- amd64
- arm64

archives:
- format: binary
name_template: >-
{{ .ProjectName }}_{{- tolower .Os }}_{{- if eq .Arch "amd64" }}x86_64{{- else }}{{ .Arch }}{{ end }}
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ incpatch .Version }}-next"
changelog:
use: github-native
51 changes: 0 additions & 51 deletions .goreleaser.yml

This file was deleted.

2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## [Unreleased]

- No changes yet.
- Add pre-built binaries with GoReleaser.

## [v3.13.0] - 2023-06-29

Expand Down
17 changes: 8 additions & 9 deletions cmd/goose/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"log"
"os"
"path/filepath"
"runtime/debug"
"sort"
"strconv"
"strings"
Expand All @@ -27,7 +26,7 @@ var (
table = flags.String("table", "goose_db_version", "migrations table name")
verbose = flags.Bool("v", false, "enable verbose mode")
help = flags.Bool("h", false, "print help")
version = flags.Bool("version", false, "print version")
versionFlag = flags.Bool("version", false, "print version")
certfile = flags.String("certfile", "", "file path to root CA's certificates in pem format (only support on mysql)")
sequential = flags.Bool("s", false, "use sequential numbering for new migrations")
allowMissing = flags.Bool("allow-missing", false, "applies missing (out-of-order) migrations")
Expand All @@ -37,7 +36,11 @@ var (
noColor = flags.Bool("no-color", false, "disable color output (NO_COLOR env variable supported)")
)
var (
gooseVersion = "v3.14.0-dev"
// These variables are populated via GoReleaser ldflags.
// See https://goreleaser.com/cookbooks/using-main.version/
version = "(devel)"
commit = "none"
date = "unknown"
)

func main() {
Expand All @@ -47,12 +50,8 @@ func main() {
return
}

if *version {
buildInfo, ok := debug.ReadBuildInfo()
if ok && buildInfo != nil && buildInfo.Main.Version != "(devel)" {
gooseVersion = buildInfo.Main.Version
}
fmt.Printf("goose version: %s\n", gooseVersion)
if *versionFlag {
fmt.Printf("goose version: %s\n", version)
return
}
if *verbose {
Expand Down
43 changes: 43 additions & 0 deletions scripts/release-notes.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash

set -euo pipefail

# Check if the required argument is provided
if [ $# -lt 1 ]; then
echo "Usage: $0 <semver version> [<changelog file>]"
exit 1
fi

version="$1"
changelog_file="${2:-CHANGELOG.md}"

# Check if the CHANGELOG.md file exists
if [ ! -f "$changelog_file" ]; then
echo "Error: $changelog_file does not exist"
exit 1
fi

CAPTURE=0
items=""
while IFS= read -r LINE; do
if [[ "${LINE}" == "##"* ]] && [[ "${CAPTURE}" -eq 1 ]]; then
break
fi
if [[ "${LINE}" == "## [${version}]"* ]] && [[ "${CAPTURE}" -eq 0 ]]; then
CAPTURE=1
continue
fi
if [[ "${CAPTURE}" -eq 1 ]]; then
items+="$(echo "${LINE}" | xargs)"
# if items is not empty, add a newline
if [[ -n "$items" ]]; then
items+=$'\n'
fi
fi
done <"${changelog_file}"

if [[ -n "$items" ]]; then
echo "${items%$'\n'}"
else
echo "No changelog items found for version $version"
fi

0 comments on commit efd0320

Please sign in to comment.