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