blob: 0db2731be804e5c532579b6d91a6041dc9430bf7 [file] [log] [blame]
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// https://developers.google.com/protocol-buffers/docs/proto3
syntax = "proto3";
package apipb;
option go_package = "golang.org/x/build/maintner/maintnerd/apipb";
message HasAncestorRequest {
string commit = 1; // full git commit hash (subject of query)
string ancestor = 2; // full git commit hash of sought ancestor
}
message HasAncestorResponse {
// has_ancestor is whether ancestor appears in commit's history.
bool has_ancestor = 1;
// unknown_commit is true if the provided commit was unknown.
bool unknown_commit = 2;
}
message GetRefRequest {
string ref = 1; // "HEAD", "refs/heads/master", etc.
// Either gerrit_server & gerrit_project must be specified, or
// github. Currently only Gerrit is supported.
string gerrit_server = 2; // "go.googlesource.com"
string gerrit_project = 3; // "go"
// TODO: github, if/when needed.
}
message GetRefResponse {
string value = 1; // git commit, or empty string on miss
}
message GoFindTryWorkRequest {
// for_staging says whether this is a trybot request for the staging
// cluster. When using staging, the comment "Run-StagingTryBot"
// is used instead of label:Run-TryBot=1.
bool for_staging = 1;
}
message GoFindTryWorkResponse {
// waiting are the Gerrit CLs wanting a trybot run and not yet with results.
// These might already be running.
repeated GerritTryWorkItem waiting = 1;
}
message GerritTryWorkItem {
string project = 1; // "go", "net", etc. (Gerrit Project)
string branch = 2; // "master", "release-branch.go1.8", etc.
string change_id = 3; // "I1a27695838409259d1586a0adfa9f92bccf7ceba"
string commit = 4; // "ecf3dffc81dc21408fb02159af352651882a8383"
// go_commit is set for subrepos and is the Go commit(s) to test against.
// go_branch is a branch name of go_commit, for showing to users when
// a try set fails.
repeated string go_commit = 5; // "4833e920c1d7f6b23458e6ff3c73951fcf754219"
repeated string go_branch = 6; // "master", "release-branch.go1.8", etc.
// go_version specifies the major and minor version of the targeted Go toolchain.
// For Go repo, it contains exactly one element.
// For subrepos, it contains elements that correspond to go_commit.
repeated MajorMinor go_version = 7;
// try_message is the list of TRY=xxxx messages associated with Run-TryBot votes.
// It's sorted from oldest to newest.
repeated TryVoteMessage try_message = 8;
int32 version = 9; // which Gerrit revision number commit is
string author_email = 10; // "foo@bar.com"
}
message TryVoteMessage {
string message = 1; // just the part after "TRY=" until end of line, without \n
int64 author_id = 2; // Gerrit-internal ID
int32 version = 3; // revision number comment was for
}
message MajorMinor {
int32 major = 1;
int32 minor = 2;
}
message ListGoReleasesRequest {}
message ListGoReleasesResponse {
repeated GoRelease releases = 1;
}
message GoRelease {
int32 major = 1;
int32 minor = 2;
int32 patch = 3;
string tag_name = 4; // "go1.11.1", etc.
string tag_commit = 5; // "26957168c4c0cdcc7ca4f0b19d0eb19474d224ac"
// Release branch information for this major-minor version pair.
string branch_name = 6; // "release-branch.go1.11", etc.
string branch_commit = 7; // most recent commit on the release branch, e.g., "edb6c16b9b62ed8586d2e3e422911d646095b7e5"
}
message DashboardRequest {
// page is the zero-based page number.
// TODO: deprecate, replace with time or commit continuation token.
int32 page = 1;
// repo is which repo to show ("go", "golang.org/x/net", "" means go).
string repo = 2;
// branch specifies which branch to show ("master", "release-branch.go1.13").
// Empty means "master".
// The special branch value "mixed" means to blend together all branches by commit time.
string branch = 3;
// max_commits specifies the number of commits that are desired.
// Zero means to use a default.
int32 max_commits = 4;
}
message DashboardResponse {
// commits are the commits to display, starting with the newest.
repeated DashCommit commits = 1;
// commits_truncated is whether the returned commits were truncated.
bool commits_truncated = 5;
// repo_heads contains the current head commit (of their master
// branch) for every repo on Go's Gerrit server.
repeated DashRepoHead repo_heads = 2;
repeated string branches = 3;
// releases is the same content is ListGoReleasesResponse, but with the addition of a "master"
// release first, containing the info for the "master" branch, which is just commits[0]
// if page 0. But if page != 0, the master head wouldn't be
// available otherwise, so we denormalize it a bit here:
// It's sorted from newest to oldest (master, release-branch.go1.latest, release-branch.go1.prior)
// Only the branch_name and branch_commit fields are guaranteed to be populated.
repeated GoRelease releases = 4;
}
message DashCommit {
// commit is the git commit hash ("26957168c4c0cdcc7ca4f0b19d0eb19474d224ac").
string commit = 1;
// author_name is the git author name part ("Foo Bar").
string author_name = 2; // "Foo Bar"
// author_email is the git author email part ("foo@bar.com").
string author_email = 3; // "foo@bar.com"
// commit_time_sec is the timestamp of git commit time, in unix seconds.
int64 commit_time_sec = 4;
// title is the git commit's first line ("runtime: fix all the bugs").
string title = 5;
// branch is the branch this commit was queried from ("master", "release-branch.go1.14")/
// This is normally redundant but is useful when DashboardRequest.branch == "mixed".
string branch = 7;
// For non-go repos, go_commit_at_time is what the Go master commit was at
// the time of DashCommit.commit_time.
string go_commit_at_time = 6;
// For non-go repos, go_commit_latest is the most recent Go master commit that's
// older than the the following x/foo commit's commit_time.
// If DashCommit is the current HEAD, go_commit_at_time can continue to update.
// go_commit_at_time might be the same as go_commit_at_time.
string go_commit_latest = 8;
}
message DashRepoHead {
// gerrit_project is Gerrit project name ("net", "go").
string gerrit_project = 1;
// commit is the current top-level commit in that project.
// (currently always on the master branch)
DashCommit commit = 2;
}
service MaintnerService {
// HasAncestor reports whether one commit contains another commit
// in its git history.
rpc HasAncestor(HasAncestorRequest) returns (HasAncestorResponse);
// GetRef returns information about a git ref.
rpc GetRef(GetRefRequest) returns (GetRefResponse);
// Go-specific methods:
// GoFindTryWork finds trybot work for the coordinator to build & test.
rpc GoFindTryWork(GoFindTryWorkRequest) returns (GoFindTryWorkResponse);
// ListGoReleases lists Go releases sorted by version with latest first.
//
// A release is considered to exist for each git tag named "goX", "goX.Y", or
// "goX.Y.Z", as long as it has a corresponding "release-branch.goX" or
// "release-branch.goX.Y" release branch.
//
// ListGoReleases returns only the latest patch versions of releases which
// are considered supported per policy. For example, Go 1.12.6 and 1.11.11.
// The response is guaranteed to have two versions, otherwise an error
// is returned.
rpc ListGoReleases(ListGoReleasesRequest) returns (ListGoReleasesResponse);
// GetDashboard returns the information for the build.golang.org
// dashboard. It does not (at least currently)
// contain any pass/fail information; it only contains information on the branches
// and commits themselves.
rpc GetDashboard(DashboardRequest) returns (DashboardResponse);
}