Skip to content

Add CI workflows and issue templates#1

Merged
davidfic merged 3 commits intomainfrom
feat/ci-and-issue-templates
Apr 15, 2026
Merged

Add CI workflows and issue templates#1
davidfic merged 3 commits intomainfrom
feat/ci-and-issue-templates

Conversation

@davidfic
Copy link
Copy Markdown
Contributor

Summary

Brings Pulse in line with the luminarr-era scaffolding that the other Beacon apps will get in parallel PRs.

  • ci.yml — Go test (race) + lint (golangci-lint) + binary build + multi-arch Docker image (linux/amd64, linux/arm64) pushed to `ghcr.io/beacon-stack/pulse` on `main`
  • claude.yml — Claude Code Action: auto-triage on issue open, and respond to `@claude` mentions on PRs/comments
  • ISSUE_TEMPLATE/ — structured bug report and feature request forms
  • CONTRIBUTING.md — development setup + code standards

Pulse-specific deltas vs the luminarr template

  • No `TMDB_API_KEY` / `TRAKT_CLIENT_ID` ldflags — Pulse is a control plane and has no media metadata
  • Single image (no `Dockerfile.minimal`) — Pulse doesn't ship an ffprobe-less variant
  • No frontend test job — `web/ui` has no `npm test` script yet
  • No plugin section in CONTRIBUTING.md — Pulse has no plugins/ dir

Required repo secrets before this CI runs green

  • `GHCR_TOKEN` — classic PAT with `write:packages` scope (for the docker push job)
  • `ANTHROPIC_API_KEY` — for the Claude Code Action

Test plan

  • Set `GHCR_TOKEN` and `ANTHROPIC_API_KEY` secrets on the repo
  • Merge this PR and confirm the CI workflow runs green on main
  • Confirm a `latest` tag is published to `ghcr.io/beacon-stack/pulse`
  • Open a test issue and confirm the Claude triage comment lands

davidfic and others added 3 commits April 14, 2026 07:20
Adds the full luminarr-style .github scaffolding adapted for Pulse:

- ci.yml — Go test + lint + binary build + multi-arch Docker image
  push to ghcr.io on main
- claude.yml — Claude Code Action for automatic issue triage and
  @claude mention handling on PRs and comments
- ISSUE_TEMPLATE/bug_report.yml and feature_request.yml with a
  structured form for reports
- CONTRIBUTING.md with the development setup and code standards

Pulse-specific deltas vs luminarr's template: no TMDB/Trakt ldflags
(Pulse is a control plane, no media metadata), single-image docker
build using the repo-root Dockerfile, no frontend test job (no npm
test script yet), no plugin section in CONTRIBUTING.md.

Requires the GHCR_TOKEN (classic PAT with write:packages) and
ANTHROPIC_API_KEY secrets to be set in the repo before the workflows
can run successfully.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…kouts

web/static is built by `npm run build` in web/ui and is gitignored, so
a fresh checkout (CI, a new dev's machine) has no files in web/static
and the //go:embed static directive in web/embed.go fails to compile
with "pattern static: no matching files found".

Track web/static/placeholder.txt so the directory always has at least
one entry matching the embed pattern. The .gitignore now ignores
web/static/* but exempts the placeholder. The real frontend build
output still lands alongside and stays ignored.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Triggers on v* tag pushes and produces:

- Cross-platform binaries (linux/darwin/windows × amd64/arm64, minus
  windows/arm64) archived as tar.gz / zip with LICENSE, README, and
  config.example.yaml alongside
- checksums.txt for all archives
- A GitHub Release with auto-generated notes scraped from commit
  messages (excludes docs/chore/test/ci prefixes)
- Multi-tag Docker images pushed to ghcr.io/beacon-stack/pulse: the
  full version, {major}.{minor}, {major}, and latest

Requires GHCR_TOKEN on the repo before the first tag push — same
secret already needed by ci.yml for its main-branch docker job.

Tag a release with `git tag v0.2.0 && git push --tags` and the
workflow takes over from there.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@davidfic davidfic merged commit 02e9f31 into main Apr 15, 2026
7 of 12 checks passed
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