forked from Qortal/q-blog
52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
# CI on Gitea (self-hosted runner)
|
|
|
|
This repo uses a self-hosted Gitea Actions runner. The workflow lives in **.gitea/workflows/ci-no-marketplace.yml** and targets the labels:
|
|
|
|
- `self-hosted`
|
|
- `linux`
|
|
- `ubuntu-latest:host`
|
|
|
|
## Runner config example (no Docker)
|
|
|
|
Create **config.yaml** next to the act runner binary/service:
|
|
|
|
```yaml
|
|
runner:
|
|
capacity: 1
|
|
labels:
|
|
- 'self-hosted'
|
|
- 'linux'
|
|
- 'x64'
|
|
- 'ubuntu-latest:host'
|
|
```
|
|
|
|
Restart the runner service after changes.
|
|
|
|
## Lockfile policy
|
|
|
|
When `package-lock.json` exists, CI runs **npm ci** (fast, reproducible). Without a lockfile, CI falls back to **npm install**. Prefer committing a lockfile for stable builds.
|
|
|
|
## Common gotchas
|
|
|
|
- **Node setup order** — Node must be set _before_ installs. The workflow ensures this.
|
|
- **Dirty action cache** — If you see messages like
|
|
`Unable to pull refs/heads/v4: worktree contains unstaged changes`,
|
|
clean the runner's cached actions (see troubleshooting).
|
|
|
|
## Local preflight
|
|
|
|
```bash
|
|
# run the same checks locally
|
|
npm run lint:phase0
|
|
npm test -- --run
|
|
```
|
|
|
|
## Release environment
|
|
|
|
For local release scripts (e.g., creating a Gitea release), place secrets in a local `.gitea.env` file at the repo root and source it when running scripts. Do not commit this file.
|
|
|
|
- Use `.gitea.env.example` as a template.
|
|
- Ensure `.gitea.env` remains ignored via `.gitignore`.
|
|
|
|
If a token was ever committed, rotate it in Gitea and consider cleaning it from history.
|