Where is the data saved?
qa saves your runs' output files in folders, and the QA-Board server reads them there to show them in the web app.
This page sets where they go.
- Local runs, without
--shareand outside CI, are saved in your project, underoutput/. Only you see them. - Shared runs, with
qa --shareor in CI, are saved in the results storage, a folder that the server and every machine runningqamount at the same path, often an NFS share. - Artifacts, the files a commit needs to run again, like its build, are saved in the storage too (see Artifacts). They let people start runs and tuning from the web app.
- Metadata, like the runs' metrics and the commits, is in the server's database.
Set the results storage
Give its path in qaboard.yaml. qa init writes:
storage:
linux: /mnt/qaboard
The QA_STORAGE environment variable wins over it, e.g. export QA_STORAGE=/tmp/qaboard for the
quickstart's server, which reads results there. If your organization's site package
sets a storage, you don't need one.
qa creates the folder if it doesn't exist. When it can't, the commands that use it stop with The storage path
does not exist: qa --share, CI runs, qa save-artifacts, qa check-bit-accuracy and qa optimize. The others
only warn: local runs save their results in your project's output/ folder. The server must mount the storage too,
at the same path: see Starting a server.
Under the storage, each commit's results are in <project>/<first 2 characters of the commit>/<next 14>/, e.g.
/mnt/qaboard/kitefin/camera-isp/3f/a91c02d4e7b815/.
Separate folders for outputs and artifacts
To keep them apart, e.g. because of quotas:
storage:
outputs: /mnt/qaboard/outputs
artifacts: /mnt/qaboard/artifacts
The server must mount both.
Different paths on Windows
storage:
linux: /mnt/qaboard
windows: //shared/qaboard
Variables in storage paths
{project}, {subproject}, {user} and their attributes are replaced in the paths:
storage:
artifacts: /mnt/{subproject.parts[0]}/artifacts
outputs:
linux: /mnt/{subproject.name}/outputs/{user}
windows: //shared/{subproject.name}/outputs/{user}
Don't use {user} in the artifacts' path: runs started from the web app run as the user who started them, and
wouldn't find the artifacts that the CI saved.
Find a commit's folders from scripts
qa get prints them, e.g. qa get outputs_commit. Python code can import them from qaboard.config:
| Variable | Example |
|---|---|
artifacts_root | /mnt/qaboard |
artifacts_project | /mnt/qaboard/your/project |
artifacts_commit_root | /mnt/qaboard/your/project/ab/cdef0123456789 (the first 16 characters of the commit's hash) |
artifacts_commit | /mnt/qaboard/your/project/ab/cdef0123456789/subproject |
artifacts_branch | /mnt/qaboard/your/project/branches/branch-slug/subproject |
outputs_root, outputs_project, outputs_commit and outputs_commit_root are the same for outputs.
In CI, save reports like coverage in $(qa get artifacts_branch), and link to them from the web app's
Integrations menu: the server serves the storage's files under /s/, e.g.
href: "/s/mnt/qaboard/your/project/branches/${commit.branch_slug}/coverage/index.html".