Skip to main content

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 --share and outside CI, are saved in your project, under output/. Only you see them.
  • Shared runs, with qa --share or in CI, are saved in the results storage, a folder that the server and every machine running qa mount 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:

qaboard.yaml
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:

qaboard.yaml
storage:
outputs: /mnt/qaboard/outputs
artifacts: /mnt/qaboard/artifacts

The server must mount both.

Different paths on Windows​

qaboard.yaml
storage:
linux: /mnt/qaboard
windows: //shared/qaboard

Variables in storage paths​

{project}, {subproject}, {user} and their attributes are replaced in the paths:

qaboard.yaml
storage:
artifacts: /mnt/{subproject.parts[0]}/artifacts
outputs:
linux: /mnt/{subproject.name}/outputs/{user}
windows: //shared/{subproject.name}/outputs/{user}
caution

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:

VariableExample
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.

tip

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".