Files
GitHop/docs/local-development.md

65 lines
1.5 KiB
Markdown

# Local development
## Start the foundation
Requirements: Docker with Compose v2, Go 1.26 or newer for host-side tests, and
ports 3000, 8080, and 2222 available.
```sh
cp .env.example .env
make up
```
Open Gitea at <http://localhost:3000>. The Hop control plane exposes health at
<http://localhost:8080/healthz> and readiness at
<http://localhost:8080/readyz>.
Gitea self-registration is enabled for this local stack. After creating the
first account, create an access token in Gitea and set `GITEA_API_TOKEN` in
`.env`, then restart the control plane:
```sh
docker compose up -d --force-recreate control-plane
```
## Link a repository
Create a repository in Gitea, then ask Hop to verify it through the Gitea API
and record the link:
```sh
set -a
. ./.env
set +a
curl --fail-with-body \
-H "Authorization: Bearer $HOP_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"owner":"YOUR_USER","name":"YOUR_REPOSITORY"}' \
http://localhost:8080/api/v1/repositories/link
```
## Configure a webhook
In the Gitea repository, create a Gitea webhook with:
- target URL: `http://control-plane:8080/api/v1/gitea/webhooks`
- content type: `application/json`
- secret: the value of `HOP_GITEA_WEBHOOK_SECRET` in `.env`
- events: all events
The control plane verifies `X-Gitea-Signature` against the raw request body,
records each delivery exactly once, and refreshes repository metadata from the
signed payload.
## Useful commands
```sh
make test
make config
make logs
make down
```
To destroy local data as well as containers, run `docker compose down -v`.