使用元数据文件定义 Fuchsia 软件包信息

简介

Fuchsia 的 Gerrit 安装支持自定义结构化元数据文件。 这些文件旨在:

  • 人类可读,并提供名称、说明等实用信息 以及软件包的规范网址
  • 机器可读(方法是使用标准格式定义文件); 因此可能被自动化系统用来实现自动添加 或找出提醒系统应提交的 bug 组成部分 问题

目前,唯一自动用于元数据文件的操作是自动将 审核联系人,以及在添加/提交 CL 时发送电子邮件通知。这些 提交前部分对相关信息进行了详细说明。

元数据文件仅适用于第一方代码。

格式

元数据文件包括:

元数据消息类型如下:

syntax = "proto3";

// This proto is located at
// https://github.com/googleapis/googleapis/blob/master/google/type/date.proto
import "google/type/date.proto";

// IssueTracker contains the project configuration for the Google
// Issue Tracker.
message IssueTracker {
  int64 component_id = 1;
}

message Tracker {
  repeated IssueTracker issue_tracker = 2;
  // for_automation defines whether this tracker should be used by automated
  // processes (e.g. alerts).
  bool for_automation = 3;
}

message Presubmit {
  repeated string review_notify = 1;
  repeated string auto_reviewers = 2;
}

message Metadata {
  // name is the name of the API/Package/Program.
  string name = 1;
  string description = 2;
  // url points to some documentation/landing page.
  string url = 3;
  // Date this metadata was last reviewed by a human.
  google.type.Date last_reviewed_date = 4;
  repeated Tracker trackers = 5;
  // presubmits are used for defining presubmits.
  // The field is marked repeated for future expansion, but only
  // one message should be used.
  repeated Presubmit presubmits = 6;
}

以下是元数据文件的虚构示例:

name: "Fuchsia source code automation"
description: "A binary for automating source code gardening tasks"
url: "https://fuchsia.dev"
last_reviewed_date: {
    year: 2022
    month: 1
    day: 23
}
trackers: {
  issue_tracker: {
    component_id: 1478090
  }
}

presubmits: {
  auto_reviewers: "frodo@example.com"

  review_notify: "sauron@example.com"
  review_notify: "gandalf@example.com"
}

多个元数据文件

为了支持包含多个不同项目的大型代码库, METADATA.textproto 文件可在整个文件树中使用。元数据文件 会应用于自己的目录和以下所有目录。

提交前

presubmit字段用于指定审核人员 作为审核者 (auto_reviewers) 自动添加到每个更改列表中 更改列表发布后,应通过电子邮件通知的人员 已上传/已提交 (review_notify)。

以下是包含多个元数据文件的层次结构示例:

├── alice
   ├── METADATA.textproto
   └── README.md
├── foo
   └── bar
       ├── baz
          └── METADATA.textproto
          └── server.go
       └── METADATA.textproto
       └── hello.rs
├── METADATA.textproto
└── README.md

在“/METADATA.textproto”中指定的审核者会随时添加/通知 是对整个代码库中任何文件的更改。以下地点的评价者: /foo/bar/METADATA.textproto 适用于 /foo/bar 目录中的任何内容,例如 以及子目录 /foo/bar/baz。以下地点的评价者: /foo/bar/baz/METADATA.textproto仅适用于在 /foo/bar/baz/ 目录中。

与其他文件的关系

元数据文件与其他文件无关,例如 OWNERS(用于指定目录的所有者)或 README.fuchsia(用于定义第三方代码的元数据)。