// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Package artifacts controls how files generated by Fuchsia's CI tasks are written to and
// read from Cloud Storage.  The directory layout is defined below:
//
// gs://BUCKET/
//     builds/
//         BUILD/
//             tests/
//                 TEST/
//                     ENVIRONMENT/
//
// BUCKET
//     The Cloud Storage bucket used to store CI artifacts. Multiple buckets can exist
//     exist using this scheme.
// BUILD
//     Contains all artifacts for a build. The directory's name is the unique BuildBucket
//     build ID.
// TEST
//     Contains all artifacts relevant to a particular test.  The directory's name is the
//     canonical name of the test - which is usually a test "suite".
// ENVIRONMENT
//     Contains all test artifacts relevant to a particular test environment. The
//     directory's name is the canonical name of the test environment. Tests will often
//     have multiple environment directories, because they often run in multiple
//     environments per build.
package artifacts
