v0.1.1: run tests in CI, add REUSE compliance and CONTRIBUTING
- Add .github/workflows/test.yml, using flatpak-builder's run-tests option so PRs and pushes exercise ctest inside the same KDE SDK sandbox as release builds. - Add REUSE.toml covering files that can't carry an inline SPDX header (.desktop, keys/*.asc). - Add CONTRIBUTING.md documenting build/test/release steps.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Contributing to Kareer
|
||||
|
||||
## Build
|
||||
|
||||
Kareer is a KDE/Kirigami application (C++20 + QML) built with CMake and
|
||||
Extra CMake Modules. See the README for the full list of system packages
|
||||
to install, then:
|
||||
|
||||
```sh
|
||||
cmake -B build -G Ninja
|
||||
cmake --build build
|
||||
./build/bin/kareer
|
||||
```
|
||||
|
||||
Every GUI action is also available from the `kareer` CLI
|
||||
(`add|list|show|update|stage|delete|stats|stages`) — run `./build/bin/kareer
|
||||
--help` to see the subcommands.
|
||||
|
||||
## Test
|
||||
|
||||
```sh
|
||||
ctest --test-dir build --output-on-failure
|
||||
```
|
||||
|
||||
Tests live in `autotests/` and link the core logic directly out of `src/`
|
||||
(see `autotests/CMakeLists.txt`). CI runs the same suite on every pull
|
||||
request via `.github/workflows/test.yml`, using `flatpak-builder`'s
|
||||
`run-tests` option so the run happens inside the same KDE SDK sandbox as
|
||||
release builds.
|
||||
|
||||
## Conventions
|
||||
|
||||
- Every source file starts with `SPDX-License-Identifier: GPL-3.0-or-later`
|
||||
(in whatever comment syntax fits the file type). Files that can't carry
|
||||
an inline header — `.desktop`, `keys/*.asc` — are covered instead by
|
||||
`REUSE.toml`.
|
||||
- `src/` is intentionally flat: one class per concern, no `models/`,
|
||||
`controllers/`, or `viewmodels/` subfolders.
|
||||
- C++ backend classes are exposed to QML via `QML_ELEMENT`; QML views are
|
||||
meant to stay thin renderers over that state, not hold logic themselves.
|
||||
- `JobsDatabase` is the only class that touches the SQLite database
|
||||
directly — route all persistence changes through it.
|
||||
|
||||
## Releasing
|
||||
|
||||
`.github/workflows/build.yml` builds, signs, and publishes a Flatpak
|
||||
bundle whenever a `v*` tag is pushed. To cut a release: bump
|
||||
`project(... VERSION ...)` in `CMakeLists.txt`, add a matching `<release>`
|
||||
entry to the metainfo file, update the manifest's pinned `tag:`, then tag
|
||||
and push.
|
||||
Reference in New Issue
Block a user