| // 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); |
| } |