76 lines
2.0 KiB
YAML
76 lines
2.0 KiB
YAML
when:
|
|
- event: tag
|
|
|
|
steps:
|
|
validate:
|
|
image: golang:1.25
|
|
commands:
|
|
- go test ./...
|
|
- go test -race ./...
|
|
- go vet ./...
|
|
- go build ./...
|
|
- go test ./internal/doccheck
|
|
- go test ./internal/config -run '^TestExamplesLoadAndValidate$'
|
|
|
|
cross-build:
|
|
image: golang:1.25
|
|
depends_on: validate
|
|
commands:
|
|
- |
|
|
set -eu
|
|
output_dir="$(mktemp -d)"
|
|
trap 'rm -rf "$output_dir"' EXIT
|
|
for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64; do
|
|
goos="${target%/*}"
|
|
goarch="${target#*/}"
|
|
CGO_ENABLED=0 GOOS="$goos" GOARCH="$goarch" go build -o "$output_dir/narratio-$goos-$goarch" ./cmd/narratio
|
|
done
|
|
|
|
build-release-assets:
|
|
image: golang:1.25
|
|
depends_on: [validate, cross-build]
|
|
commands:
|
|
- |
|
|
set -eu
|
|
|
|
version="$CI_COMMIT_TAG"
|
|
dist="dist"
|
|
pkg="gitea.maximumdirect.net/eric/narratio/cmd/narratio"
|
|
|
|
rm -rf "$dist"
|
|
mkdir -p "$dist"
|
|
|
|
build_binary() {
|
|
goos="$1"
|
|
goarch="$2"
|
|
suffix="$3"
|
|
output="$dist/narratio-$version-$goos-$goarch$suffix"
|
|
|
|
CGO_ENABLED=0 GOOS="$goos" GOARCH="$goarch" \
|
|
go build -trimpath -ldflags "-s -w -X gitea.maximumdirect.net/eric/narratio/internal/buildinfo.Version=$version" \
|
|
-o "$output" "$pkg"
|
|
}
|
|
|
|
build_binary linux amd64 ""
|
|
build_binary linux arm64 ""
|
|
build_binary darwin amd64 ""
|
|
build_binary darwin arm64 ""
|
|
build_binary windows amd64 ".exe"
|
|
build_binary windows arm64 ".exe"
|
|
|
|
publish-release:
|
|
image: woodpeckerci/plugin-release
|
|
depends_on:
|
|
- build-release-assets
|
|
settings:
|
|
api_key:
|
|
from_secret: GITEA_RELEASE_TOKEN
|
|
files:
|
|
- dist/narratio-*
|
|
checksum: sha256
|
|
checksum-file: SHA256SUMS
|
|
checksum-flatten: true
|
|
file-exists: skip
|
|
overwrite: false
|
|
prerelease: false
|