Skip to content

MANUAL RUN: a real CI receiver triggers on a codeSplitters GitHub-mode webhook #541

Closed

Description

@QuinnsCode

Follow-up from #532. Tests show a GitHub-mode hook passes GitHub's signature check and carries GitHub's headers and fields. What's left is one real receiver triggering on a codeSplitters commit. That needs a person, a running receiver and the live site.

Steps

  1. Open a smee relay at https://smee.io/new, or run a local Jenkins with the GitHub plugin and expose /github-webhook/ (for example with cloudflared tunnel).
  2. On a codeSplitters repo, open Settings → Webhooks, paste the URL, tick Speak GitHub, and add it.
  3. Commit a file on main.
  4. Check that the receiver shows a push with a valid X-Hub-Signature-256, and (for Jenkins) that a job polling repository.clone_url starts.

Known gaps worth noting if they bite

  • No ping event when the hook is created. GitHub sends one; some receivers show it as the first green tick.
  • A merged branch has no pull_request.number, because codeSplitters branches aren't numbered.
  • A private repo's clone_url needs a read token. The receiver has to bring its own.

Done when a real receiver triggers from a codeSplitters commit.

Activity

  1. added
    manual runNeeds the owner to run it by hand (tokens, sign-ins); agents can't close it
    on Oct 11, 2026
  2. QuinnsCode commented on Oct 11, 2026

    @QuinnsCode
    OwnerAuthor

    Done by an agent on 2026-10-11, against the live site:

    • Opened a smee.io channel and listened on it with curl (SSE).
    • Made a throwaway public repo quinn/hook-test-541 and added a hook with github_compat: true and a known secret, through POST /api/repos/:o/:r/hooks.
    • Committed README.md on main.
    • smee got one delivery: X-GitHub-Event: push, User-Agent: GitHub-Hookshot/codeSplitters, ref: refs/heads/main, after = the git commit (c4faa29…), head_commit.message set, and repository.clone_url the repo's artifacts git URL. Its X-Hub-Signature-256 checks out: HMAC-SHA256 of the body with the secret matches.
    • The hook's own log reads push · ok · 200 · 1 try.
    • Afterwards I deleted the hook and the repo, and stopped the listener.

    Jenkins wasn't tried. smee counts as the receiver here, as step 1 allows. The known gaps (no ping, no PR number, private clone needs a token) still stand.

    🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    manual runNeeds the owner to run it by hand (tokens, sign-ins); agents can't close it

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions