|
1 | 1 | # gooseBit
|
2 | 2 |
|
3 |
| -<img src="img/goosebit-logo.png" style="width: 100px; height: 100px; display: block;"> |
| 3 | +<img src="docs/img/goosebit-logo.png" style="width: 100px; height: 100px; display: block;"> |
4 | 4 |
|
5 | 5 | ---
|
6 | 6 |
|
7 | 7 | A simplistic, opinionated remote update server implementing hawkBit™'s [DDI API](https://eclipse.dev/hawkbit/apis/ddi_api/).
|
8 | 8 |
|
9 |
| -## Setup |
| 9 | +## Quick Start |
10 | 10 |
|
11 |
| -To set up, install the dependencies in `pyproject.toml` with `poetry install`. Then you can run gooseBit by running `main.py`. |
| 11 | +### Installation |
12 | 12 |
|
13 |
| -## Initial Startup |
| 13 | +1. Install dependencies using [Poetry](https://python-poetry.org/): |
| 14 | + ```bash |
| 15 | + poetry install |
| 16 | + ``` |
| 17 | +2. Launch gooseBit: |
| 18 | + ```bash |
| 19 | + python main.py |
| 20 | + ``` |
14 | 21 |
|
15 |
| -The first time you start gooseBit, you should change the default username and password inside `settings.yaml`. |
16 |
| -The default login credentials for testing are `[email protected]`, `admin`. |
| 22 | +### Initial Configuration |
| 23 | + |
| 24 | +Before running gooseBit for the first time, update the default credentials in `settings.yaml`. The default login for testing purposes is: |
| 25 | + |
| 26 | +- **Username: ** `[email protected]` |
| 27 | +- **Password:** `admin` |
17 | 28 |
|
18 | 29 | ## Assumptions
|
19 | 30 |
|
20 |
| -- [SWUpdate](https://swupdate.org) used on device side. |
| 31 | +- Devices use [SWUpdate](https://swupdate.org) for managing software updates. |
| 32 | + |
| 33 | +## Features |
| 34 | + |
| 35 | +### Device Registry |
| 36 | + |
| 37 | +When a device connects to gooseBit for the first time, it is automatically added to the device registry. The server will then request the device's configuration data, including: |
21 | 38 |
|
22 |
| -## Current Feature Set |
| 39 | +- `hw_model` and `hw_revision`: Used to match compatible software. |
| 40 | +- `sw_version`: Indicates the currently installed software version. |
23 | 41 |
|
24 |
| -### Software repository |
| 42 | +The registry tracks each device's status, including the last online timestamp, installed software version, update state, and more. |
25 | 43 |
|
26 |
| -Uploading software images through frontend. All files should follow the format `{model}_{revision}_{version}`, where |
27 |
| -`version` is either a semantic version or a datetime version in the format `YYYYMMDD-HHmmSS`. |
| 44 | +### Software Repository |
28 | 45 |
|
29 |
| -### Automatic device registration |
| 46 | +Software packages (`*.swu` files) can be hosted directly on the gooseBit server or on an external server. gooseBit parses the software metadata to determine compatibility with specific hardware models and revisions. |
30 | 47 |
|
31 |
| -First time a new device connects, its configuration data is requested. `hw_model` and `hw_revision` are captured from |
32 |
| -the configuration data (both fall back to `default` if not provided) which allows to distinguish different device |
33 |
| -types and their revisions. |
| 48 | +### Device Update Modes |
34 | 49 |
|
35 |
| -### Automatically update device to newest software |
| 50 | +Devices can be configured with different update modes. The default mode is `Rollout`. |
36 | 51 |
|
37 |
| -Once a device is registered it will get the newest available software from the repository based on model and revision. |
| 52 | +#### 1. Manual Update to Specified Software |
38 | 53 |
|
39 |
| -### Manually update device to specific software |
| 54 | +Assign specific software to a device manually. Once installed, no further updates will be triggered. |
40 | 55 |
|
41 |
| -Frontend allows to assign specific software to be rolled out. |
| 56 | +#### 2. Automatic Update to Latest Software |
42 | 57 |
|
43 |
| -### Software rollout |
| 58 | +Automatically updates the device to the latest compatible software, based on the reported `hw_model` and `hw_revision`. Note: versions are interpreted as [SemVer](https://semver.org) versions. |
44 | 59 |
|
45 |
| -Rollouts allow a fine-grained assignment of software to devices. The reported device model and revision is combined |
46 |
| -with the manually set feed value on a device to determine a matching rollout. |
| 60 | +#### 3. Software Rollout |
47 | 61 |
|
48 |
| -The feed is meant to model either different environments (like: dev, qa, live) or update channels (like. candidate, |
49 |
| -fast, stable). |
| 62 | +Rollouts target all devices with a specified "feed" value, ensuring that the assigned software is installed on all matching devices. Rollouts also track success and error rates, with future plans for automatic aborts. If multiple rollouts exist for the same feed, the most recent rollout takes precedence. |
50 | 63 |
|
51 |
| -### Pause updates |
| 64 | +### Pause Updates |
52 | 65 |
|
53 |
| -Device can be pinned to its current software. |
| 66 | +Devices can be pinned to their current software version, preventing any updates from being applied. |
54 | 67 |
|
55 |
| -### Realtime update logs |
| 68 | +### Real-time Update Logs |
56 | 69 |
|
57 |
| -While an update is running, the update logs are captured and visualized in the frontend. |
| 70 | +While updates are in progress, gooseBit captures real-time logs, which are accessible through the device repository. |
58 | 71 |
|
59 | 72 | ## Development
|
60 | 73 |
|
|
0 commit comments