Where is the data saved?
When output files are saved at a centralized location, we can display them from the web application or easily access them from scripts.
Where is the data saved?
- Metadata on outputs, commits, etc is managed by the QA-Board server with postgresql.
- Local runs's output files are saved in the local current directory under
output/
. - Shared runs's output files (
qa --share
) are saved at a centralized location managed by QA-Board. - Artifacts are saved at a centralized location. It makes it possible to start tuning experiments from QA-Board.
QA-Board saves the data under:
storage: /mnt/qaboard/
tip
In most cases that's all you need, so you can skip to the next page!
Split storage for output and artifacts
In some cases you want to separate the storage of outputs and artifacts (maybe to comply with quota policies...):
storage:
outputs: /mnt/qaboard/outputs
artifacts: /mnt/qaboard/artifacts
note
To access non-default storage locations from QA-Board, make sure they are mounted. Refer to the server bringup docs
Dealing with different mount names on Windows
storage:
linux: /mnt/qaboard
windows: //shared/qaboard
Using variables in storage locations
You can use project
, subproject
{user}
, and their attributes. For instance:
storage:
artifacts: /mnt/{subproject.parts[0]}/artifacts
outputs:
linux: /mnt/{subproject.name}/outputs/{user}
windows: //shared/{subproject.name}/outputs/{user}
note
Avoid using {user}
for the artifacts location: you want some stability for this!
Even if you use {user}
for outputs, if you ran a first tuning as a user then with a second as another, you'll lose easy access to files related to the 1st tuning.... It's usually not really a big deal as we're just talking about the STDOUT of qa batch
...
TODO: Maybe {user}
should evaluate to the current user name for outputs and to the committer name for artifacts.
Accessing Storage locations programmatically
In qaboard.config.py the location where things are stored is defined via:
variable | sample value |
---|---|
artifacts_root | /mnt/qaboard |
artifacts_project | /mnt/qaboard/your/project |
artifacts_commit_root | /mnt/qaboard/your/project/commits/$hash/subproject |
artifacts_commit | /mnt/qaboard/your/project/commits/$hash |
artifacts_branch | /mnt/qaboard/your/project/branches/branch-slug |
Similarly, there are also:
outputs_root
,outputs_project
,outputs_commit
,outputs_commit_root
.
tip
In your CI, you can save e.g. coverage reports at $(qa get artifacts_branch)
, and make them easily accessible as links as sidebar menus with href: /s/mnt/qaboardyour/project/branches/{commit.branch_slug}/coverage
.
We could simplify that API a tiny bit with e.g. href: "{branch.artifacts}/coverage"
...