From 89184b0cc2b978b267f9b6557c93216345cbcfef Mon Sep 17 00:00:00 2001 From: Himank Dave <93311724+steadyfall@users.noreply.github.com> Date: Mon, 20 Apr 2026 14:37:31 -0400 Subject: [PATCH 1/4] test(ci): add smoke job to verify binary builds and basic invocations --- .github/workflows/ci.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68ecd87..822592d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,3 +31,32 @@ jobs: - name: Test run: go test ./... -race -count=1 + + smoke: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + with: + go-version-file: go.mod + cache: true + + - name: Build + run: go build -o fspeek ./cmd/fspeek + + - name: Version flag prints fspeek dev + run: | + output=$(./fspeek --version) + echo "Got: $output" + echo "$output" | grep -qE "^fspeek (dev|v?[0-9]+\.[0-9]+)" + + - name: No URL exits non-zero with usage + run: | + if ./fspeek 2>/dev/null; then + echo "Expected non-zero exit when no --url given" + exit 1 + fi + ./fspeek 2>&1 | grep -q "\-\-url" From b0fff40d6a46003bd6f50fa00a0a05e972458185 Mon Sep 17 00:00:00 2001 From: Himank Dave <93311724+steadyfall@users.noreply.github.com> Date: Mon, 20 Apr 2026 14:42:22 -0400 Subject: [PATCH 2/4] test(ci): add release smoke job verifying go install Add release-smoke.yml workflow that triggers on GitHub release publication. Installs fspeek via go install from golang:1.26.2-trixie container, then runs smoke tests (version format and no-url exit behavior) to validate released versions work correctly out of the box. --- .github/workflows/release-smoke.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/release-smoke.yml diff --git a/.github/workflows/release-smoke.yml b/.github/workflows/release-smoke.yml new file mode 100644 index 0000000..003867f --- /dev/null +++ b/.github/workflows/release-smoke.yml @@ -0,0 +1,29 @@ +name: Release Smoke + +on: + release: + types: [published] + +jobs: + install-smoke: + runs-on: ubuntu-latest + container: golang:1.26.2-trixie + permissions: + contents: read + steps: + - name: Install fspeek + run: go install github.com/steadyfall/fspeek/cmd/fspeek@${{ github.ref_name }} + + - name: Version flag prints release version + run: | + output=$(fspeek --version) + echo "Got: $output" + echo "$output" | grep -qE "^fspeek (dev|v?[0-9]+\.[0-9]+)" + + - name: No URL exits non-zero with usage + run: | + if fspeek 2>/dev/null; then + echo "Expected non-zero exit when no --url given" + exit 1 + fi + fspeek 2>&1 | grep -q "\-\-url" From e3f929bf2c4a7b5f2b47e8c25840b64b2a608be7 Mon Sep 17 00:00:00 2001 From: Himank Dave <93311724+steadyfall@users.noreply.github.com> Date: Mon, 20 Apr 2026 14:50:18 -0400 Subject: [PATCH 3/4] fix: pre-landing review fixes for release-smoke workflow --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release-smoke.yml | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 822592d..81b3bcf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,8 +55,8 @@ jobs: - name: No URL exits non-zero with usage run: | - if ./fspeek 2>/dev/null; then + if output=$(./fspeek 2>&1); then echo "Expected non-zero exit when no --url given" exit 1 fi - ./fspeek 2>&1 | grep -q "\-\-url" + echo "$output" | grep -q "\-\-url" diff --git a/.github/workflows/release-smoke.yml b/.github/workflows/release-smoke.yml index 003867f..5066952 100644 --- a/.github/workflows/release-smoke.yml +++ b/.github/workflows/release-smoke.yml @@ -12,18 +12,20 @@ jobs: contents: read steps: - name: Install fspeek - run: go install github.com/steadyfall/fspeek/cmd/fspeek@${{ github.ref_name }} + env: + TAG: ${{ github.ref_name }} + run: go install github.com/steadyfall/fspeek/cmd/fspeek@"$TAG" - name: Version flag prints release version run: | output=$(fspeek --version) echo "Got: $output" - echo "$output" | grep -qE "^fspeek (dev|v?[0-9]+\.[0-9]+)" + echo "$output" | grep -qE "^fspeek v?[0-9]+\.[0-9]+" - name: No URL exits non-zero with usage run: | - if fspeek 2>/dev/null; then + if output=$(fspeek 2>&1); then echo "Expected non-zero exit when no --url given" exit 1 fi - fspeek 2>&1 | grep -q "\-\-url" + echo "$output" | grep -q "\-\-url" From f811631d78ae5a00963408f2ee1abf69f1d7e96d Mon Sep 17 00:00:00 2001 From: Himank Dave <93311724+steadyfall@users.noreply.github.com> Date: Mon, 20 Apr 2026 14:51:01 -0400 Subject: [PATCH 4/4] chore: bump version and changelog (v0.2.3.0) Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 12 ++++++++++++ VERSION | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9c727f..ef22edb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [0.2.3.0] - 2026-04-20 + +### Added + +- **Smoke tests** — two CI smoke jobs verify the binary works after every build. The `smoke` job in `ci.yml` builds from source and checks that `--version` prints a recognizable version and that running with no `--url` exits non-zero with usage output. A new `release-smoke.yml` workflow triggers on every GitHub release publication: it enters a `golang:1.26.2-trixie` container, installs fspeek via `go install`, and runs the same checks to confirm the released module is installable and functional end-to-end. + +### Changed + +- No-URL smoke check now captures output on the first invocation and greps that, avoiding a redundant second binary run. +- Release smoke install step assigns `github.ref_name` to an env var before shell expansion. +- Release smoke version check no longer accepts `dev` — a release binary must print a real version string. + ## [0.2.2.0] - 2026-04-19 ### Added diff --git a/VERSION b/VERSION index 68cc747..517717a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.2.0 +0.2.3.0