// 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
