Files
gronod 415c13a605
ci / test (pull_request) Failing after 12s
ci / firmware (jc4827w543, sdkconfig.s3, esp32s3) (pull_request) Skipped
ci / firmware (wroom, sdkconfig.wroom, esp32) (pull_request) Skipped
ci / test (push) Failing after 11s
ci / firmware (jc4827w543, sdkconfig.s3, esp32s3) (push) Skipped
ci / firmware (wroom, sdkconfig.wroom, esp32) (push) Skipped
Add Gitea Actions workflow for host tests and dual firmware
2026-09-16 11:36:52 +00:00

57 lines
2.1 KiB
Markdown

# P04 — Gitea Actions CI
STATUS: DONE
Notes: used ${{ gitea.sha }} in merge_bin output name (CICD example); github.sha not substituted. Runner unverified (no Actions run). No required-check flip (P01 BLOCKED; images not confirmed compiling). Release-attach job skipped.
DEPENDS: P01 (required), P02/P03 (tests job becomes real when `tests/host/CMakeLists.txt` exists)
READ: this file, `docs/CICD.md`
OUT: changing firmware sources; enabling branch protection yourself if you lack repo admin — then note BLOCKED for humans
FORBIDDEN: GitHub-only `espressif/esp-idf-ci-action` as the compile driver; secrets in yaml; required-check flip if firmware still does not compile
## IN
Add `.gitea/workflows/ci.yml` per `docs/CICD.md` example. Use `hashFiles` guards:
- test job runs cmake/ctest only if `tests/host/CMakeLists.txt` exists
- firmware job runs idf.py only if root `CMakeLists.txt` exists (P01)
Container: `docker.io/espressif/idf:v5.4`. `fail-fast: false`. `needs: test` on firmware.
Artifact names: `firmware-${{ matrix.board }}` including merged bin, bootloader, partition-table, flasher_args, sdkconfig, size txt.
Gitea context: try `${{ gitea.sha }}`; if runner only has `github.sha`, use that. Document which in Notes.
Triggers exactly:
```yaml
on:
pull_request:
branches: [develop]
push:
branches: [develop, "refactor/**", "feature/**"]
tags: ["v*"]
workflow_dispatch:
```
`runs-on: ubuntu-latest`.
Firmware matrix: wroom/esp32/sdkconfig.wroom and jc4827w543/esp32s3/sdkconfig.s3.
`git config --global --add safe.directory '*'` inside container before idf.py.
Do **not** add a release-attach job unless tag attach API is already used on this Gitea; skip release job in v1.
## VERIFY
- yaml parses (python `-c 'import yaml; yaml.safe_load(open(".gitea/workflows/ci.yml"))'` if PyYAML present, else visual: valid YAML, two-space indent)
- If Gitea runner visible: push and confirm jobs queued. If not: still land file; Notes=`runner not verified`
## COMMITS
1. `Add Gitea Actions workflow for host tests and dual firmware`
## DoD
- [ ] Path `.gitea/workflows/ci.yml`
- [ ] Guards prevent red on missing tests/host before P02
- [ ] STATUS→DONE