blob: 53614daa97a6f122fe94741eed846be824544e39 [file] [log] [blame]
// Copyright 2021 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.
syntax = "proto3";
package fint;
option go_package = "go.fuchsia.dev/fuchsia/tools/integration/fint/proto";
import "google/protobuf/struct.proto";
// Various ninja build data.
message NinjaActionMetrics {
// The number of actions to complete the build in the beginning.
int32 initial_actions = 1;
// The number of actions executed at the end of the build.
// This may be less than the number of initial actions due to `restat`
// (dynamic action graph pruning).
int32 final_actions = 2;
// Breakdown of actions executed by type, e.g. "ACTION", "CXX", "STAMP".
map<string, int32> actions_by_type = 3;
}
message DebugFile {
// Absolute path to the file.
string path = 1;
// Relative path to which the file should be uploaded within the build's
// namespace in cloud storage.
string upload_dest = 2;
}
// BuildArtifacts contains information about the targets built by `fint build`.
message BuildArtifacts {
// A brief error log populated in case of a recognized failure mode (e.g. a
// Ninja compilation failure).
string failure_summary = 1;
// Images produced by the build. We use a struct to avoid needing to maintain
// a copy of the images.json schema here.
repeated google.protobuf.Struct built_images = 2;
// Archives produced by the build. We use a struct to avoid needing to
// maintain a copy of the images.json schema here.
repeated google.protobuf.Struct built_archives = 3;
// Absolute path to the Ninja log file.
string ninja_log_path = 4;
// Absolute path to a Ninja graph file.
string ninja_graph_path = 5;
// Absolute path to a Ninja compdb file.
string ninja_compdb_path = 6;
// The duration taken by the ninja build step.
int32 ninja_duration_seconds = 7;
// Various ninja build data
NinjaActionMetrics ninja_action_metrics = 8;
// Mapping from user-friendly title to absolute path for important log files
// that should be presented by the infrastructure for humans to read. We
// reference the logs by path rather than inlining the contents in the
// protobuf because the logs may be very long and inlining them would make it
// very hard for humans to read the output proto.
map<string, string> log_files = 9;
// Files to upload to cloud storage even if the build fails, to help with
// debugging and understanding build performance. Files produced by ninja
// targets themselves should *not* be uploaded via this mechanism, use
// artifactory instead.
repeated DebugFile debug_files = 10;
// Whether an analysis of the build graph determined that the changed files do
// not affect the build.
bool build_not_affected = 11;
// Names, as they appear in tests.json, of tests affected by the change under
// tests. This is determined by doing a build graph analysis of the files
// reported in the `changed_files` context spec field.
repeated string affected_tests = 12;
}