Skip to main content

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:

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

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