Skip to content

ci: add formula validation, gitleaks, and dependabot - #3

Merged
ckivisild-elnora-ai merged 3 commits into
mainfrom
ci/tap-baseline
Jul 14, 2026
Merged

ci: add formula validation, gitleaks, and dependabot#3
ckivisild-elnora-ai merged 3 commits into
mainfrom
ci/tap-baseline

Conversation

@ckivisild-elnora-ai

Copy link
Copy Markdown
Member

Brings the tap to a minimal CI baseline. It previously had no workflows.

What this adds

  • .github/workflows/ci.yml — on push/PR to main, runs brew style and brew audit --strict against the tapped formula on an ubuntu runner (Homebrew/actions/setup-homebrew). --online is intentionally dropped (rationale inline): it would fetch every release URL and the homepage on each run, which is rate-limit-prone on a tap that is machine-bumped on every CLI release. Checksums are pinned in the formula, and the strict offline audit still catches the failure that matters here.
  • .github/workflows/gitleaks.yml — full-history secret scan using the open-source gitleaks binary, matching the sibling repos, backed by a minimal .gitleaks.toml that extends the default ruleset.
  • .github/dependabot.yml — weekly github-actions updates.

This runs on push so the bot's bump commits are validated, but the tap has no branch protection, so CI is informational on main and cannot block the bot.

Formula fix (required for the audit to pass, and it fixes a live install break)

version carried a leading v ("v2.3.0"). The strict audit rejects that, and the download-URL template download/v#{version}/ turned it into .../download/vv2.3.0/..., which returns HTTP 404 — so brew install from this tap was broken. Dropping the v (version "2.3.0") restores the correct download/v2.3.0/ URL (HTTP 200) and clears the audit. Livecheck is switched to the idiomatic url :stable + strategy :github_latest.

Follow-up (out of scope here): the elnora-cli release bot writes version "vX.Y.Z" on every bump, so the next automated bump will reintroduce both the audit failure and the 404. The durable fix belongs in the CLI's release automation (emit version "X.Y.Z" without the leading v). Until then, CI will flag it on main without blocking the bot's push.

Verification (local)

  • brew style Formula/*.rb — clean
  • brew audit --strict elnora-ai/cli/elnora — clean (and confirmed it fails on the pre-fix leading-v)
  • gitleaks full-history scan — 34 commits, no leaks
  • Download URL: v2.3.0 → 200, pre-fix vv2.3.0 → 404

🤖 Generated with Claude Code

Elnora AI and others added 3 commits July 14, 2026 09:28
Add a minimal CI baseline to the previously workflow-less tap.

ci.yml runs on push/PR to main: brew style plus brew audit --strict on the
tapped formula (ubuntu, Homebrew/actions/setup-homebrew). --online is dropped
to stay reliable on this machine-bumped tap; the rationale is in the workflow.

gitleaks.yml runs a full-history secret scan with the open-source binary,
matching the sibling repos, backed by a minimal .gitleaks.toml that extends the
default ruleset.

dependabot.yml enables weekly github-actions updates.

The formula is also fixed so it passes the new audit and, more importantly, so
it installs at all. version carried a leading 'v' ("v2.3.0"), which the strict
audit rejects and which the download-URL template ("download/v#{version}/")
turns into a broken ".../download/vv2.3.0/..." returning HTTP 404. Dropping the
'v' restores the correct URL and switches livecheck to the idiomatic
url :stable plus strategy :github_latest.

The elnora-cli release bot writes version "vX.Y.Z" on each bump, so the next
automated bump reintroduces both problems. The durable fix belongs in the CLI
release automation (emit version "X.Y.Z"); until then CI flags it on main
without blocking the bot's push.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EgHf9qf7dcDzguCkqGRJzz
`brew tap <name> <local-path>` fails on the runner with a tap remote
mismatch because Homebrew already maps elnora-ai/cli to the GitHub remote.
Instead, copy the checkout into Homebrew's tap path (its origin already
matches) and audit the formula by name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EgHf9qf7dcDzguCkqGRJzz
setup-homebrew already symlinks the checkout in as the elnora-ai/cli tap
and trusts it, so no manual tap or copy is needed. Drop that step and audit
the formula directly by name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EgHf9qf7dcDzguCkqGRJzz
@ckivisild-elnora-ai
ckivisild-elnora-ai merged commit b2d28ce into main Jul 14, 2026
2 checks passed
@ckivisild-elnora-ai
ckivisild-elnora-ai deleted the ci/tap-baseline branch July 14, 2026 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant