Skip to content
This repository has been archived by the owner on Mar 12, 2024. It is now read-only.

Commit

Permalink
Update goreleaser and add pre-built binary scripts (pressly#550)
Browse files Browse the repository at this point in the history
  • Loading branch information
mfridman authored Jul 3, 2023
1 parent 4e04e08 commit 50e274a
Show file tree
Hide file tree
Showing 12 changed files with 126 additions and 62 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
36 changes: 36 additions & 0 deletions .github/workflows/release.yaml
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
34 changes: 34 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
#
# See https://goreleaser.com/customization/ for more information.
project_name: goose

before:
hooks:
# You may remove this if you don't use go modules.
- go mod tidy
builds:
- env:
- CGO_ENABLED=0
binary: goose
main: ./cmd/goose
goos:
- linux
- windows
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w

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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# goose [![Goose CI](https://github.com/pressly/goose/actions/workflows/ci.yml/badge.svg)](https://github.com/pressly/goose/actions/workflows/ci.yml) [![Go Reference](https://pkg.go.dev/badge/github.com/pressly/goose/v3.svg)](https://pkg.go.dev/github.com/pressly/goose/v3)
# goose [![Goose CI](https://github.com/pressly/goose/actions/workflows/ci.yaml/badge.svg)](https://github.com/pressly/goose/actions/workflows/ci.yaml) [![Go Reference](https://pkg.go.dev/badge/github.com/pressly/goose/v3.svg)](https://pkg.go.dev/github.com/pressly/goose/v3)

<p align="center">
<img src="assets/goose_logo.png" width="125"">
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 50e274a

Please sign in to comment.