mirror of https://github.com/pressly/goose.git
Update goreleaser and add pre-built binary scripts (#550)
parent
4e04e08c7b
commit
50e274af58
|
@ -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 }}
|
|
@ -10,3 +10,6 @@
|
||||||
# Local testing
|
# Local testing
|
||||||
.envrc
|
.envrc
|
||||||
*.FAIL
|
*.FAIL
|
||||||
|
|
||||||
|
dist/
|
||||||
|
release_notes.txt
|
||||||
|
|
|
@ -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
|
|
@ -1,51 +0,0 @@
|
||||||
# Documentation at https://goreleaser.com
|
|
||||||
project_name: goose
|
|
||||||
|
|
||||||
gomod:
|
|
||||||
proxy: true
|
|
||||||
|
|
||||||
builds:
|
|
||||||
- env:
|
|
||||||
- CGO_ENABLED=0
|
|
||||||
main: ./cmd/goose
|
|
||||||
binary: goose
|
|
||||||
goos:
|
|
||||||
- linux
|
|
||||||
- windows
|
|
||||||
- darwin
|
|
||||||
goarch:
|
|
||||||
- amd64
|
|
||||||
- arm64
|
|
||||||
# Custom ldflags templates.
|
|
||||||
# Default is `-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X main.builtBy=goreleaser`.
|
|
||||||
ldflags:
|
|
||||||
- -s -w
|
|
||||||
|
|
||||||
# You can disable this pipe in order to not upload any artifacts.
|
|
||||||
# Defaults to false.
|
|
||||||
release:
|
|
||||||
disable: false
|
|
||||||
|
|
||||||
archives:
|
|
||||||
- replacements:
|
|
||||||
386: i386
|
|
||||||
amd64: x86_64
|
|
||||||
name_template: "{{ tolower .Binary }}_{{ tolower .Os }}_{{ tolower .Arch }}"
|
|
||||||
format: binary
|
|
||||||
|
|
||||||
checksum:
|
|
||||||
name_template: "checksums.txt"
|
|
||||||
|
|
||||||
snapshot:
|
|
||||||
name_template: "{{ incpatch .Version }}-next"
|
|
||||||
|
|
||||||
changelog:
|
|
||||||
use: github
|
|
||||||
sort: asc
|
|
||||||
# Commit messages matching the regexp listed here will be removed from
|
|
||||||
# the changelog.
|
|
||||||
filters:
|
|
||||||
exclude:
|
|
||||||
- "^docs:"
|
|
||||||
- "^test:"
|
|
||||||
# TODO(mf): add docker support?
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
- No changes yet.
|
- Add pre-built binaries with GoReleaser.
|
||||||
|
|
||||||
## [v3.13.0] - 2023-06-29
|
## [v3.13.0] - 2023-06-29
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# goose [](https://github.com/pressly/goose/actions/workflows/ci.yml) [](https://pkg.go.dev/github.com/pressly/goose/v3)
|
# goose [](https://github.com/pressly/goose/actions/workflows/ci.yaml) [](https://pkg.go.dev/github.com/pressly/goose/v3)
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="assets/goose_logo.png" width="125"">
|
<img src="assets/goose_logo.png" width="125"">
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime/debug"
|
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -27,7 +26,7 @@ var (
|
||||||
table = flags.String("table", "goose_db_version", "migrations table name")
|
table = flags.String("table", "goose_db_version", "migrations table name")
|
||||||
verbose = flags.Bool("v", false, "enable verbose mode")
|
verbose = flags.Bool("v", false, "enable verbose mode")
|
||||||
help = flags.Bool("h", false, "print help")
|
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)")
|
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")
|
sequential = flags.Bool("s", false, "use sequential numbering for new migrations")
|
||||||
allowMissing = flags.Bool("allow-missing", false, "applies missing (out-of-order) migrations")
|
allowMissing = flags.Bool("allow-missing", false, "applies missing (out-of-order) migrations")
|
||||||
|
@ -37,7 +36,11 @@ var (
|
||||||
noColor = flags.Bool("no-color", false, "disable color output (NO_COLOR env variable supported)")
|
noColor = flags.Bool("no-color", false, "disable color output (NO_COLOR env variable supported)")
|
||||||
)
|
)
|
||||||
var (
|
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() {
|
func main() {
|
||||||
|
@ -47,12 +50,8 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if *version {
|
if *versionFlag {
|
||||||
buildInfo, ok := debug.ReadBuildInfo()
|
fmt.Printf("goose version: %s\n", version)
|
||||||
if ok && buildInfo != nil && buildInfo.Main.Version != "(devel)" {
|
|
||||||
gooseVersion = buildInfo.Main.Version
|
|
||||||
}
|
|
||||||
fmt.Printf("goose version: %s\n", gooseVersion)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if *verbose {
|
if *verbose {
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue