Sign in or sign up before continuing. Don't have an account yet? Register now to get started.
Support GitHub as a platform (Issues + Pull Requests)
## Context
Faure currently only works with GitLab (webhooks, API, CI). Supporting GitHub would significantly expand its reach, as GitHub is the dominant platform for open source projects.
## Scope for V1
Parity with GitLab on the core workflow:
- Trigger on issue comment mentioning the bot (`@<bot-username>`)
- Read issue title + description + comment thread
- Commit files to a feature branch
- Open a Pull Request assigned to the reviewer
## Work to do
### Architecture
Extract a platform abstraction layer so `codeur.rb` logic is platform-agnostic:
```ruby
module Faure
module Platform
module GitLab ... end
module GitHub ... end
end
end
```
Each platform module implements:
- `fetch_issue(iid)` → `{ title:, description:, comments: }`
- `post_comment(iid, body)`
- `open_pr(branch, title, body)`
### GitHub-specific
- Trigger: GitHub Actions workflow on `issue_comment` event (instead of GitLab CI webhook)
- Auth: `FAURE_GITHUB_TOKEN` (GitHub PAT or Actions `GITHUB_TOKEN`)
- API: REST via `Net::HTTP` to `api.github.com`, same pattern as current GitLab calls
- Branch push: `git push` with GitHub token embedded in remote URL or via `GIT_ASKPASS`
### `ci/faure-github.yml` (GitHub Actions workflow template)
Provide a reusable workflow file that projects can copy/include.
### Variables
| Variable | Description |
|---|---|
| `FAURE_PLATFORM` | `gitlab` (default) or `github` |
| `FAURE_GITHUB_TOKEN` | GitHub PAT or `${{ secrets.GITHUB_TOKEN }}` |
| `FAURE_GITHUB_REPO` | `owner/repo` format |
## Notes
- Start with GitLab-on-GitHub (run the Faure Docker image as a GitHub Actions step) before considering a native GitHub App
- The dispatch prompt (#16) should be platform-agnostic by design
- `FAURE_API_KEY` (#17) is already platform-agnostic and applies to both
issue