| syntax = "proto3"; |
| package autoroll.rpc; |
| option go_package = "go.skia.org/infra/autoroll/go/proto"; |
| |
| import "google/protobuf/timestamp.proto"; |
| |
| // AutoRollService provides interactions with the AutoRoll frontend. |
| service AutoRollService { |
| // GetRollers retrieves AutoRollMiniStatuses for all known rollers. |
| rpc GetRollers(GetRollersRequest) returns (GetRollersResponse); |
| // GetMiniStatus retrieves the AutoRollMiniStatus for one roller. |
| rpc GetMiniStatus(GetMiniStatusRequest) returns (GetMiniStatusResponse); |
| // GetStatus retrieves the AutoRollStatus for one roller. |
| rpc GetStatus(GetStatusRequest) returns (GetStatusResponse); |
| // SetMode sets the mode for a roller. |
| rpc SetMode(SetModeRequest) returns (SetModeResponse); |
| // SetStrategy sets the strategy for a roller. |
| rpc SetStrategy(SetStrategyRequest) returns (SetStrategyResponse); |
| // CreateManualRoll initiates the creation of a manual roll. |
| rpc CreateManualRoll(CreateManualRollRequest) returns (CreateManualRollResponse); |
| // Unthrottle clears any throttling of the roller, allowing it to roll again. |
| rpc Unthrottle(UnthrottleRequest) returns (UnthrottleResponse); |
| // GetConfig returns the given roller config. |
| rpc GetConfig(GetConfigRequest) returns (GetConfigResponse); |
| // PutConfig adds or updates the given roller config. |
| rpc PutConfig(PutConfigRequest) returns (PutConfigResponse); |
| } |
| |
| // Mode describes the valid operating modes of an autoroller. |
| // These must be kept in sync with autoroll/go/modes/modes.go. |
| enum Mode { |
| // RUNNING is the typical operating mode of the autoroller. It will upload and |
| // land CLs as new revisions appear in the Child. |
| RUNNING = 0; |
| // STOPPED prevents the autoroller from uploading any CLs. |
| STOPPED = 1; |
| // DRY_RUN is similar to RUNNING but does not land the roll CLs after the |
| // commit queue finishes. Instead, the active roll is left open until new |
| // revisions appear in the child, at which point the roll is closed and a new |
| // one is uploaded. |
| DRY_RUN = 2; |
| } |
| |
| // Strategy describes the valid strategies for choosing the next revision to |
| // roll. These must be kept in sync with autoroll/go/strategy/strategies.go. |
| enum Strategy { |
| // BATCH indicates that all not-yet-rolled revisions should be rolled in a |
| // single CL. |
| BATCH = 0; |
| // N_BATCH is similar to BATCH but puts a limit on the number of revisions in |
| // a single CL. |
| N_BATCH = 1; |
| // SINGLE indicates that a single revision is rolled in each CL. |
| SINGLE = 2; |
| } |
| |
| // AutoRollMiniStatus contains a subset of the information of AutoRollStatus. |
| message AutoRollMiniStatus { |
| // roller_id is the unique ID for this roller. |
| string roller_id = 1; |
| // child_name is the display name of the child. |
| string child_name = 2; |
| // parent_name is the display name of the parent. |
| string parent_name = 3; |
| // mode is the currently-set operating mode of the roller. |
| Mode mode = 4; |
| // current_roll_rev is the ID of the child revision which is being rolled in |
| // the active roll CL. |
| string current_roll_rev = 5; |
| // last_roll_rev is the ID of the child revision which is currently pinned by |
| // the parent. |
| string last_roll_rev = 6; |
| // num_failed is the number of consecutive roll failures. |
| int32 num_failed = 7; |
| // num_behind is the number of not-yet-rolled revisions. |
| int32 num_behind = 8; |
| } |
| |
| message TryJob { |
| // Result describes the possible results for a TryJob. |
| // These must be kept in sync with go/autoroll/autoroll.go. |
| enum Result { |
| // UNKNOWN indicates that the result of the TryJob is unknown, ie. it has |
| // not yet finished. |
| UNKNOWN = 0; |
| // SUCCESS indicates that that TryJob completed successfully. |
| SUCCESS = 1; |
| // FAILURE indicates that that TryJob failed. |
| FAILURE = 2; |
| // CANCELED indicates that that TryJob was canceled. |
| CANCELED = 3; |
| } |
| |
| // Status describes the lifecycle states of a TryJob. |
| // These must be kept in sync with go/autoroll/autoroll.go. |
| enum Status { |
| // SCHEDULED indicates that the TryJob has been scheduled but has not yet |
| // started. |
| SCHEDULED = 0; |
| // STARTED indicates that the TryJob is currently running. |
| STARTED = 1; |
| // COMPLETED indicates that the TryJob is finishes. |
| COMPLETED = 2; |
| } |
| |
| // name of the TryJob. |
| string name = 1; |
| // status of the TryJob. |
| Status status = 2; |
| // result of the TryJob. |
| Result result = 3; |
| // url where more details can be found about the TryJob. |
| string url = 4; |
| // category of the TryJob, eg. "cq". |
| string category = 5; |
| } |
| |
| // AutoRoll CL describes a CL uploaded by the autoroller. |
| message AutoRollCL { |
| // Result describes the possible results for an AutoRollCL. |
| enum Result { |
| // IN_PROGRESS indicates that the commit queue is still running for this |
| // AutoRollCL. |
| IN_PROGRESS = 0; |
| // SUCCESS indicates that this AutoRollCL landed successfully. |
| SUCCESS = 1; |
| // FAILURE indicates that the commit queue failed for this AutoRollCL. |
| FAILURE = 2; |
| // DRY_RUN_IN_PROGRESS indicates that the commit queue dry run is still |
| // running for this AutoRollCL. |
| DRY_RUN_IN_PROGRESS = 3; |
| // DRY_RUN_SUCCESS indicates that the commit queue dry run succeeded for |
| // this AutoRollCL. |
| DRY_RUN_SUCCESS = 4; |
| // DRY_RUN_FAILURE indicates that the commit queue dry run failed for this |
| // AutoRollCL. |
| DRY_RUN_FAILURE = 5; |
| } |
| |
| // id is the unique identifier for the CL. |
| string id = 1; |
| // result of the AutoRollCL. |
| Result result = 2; |
| // subject line of the commit message of the AutoRollCL. |
| string subject = 3; |
| // rolling_to is the ID of the revision being rolled. |
| string rolling_to = 4; |
| // rolling_from is the ID of the currently-pinned revision. |
| string rolling_from = 5; |
| // created is the timestamp at which the AutoRollCL was created. |
| google.protobuf.Timestamp created = 6; |
| // created is the timestamp at which the AutoRollCL was last modified. |
| google.protobuf.Timestamp modified = 7; |
| // try_jobs contains results of any try jobs for the AutoRollCL. |
| repeated TryJob try_jobs = 8; |
| } |
| |
| // Revision describes a single revision in a given Child. This may be a Git |
| // commit, CIPD package instance, a file uploaded to GCS, etc. |
| message Revision { |
| // id is the unique identifier for the Revision. |
| string id = 1; |
| // display is a human-friendly display name for the Revision. |
| string display = 2; |
| // description is a longer description of the Revision. |
| string description = 3; |
| // time is the timestamp at which the Revision was created. |
| google.protobuf.Timestamp time = 4; |
| // url where more details can be found about the Revision. |
| string url = 5; |
| } |
| |
| // AutoRollConfig describes the configuration for a roller. |
| message AutoRollConfig { |
| // parent_waterfall is the URL of the CI display for the parent repo. |
| string parent_waterfall = 1; |
| // roller_id is the unique identifier for the roller. |
| string roller_id = 2; |
| // supports_manual_rolls indicates whether this autoroller supports manually- |
| // triggered rolls. |
| bool supports_manual_rolls = 3; |
| // time_window describes the limitations, if any, on when the autoroller is |
| // allowed to upload roll CLs. |
| string time_window = 4; |
| } |
| |
| // ModeChange describes one instance of an autoroller's mode being changed. |
| message ModeChange { |
| // roller_id is the unique identifier for the autoroller. |
| string roller_id = 1; |
| // mode is the operating mode of the autoroller which was set in this |
| // ModeChange. |
| Mode mode = 2; |
| // user is the email address of the user who created this ModeChange. |
| string user = 3; |
| // time is the timestamp at which the ModeChange was created. |
| google.protobuf.Timestamp time = 4; |
| // message is a user-created message which describes the reason for changing |
| // the mode. |
| string message = 5; |
| } |
| |
| // StrategyChange describes one instance of an autoroller's mode being changed. |
| message StrategyChange { |
| // roller_id is the unique identifier for the autoroller. |
| string roller_id = 1; |
| // strategy is the strategy for choosing the next revision to roll which was |
| // set in this StrategyChange. |
| Strategy strategy = 2; |
| // user is the email address of the user who created this StrategyChange. |
| string user = 3; |
| // time is the timestamp at which the StrategyChange was created. |
| google.protobuf.Timestamp time = 4; |
| // message is a user-created message which describes the reason for changing |
| // the strategy. |
| string message = 5; |
| } |
| |
| // ManualRoll describes a manually-triggered roll and its results. |
| message ManualRoll { |
| // Result describes the possible results for a manual roll. |
| // These must be kept in sync with autoroll/go/manual/db.go. |
| enum Result { |
| // UNKNOWN indicates that the result of the ManualRoll is unknown, ie. it |
| // has not yet finished. |
| UNKNOWN = 0; |
| // FAILURE indicates that the ManualRoll has failed. |
| FAILURE = 1; |
| // SUCCESS indicates that the ManualRoll landed successfully. |
| SUCCESS = 2; |
| } |
| |
| // Status describes the lifecycle states of a manual roll. |
| // These must be kept in sync with autoroll/go/manual/db.go. |
| enum Status { |
| // PENDING indicates that the ManualRoll has been requested but no CL has |
| // been uploaded. |
| PENDING = 0; |
| // STARTED indicates that a CL has been uploaded for this ManualRoll. |
| STARTED = 1; |
| // COMPLETED indicates that the ManualRoll has finished and either landed |
| // successfully or failed. |
| COMPLETED = 2; |
| } |
| |
| // id is the unique identifier for this ManualRoll. |
| string id = 1; |
| // roller_id is the unique identifier for the autoroller on which this |
| // ManualRoll was requested. |
| string roller_id = 2; |
| // revision is the ID of the revision to which this ManualRoll will roll. |
| string revision = 3; |
| // requester is the email address of the person who requested the ManualRoll. |
| string requester = 4; |
| // result of the ManualRoll. |
| Result result = 5; |
| // status of the ManualRoll. |
| Status status = 6; |
| // timestamp at which the ManualRoll was created. |
| google.protobuf.Timestamp timestamp = 7; |
| // url of the ManualRoll, if a roll has been uploaded. |
| string url = 8; |
| // dry_run indicates whether the ManualRoll should be performed as a dry run, |
| // so that the commit queue runs but the CL is not landed. |
| bool dry_run = 9; |
| // no_email specifies that the requester and reviewers should not receive |
| // email related to this ManualRoll. |
| bool no_email = 10; |
| // no_resolve_revision specifies that the autoroller should not attempt to |
| // find the requested revision ID in the Child but should simply use it as |
| // provided. |
| bool no_resolve_revision = 11; |
| } |
| |
| // AutoRollStatus describes the overall status of an autoroller. |
| message AutoRollStatus { |
| // mini_status contains a subset of status information for the autoroller. |
| AutoRollMiniStatus mini_status = 1; |
| // status is the current status of the autoroller, as provided by the state |
| // machine. |
| string status = 2; |
| // config provides configuration information for the autoroller. |
| AutoRollConfig config = 3; |
| // full_history_url is the URL where the autoroller's history may be viewed. |
| string full_history_url = 4; |
| // issue_url_base provides a base URL which can be used to construct URLs for |
| // individual AutoRollCLs. |
| string issue_url_base = 5; |
| // mode is the current operating mode of the autoroller. |
| ModeChange mode = 6; |
| // strategy for choosing the next revision to roll. |
| StrategyChange strategy = 7; |
| // not_rolled_revisions are the revisions of the Child which have not yet been |
| // rolled. |
| repeated Revision not_rolled_revisions = 8; |
| // current_roll is the active roll CL, if any. |
| AutoRollCL current_roll = 9; |
| // last_roll is the previous roll CL. |
| AutoRollCL last_roll = 10; |
| // recent_rolls contains a list of recent roll CLs. |
| repeated AutoRollCL recent_rolls = 11; |
| // manual_rolls contains a list of recent ManualRolls. |
| repeated ManualRoll manual_rolls = 12; |
| // error contains a detailed message if the autoroller is in an error state. |
| string error = 13; |
| // throttled_until is the timestamp at which the autoroller will no longer be |
| // throttled, if the autoroller is currently throttled. |
| google.protobuf.Timestamp throttled_until = 14; |
| } |
| |
| // GetRollersRequest is a request to GetRollers. |
| message GetRollersRequest {} |
| |
| // GetRollersResponse is a response returned by GetRollers. |
| message GetRollersResponse { |
| // rollers contains status information for all known autorollers. |
| repeated AutoRollMiniStatus rollers = 1; |
| } |
| |
| // GetMiniStatusRequest is a request to GetMiniStatus. |
| message GetMiniStatusRequest { |
| // roller_id is the unique identifier of the autoroller whose MiniStatus is to |
| // be retrieved. |
| string roller_id = 1; |
| } |
| |
| // GetMiniStatusResponse is a response returned by GetMiniStatus. |
| message GetMiniStatusResponse { |
| // status is a subset of status information for the autoroller in question. |
| AutoRollMiniStatus status = 1; |
| } |
| |
| // GetStatusRequest is a request to GetStatus. |
| message GetStatusRequest { |
| // roller_id is the unique identifier of the autoroller whose Status is to be |
| // retrieved. |
| string roller_id = 1; |
| } |
| |
| // GetStatusResponse is a response returned by GetStatus. |
| message GetStatusResponse { |
| // status information about the autoroller in question. |
| AutoRollStatus status = 1; |
| } |
| |
| // SetModeRequest is a request to SetMode. |
| message SetModeRequest { |
| // roller_id is the unique identifier of the autoroller whose mode is to be |
| // changed. |
| string roller_id = 1; |
| // mode is the desired mode to set for the given autoroller. |
| Mode mode = 2; |
| // message describes the reason for changing the mode. |
| string message = 4; |
| } |
| |
| // SetModeResponse is a response returned by SetMode. |
| message SetModeResponse { |
| // status is the updated status of the autoroller after changing its mode. |
| AutoRollStatus status = 1; |
| } |
| |
| // SetStrategyRequest is a request to SetStrategy. |
| message SetStrategyRequest { |
| // roller_id is the unique identifier of the autoroller whose strategy is to |
| // be changed. |
| string roller_id = 1; |
| // strategy is the desired strategy to set for the given autoroller. |
| Strategy strategy = 2; |
| // message describes the reason for changing the strategy. |
| string message = 4; |
| } |
| |
| // SetStrategyResponse is a response returned by SetStrategy. |
| message SetStrategyResponse { |
| // status is the updated status of the autoroller after changing its strategy. |
| AutoRollStatus status = 1; |
| } |
| |
| // CreateManualRollRequest is a request to CreateManualRoll. |
| message CreateManualRollRequest { |
| // roller_id is the unique identifier of the autoroller which should create |
| // the manual roll. |
| string roller_id = 1; |
| // revision is the ID of the revision to be rolled. |
| string revision = 2; |
| } |
| |
| // CreateManualRollResponse is a response returned by CreateManualRoll. |
| message CreateManualRollResponse { |
| // roll is the manual roll which was created. |
| ManualRoll roll = 1; |
| } |
| |
| // UnthrottleRequest is a request to Unthrottle. |
| message UnthrottleRequest { |
| // roller_id is the unique identifier of the autoroller which should be |
| // unthrottled. |
| string roller_id = 1; |
| } |
| |
| // UnthrottleResponse is a response returned by Unthrottle. |
| message UnthrottleResponse {} |
| |
| // GetConfigRequest is a request to GetConfig. |
| message GetConfigRequest { |
| // roller_id is the unique identifier of the autoroller whose config is to be |
| // retrieved. |
| string roller_id = 1; |
| } |
| |
| // GetConfigResponse is a response returned by GetConfig. |
| message GetConfigResponse { |
| // config is the config for the requested autoroller. |
| Config config = 1; |
| } |
| |
| // PutConfigRequest is a request to PutConfig. |
| message PutConfigRequest { |
| // config is the new or updated config for a given roller. |
| Config config = 1; |
| } |
| |
| // PutConfigResponse is a response returned by PutConfig. |
| message PutConfigResponse { |
| // cl is the URL of the generated CL to add or update the requested config. |
| string cl = 1; |
| } |
| |
| // Config provides configuration for one AutoRoller. |
| message Config { |
| // roller_name is the name for this roller. It is used as the unique ID for |
| // the roller. |
| // TODO(borenet): Use an actual DB-generated ID for the roller. |
| string roller_name = 1; |
| // child_display_name is the human-readable display name of the child. |
| string child_display_name = 2; |
| // parent_display_name is the human-readable display name of the parent. |
| string parent_display_name = 3; |
| // parent_waterfall is the URL of the waterfall display of the parent repo. |
| string parent_waterfall = 4; |
| // owner_primary is the primary owner of this roller. |
| string owner_primary = 5; |
| // owner_secondary is the secondary owner of this roller. |
| string owner_secondary = 6; |
| // contacts is a list of email addresses of contacts for this roller, used |
| // for sending PSAs, asking questions, etc. |
| repeated string contacts = 7; |
| // service_account is the full email address of the service account for this |
| // roller. |
| string service_account = 8; |
| // is_internal indicates whether this roller is internal, ie. only visible |
| // to Googlers. |
| // TODO(borenet): Is this necessary? |
| bool is_internal = 9; |
| // reviewer are the email addresses to add as reviewers on rolls, or URL(s) |
| // from which to obtain those email addresses. |
| repeated string reviewer = 10; |
| // reviewer_backup are backup email addresses to add as reviewers on rolls, |
| // in case obtaining the email addresses from the URL fails. Only required |
| // if a URL is specified for the reviewer. |
| repeated string reviewer_backup = 11; |
| // roll_cooldown is a period of time after a successful roll attempt during |
| // which no new roll attempts will be created. Optional. |
| string roll_cooldown = 12; |
| // time_window in which the roller is allowed to upload roll CLs. See the |
| // go/time_window package for supported format. |
| string time_window = 13; |
| // supports_manual_rolls indicates whether this roller supports manual |
| // rolls. |
| bool supports_manual_rolls = 14; |
| // commit_msg provides configuration for the commit message. |
| CommitMsgConfig commit_msg = 15; |
| // code_review provides configuration for code review. |
| oneof code_review { |
| // gerrit provides configuration for code review using Gerrit. |
| GerritConfig gerrit = 16; |
| // github provides configuration for code review using GitHub. |
| GitHubConfig github = 17; |
| // google3 provides configuration for code review using Google3. |
| Google3Config google3 = 18; |
| } |
| // kubernetes provides configuration for Kubernetes. |
| KubernetesConfig kubernetes = 19; |
| // repo_manager provides configuration for the repo manager. |
| oneof repo_manager { |
| ParentChildRepoManagerConfig parent_child_repo_manager = 20; |
| AndroidRepoManagerConfig android_repo_manager = 21; |
| CommandRepoManagerConfig command_repo_manager = 22; |
| FreeTypeRepoManagerConfig freetype_repo_manager = 23; |
| FuchsiaSDKAndroidRepoManagerConfig fuchsia_sdk_android_repo_manager = 24; |
| Google3RepoManagerConfig google3_repo_manager = 25; |
| } |
| // notifiers configures any extra notifications used by this roller. |
| repeated NotifierConfig notifiers = 26; |
| // safety_throttle provides configuration for safety-throttling the roller |
| // in case of persistent errors. |
| ThrottleConfig safety_throttle = 27; |
| // transitive_deps is an optional mapping of dependency ID (eg. repo URL) |
| // to the paths within the parent and child repo, respectively, where |
| // those dependencies are versioned, eg. "DEPS". |
| // TODO(borenet): Where is this used? Why isn't it nested within the repo |
| // manager config? |
| repeated TransitiveDepConfig transitive_deps = 28; |
| } |
| |
| // CommitMsgConfig provides configuration for commit messages. |
| message CommitMsgConfig { |
| // bug_project indicates which project (eg. in Monorail) the bugs attached |
| // to various revisions are associated with. If provided, any "Bug: " lines |
| // from revisions in the roll which match the given project name will be |
| // included in the roll itself. |
| string bug_project = 1; |
| // child_log_url_tmpl is a template for building log URLs using the IDs of |
| // the from- and to-revisions of the child for a given roll. |
| string child_log_url_tmpl = 2; |
| // cq_extra_trybots are additional tryjobs to trigger as part of the commit |
| // queue for every roll. |
| repeated string cq_extra_trybots = 3; |
| // cq_do_not_cancel_trybots indicates that the commit queue should not |
| // cancel tryjobs from old patch sets when a new patch set is uploaded. |
| bool cq_do_not_cancel_trybots = 4; |
| // include_log indicates whether the list of revisions contained in the roll |
| // should be included as part of the commit message. |
| bool include_log = 5; |
| // include_revision_count indicates whether the number of revisions |
| // contained in the roll should be included in the subject line of the |
| // commit message. |
| bool include_revision_count = 6; |
| // include_tbr_line indicates whether the "TBR:" line should be included in |
| // the commit message. This is required for some commit queues. |
| bool include_tbr_line = 7; |
| // include_tests indicates whether the "Test: " lines from the revisions in |
| // the roll should be propagated through to the roll itself. |
| bool include_tests = 8; |
| |
| // BuiltIn lists the built-in commit message templates. |
| enum BuiltIn { |
| // DEFAULT is the default commit message template. |
| DEFAULT = 0; |
| // ANDROID is the commit message template used for Android rollers. |
| ANDROID = 1; |
| } |
| |
| // template specifies exactly how the commit message should be structured. |
| // If not specified, the default template is used. |
| oneof template { |
| // built_in is the name of a built-in commit message template. |
| BuiltIn built_in = 9; |
| // custom is a full custom commit message template string. |
| string custom = 10; |
| } |
| } |
| |
| // GerritConfig provides configuration for code review using Gerrit. |
| message GerritConfig { |
| // url of the Gerrit host. |
| string url = 1; |
| // project name for uploaded CLs. |
| string project = 2; |
| |
| // Config lists the built-in Gerrit configs, named for the projects which |
| // use them. |
| enum Config { |
| ANDROID = 0; |
| ANGLE = 1; |
| CHROMIUM = 2; |
| CHROMIUM_NO_CQ = 3; |
| LIBASSISTANT = 4; |
| } |
| // config indicates the mode of operation used by the Gerrit host, which |
| // informs the roller of, for example, which labels to set. See the |
| // autoroll/go/codereview package for possible values. |
| Config config = 3; |
| } |
| |
| // GitHubConfig provides configuration for code review using GitHub. |
| message GitHubConfig { |
| // repo_owner is the owner of the GitHub repo. |
| string repo_owner = 1; |
| // repo_name is the name of the GitHub repo. |
| string repo_name = 2; |
| // checks_wait_for indicates which GitHub checks must succeed before a pull |
| // request may be merged. If they are failing, we wait for them to succeed |
| // (eg. tree-status checks). Note: These checks are ignored during dry runs |
| // because the PR is not going to be submitted so the tree-status checks |
| // will not be important in that case. |
| repeated string checks_wait_for = 3; |
| } |
| |
| // Google3Config is an empty configuration object for Google3. |
| message Google3Config {} |
| |
| // KubernetesConfig provides Kubernetes configuration for the autoroll backend |
| // service for this roller. |
| message KubernetesConfig { |
| // cpu is the requested number of CPUs, eg. "250m". |
| string cpu = 1; |
| // memory is the requested memory, eg. "2Gi". |
| string memory = 2; |
| // readiness_failure_threshold indicates how many times the ready check may |
| // fail. |
| int32 readiness_failure_threshold = 3; |
| // readiness_initial_delay_seconds indicates how long to wait before |
| // performing the ready check for the first time. |
| int32 readiness_initial_delay_seconds = 4; |
| // readiness_period_seconds indicates how often to perform the ready check. |
| int32 readiness_period_seconds = 5; |
| // disk indicates the size of the requested persistent disk. If not |
| // specified, no persistent disk is used. |
| string disk = 6; |
| // secrets provided to the pod. |
| repeated KubernetesSecret secrets = 7; |
| } |
| |
| // KubernetesSecret provides configuration for a Kubernetes secret. |
| message KubernetesSecret { |
| // name of the secret. |
| string name = 1; |
| // mount_path of the secret. |
| string mount_path = 2; |
| } |
| |
| // AndroidRepoManagerConfig provides configuration for a roller which rolls into |
| // Android. |
| message AndroidRepoManagerConfig { |
| // ProjectMetadataFileConfig provides configuration for METADATA files in |
| // the Android repo. |
| message ProjectMetadataFileConfig { |
| // file_path of the project metadata file within the repo. |
| string file_path = 1; |
| // name of the project. |
| string name = 2; |
| // description of the project. |
| string description = 3; |
| // home_page of the project. |
| string home_page = 4; |
| // git_url of the project. |
| string git_url = 5; |
| // license_type of the project. |
| string license_type = 6; |
| } |
| |
| // child_repo_url is the URL of the child repo. |
| string child_repo_url = 1; |
| // child_branch is the Git branch of the child repo to track. |
| string child_branch = 2; |
| // child_path is the path to the child repo within the parent. |
| string child_path = 3; |
| // parent_repo_url is the URL of the parent repo. |
| string parent_repo_url = 4; |
| // parent_branch is the Git branch of the parent repo to track. |
| string parent_branch = 5; |
| // child_rev_link_tmpl is a template used to create links to revisions of |
| // the child repo. If not supplied, no links will be created. |
| string child_rev_link_tmpl = 6; |
| // child_subdir indicates the subdirectory of the working directory (not the |
| // parent repo) in which the child_path should be rooted. In most cases this |
| // should be empty, but if child_path is relative to the parent repo dir |
| // (eg. when DEPS specifies use_relative_paths), then this is required. |
| string child_subdir = 7; |
| // pre_upload_steps are named steps to run before uploading roll CLs. |
| repeated PreUploadStep pre_upload_steps = 8; |
| // metadata about the child project which should be updated in a file |
| // checked into the parent repo. |
| ProjectMetadataFileConfig metadata = 9; |
| } |
| |
| // CommandRepoManagerConfig provides configuration for a roller which runs |
| // specified commands to perform different functions. |
| message CommandRepoManagerConfig { |
| message CommandConfig { |
| // command to run. If this is the command used to update the revision of |
| // the Child, this should be a text template which uses SetPinnedRevVars |
| // to get the from- and to-revisions. |
| repeated string command = 1; |
| // dir is the relative path within the Git checkout to run the command. |
| string dir = 2; |
| // env are environment variables to supply to the command, in KEY=VALUE |
| // format. |
| repeated string env = 3; |
| } |
| |
| // git_checkout configures the Git checkout of the parent repo. |
| GitCheckoutConfig git_checkout = 1; |
| // short_rev_regex is a regular expression used to shorten revision IDs for |
| // display. |
| string short_rev_regex = 2; |
| // get_tip_rev is a command used to obtain the latest revision of the Child. |
| CommandConfig get_tip_rev = 3; |
| // get_pinned_rev is a command used to obtain the currently-pinned revision |
| // of the Child. |
| CommandConfig get_pinned_rev = 4; |
| // set_pinned_rev is a command used to update the currently-pinned revision |
| // of the Child. |
| CommandConfig set_pinned_rev = 5; |
| } |
| |
| // FreeTypeRepoManagerConfig provides configuration for the FreeType roller. |
| message FreeTypeRepoManagerConfig { |
| FreeTypeParentConfig parent = 1; |
| GitilesChildConfig child = 2; |
| } |
| |
| // FuchsiaSDKAndroidRepoManagerConfig provides configuration for the Fuchsia SDK |
| // into Android roller. |
| message FuchsiaSDKAndroidRepoManagerConfig { |
| GitCheckoutParentConfig parent = 1; |
| FuchsiaSDKChildConfig child = 2; |
| // gen_sdk_bp_repo is the repo URL for the generation script. |
| string gen_sdk_bp_repo = 3; |
| // gen_sdk_bp_branch is the branch of the generation script. |
| string gen_sdk_bp_branch = 4; |
| } |
| |
| // Google3RepoManagerConfig provides configuration for a roller into Google3. |
| message Google3RepoManagerConfig { |
| // child_branch is the branch of the child repo to track. |
| string child_branch = 1; |
| // child_repo is the URL of the child repo. |
| string child_repo = 2; |
| } |
| |
| // ParentChildRepoManagerConfig provides configuration for a roller which |
| // combines a pre-defined Parent and Child type. |
| message ParentChildRepoManagerConfig { |
| // parent is the entity which depends on the child and receives the rolls. |
| oneof parent { |
| CopyParentConfig copy_parent = 1; |
| DEPSLocalGitHubParentConfig deps_local_github_parent = 2; |
| DEPSLocalGerritParentConfig deps_local_gerrit_parent = 3; |
| GitCheckoutGitHubFileParentConfig git_checkout_github_file_parent = 4; |
| GitilesParentConfig gitiles_parent = 5; |
| } |
| // child is the entity which is depended on by the parent and is rolled. |
| oneof child { |
| CIPDChildConfig cipd_child = 6; |
| FuchsiaSDKChildConfig fuchsia_sdk_child = 7; |
| GitCheckoutChildConfig git_checkout_child = 8; |
| GitCheckoutGitHubChildConfig git_checkout_github_child = 9; |
| GitilesChildConfig gitiles_child = 10; |
| SemVerGCSChildConfig semver_gcs_child = 11; |
| } |
| // revision_filter filters out revisions of the child which should not be |
| // considered as roll candidates. |
| oneof revision_filter { |
| BuildbucketRevisionFilterConfig buildbucket_revision_filter = 12; |
| } |
| } |
| |
| // CopyParentConfig provides configuration for a Parent which copies the Child |
| // into itself. It uses Gitiles and Gerrit instead of a local checkout. |
| message CopyParentConfig { |
| message CopyEntry { |
| // src_rel_path is the relative path within the Child. |
| string src_rel_path = 1; |
| // dst_rel_path is the relative path within the Parent. |
| string dst_rel_path = 2; |
| } |
| |
| GitilesParentConfig gitiles = 1; |
| repeated CopyEntry copies = 2; |
| } |
| |
| // DEPSLocalGitHubParentConfig provides configuration for a Parent which uses a |
| // local Git checkout with DEPS and uploads pull requests to GitHub. |
| message DEPSLocalGitHubParentConfig { |
| DEPSLocalParentConfig deps_local = 1; |
| GitHubConfig github = 2; |
| string fork_repo_url = 3; |
| } |
| |
| // DEPSLocalGerritParentConfig provides configuration for a Parent which uses a |
| // local Git checkout with DEPS and uploads CLs to Gerrit. |
| message DEPSLocalGerritParentConfig { |
| DEPSLocalParentConfig deps_local = 1; |
| GerritConfig gerrit = 2; |
| } |
| |
| // GitCheckoutGitHubParentConfig provides configuration for a Parent which |
| // uses a local Git checkout and uploads pull requests to GitHub. |
| // TODO(borenet): Why doesn't this contain the GitHubConfig? Is this even |
| // needed? |
| message GitCheckoutGitHubParentConfig { |
| GitCheckoutParentConfig git_checkout = 1; |
| string fork_repo_url = 2; |
| } |
| |
| // GitCheckoutGitHubFileParentConfig provides configuration for a Parent which |
| // uses a local Git checkout and uploads pull requests to GitHub. |
| message GitCheckoutGitHubFileParentConfig { |
| GitCheckoutGitHubParentConfig git_checkout = 1; |
| repeated PreUploadStep pre_upload_steps = 2; |
| } |
| |
| // GitilesParentConfig provides configuration for a Parent which uses Gitiles. |
| message GitilesParentConfig { |
| GitilesConfig gitiles = 1; |
| DependencyConfig dep = 2; |
| GerritConfig gerrit = 3; |
| } |
| |
| // GitilesConfig provides configuration for a Git repo in Gitiles. |
| message GitilesConfig { |
| // branch to track. |
| string branch = 1; |
| // repo_url from which to load Git data. |
| string repo_url = 2; |
| // dependencies is an optional specification of dependencies to track. |
| // Revisions generated by the checkout will contain the pinned versions of |
| // these dependencies. |
| repeated VersionFileConfig dependencies = 3; |
| } |
| |
| // DEPSLocalConfig provides configuration for a Parent which uses a local |
| // checkout and DEPS to manage dependencies. |
| message DEPSLocalParentConfig { |
| GitCheckoutParentConfig git_checkout = 1; |
| // child_path is the path to the child repo within the parent. |
| string child_path = 2; |
| // child_subdir is the subdirectory of the workdir in which the child_path |
| // should be rooted. In most cases, this should be empty, but if child_path |
| // is relative to the parent repo dir (eg. when DEPS specifies |
| // use_relative_paths), then this is required. |
| string child_subdir = 3; |
| // checkout_path is the path to the repo within the checkout root |
| string checkout_path = 4; |
| // gclient_spec overrides the default gclient spec. |
| string gclient_spec = 5; |
| // pre_upload_steps are steps to run before uploading the CL. |
| repeated PreUploadStep pre_upload_steps = 6; |
| // run_hooks indicates whether to run "gclient runhooks" after syncing. |
| bool run_hooks = 7; |
| } |
| |
| // GitCheckoutParentConfig provides configuration for a Parent which uses a |
| // local checkout to create changes. |
| message GitCheckoutParentConfig { |
| GitCheckoutConfig git_checkout = 1; |
| DependencyConfig dep = 2; |
| } |
| |
| // FreeTypeParentConfig provides configuration for the FreeType Parent. |
| message FreeTypeParentConfig { |
| GitilesParentConfig gitiles = 1; |
| } |
| |
| // CIPDChildConfig provides configuration for a CIPD package Child. |
| message CIPDChildConfig { |
| // name of the package. |
| string name = 1; |
| // tag to track. |
| string tag = 2; |
| } |
| |
| // FuchsiaSDKChildConfig provides configuration for the Fuchsia SDK Child. |
| message FuchsiaSDKChildConfig { |
| // include_mac_sdk indicates whether to also roll the version of the Mac |
| // SDK. Note that the dependency is not tracked separately; the Mac SDK is |
| // simply rolled to the newest available version. |
| bool include_mac_sdk = 1; |
| } |
| |
| // SemVerGCSChildConfig provides configuration for a Child in GCS which uses |
| // semantic versioning. |
| message SemVerGCSChildConfig { |
| GCSChildConfig gcs = 1; |
| // short_rev_regex is a regular expression string which indicates what part |
| // of the revision ID string should be used as the shortened ID for display. |
| // If not specified, the full ID string is used. |
| string short_rev_regex = 2; |
| // version_regex is a regular expression string containing one or more |
| // integer capture groups. The integers matched by the capture groups are |
| // compared, in order, when comparing two revisions. |
| string version_regex = 3; |
| } |
| |
| // GCSChildConfig provides configuration for a Child in GCS. |
| message GCSChildConfig { |
| // gcs_bucket used for finding Child revisions. |
| string gcs_bucket = 1; |
| // gcs_path within the bucket which contains child revisions. |
| string gcs_path = 2; |
| } |
| |
| // GitCheckoutChildConfig provides configuration for a Child which uses a local |
| // Git checkout. |
| message GitCheckoutChildConfig { |
| GitCheckoutConfig git_checkout = 1; |
| } |
| |
| // GitCheckoutGitHubChildConfig provides configuration for a Child which uses a |
| // local checkout of a GitHub repo. |
| message GitCheckoutGitHubChildConfig { |
| GitCheckoutChildConfig git_checkout = 1; |
| string repo_owner = 2; |
| string repo_name = 3; |
| } |
| |
| // GitilesChildConfig provides configuration for a Child which uses Gitiles. |
| message GitilesChildConfig { |
| GitilesConfig gitiles = 1; |
| // path indicates an optional single path of the repo to watch for changes; |
| // all commits which do not change this path are ignored. Note that this |
| // may produce strange results if the Git history for the path is not |
| // linear. |
| string path = 2; |
| } |
| |
| // PreUploadStep lists the known pre-upload steps which may be run before roll |
| // CLs are uploaded. These must be kept in sync with |
| // go/repo_manager/parent/pre_upload_steps.go. |
| enum PreUploadStep { |
| ANGLE_CODE_GENERATION = 0; |
| ANGLE_GN_TO_BP = 1; |
| ANGLE_ROLL_CHROMIUM = 2; |
| GO_GENERATE_CIPD = 3; |
| FLUTTER_LICENSE_SCRIPTS = 4; |
| FLUTTER_LICENSE_SCRIPTS_FOR_DART = 5; |
| FLUTTER_LICENSE_SCRIPTS_FOR_FUCHSIA = 6; |
| SKIA_GN_TO_BP = 7; |
| TRAIN_INFRA = 8; |
| UPDATE_FLUTTER_DEPS_FOR_DART = 9; |
| } |
| |
| |
| // NotifierConfig provides configuration for a notification system. |
| message NotifierConfig { |
| // LogLevel categorizes messages similarly to log severity. |
| enum LogLevel { |
| SILENT = 0; |
| ERROR = 1; |
| WARNING = 2; |
| INFO = 3; |
| DEBUG = 4; |
| } |
| |
| // MsgType categorizes notifications based on their type. |
| enum MsgType { |
| ISSUE_UPDATE = 0; |
| LAST_N_FAILED = 1; |
| MODE_CHANGE = 2; |
| NEW_FAILURE = 3; |
| NEW_SUCCESS = 4; |
| ROLL_CREATION_FAILED = 5; |
| SAFETY_THROTTLE = 6; |
| STRATEGY_CHANGE = 7; |
| SUCCESS_THROTTLE = 8; |
| } |
| |
| // log_level allows all messages at and above the given severity to be |
| // sent. Mutually exclusive with msg_type. |
| LogLevel log_level = 1; |
| // msg_type limits the notifier to only send messages of the given |
| // types. Mutually exclusive with log_level. |
| repeated MsgType msg_type = 2; |
| |
| // config provides configuration for the specific type of notifier. |
| oneof config { |
| EmailNotifierConfig email = 3; |
| ChatNotifierConfig chat = 4; |
| MonorailNotifierConfig monorail = 5; |
| PubSubNotifierConfig pubsub = 6; |
| } |
| |
| // subject indicates a subject line which overrides the default subject line |
| // for every notification message, if provided. |
| string subject = 7; |
| } |
| |
| // EmailNotifierConfig provides configuration for email notifications. |
| message EmailNotifierConfig { |
| // emails are the email addresses which should receive notifications. |
| repeated string emails = 1; |
| } |
| |
| // ChatNotifierConfig provides configuration for Google Chat notifications. |
| message ChatNotifierConfig { |
| // room_id in which to post messages. |
| string room_id = 1; |
| } |
| |
| // MonorailNotifierConfig provides configuration for bug-filing "notifications" |
| // using Monorail. |
| message MonorailNotifierConfig { |
| // project name under which to file bugs. Required. |
| string project = 1; |
| // owner of bugs filed in Monorail. Required. |
| string owner = 2; |
| // cc these email addresses on bugs filed in Monorail. |
| repeated string cc = 3; |
| // components to apply to bugs filed in Monorail. |
| repeated string components = 4; |
| // labels to apply to bugs filed in Monorail. |
| repeated string labels = 5; |
| } |
| |
| // PubSubNotifierConfig provides configuration for PubSub notifications. |
| message PubSubNotifierConfig { |
| // topic under which to publish PubSub messages. |
| string topic = 1; |
| } |
| |
| // ThrottleConfig provides configuration for throttling. |
| message ThrottleConfig { |
| // attempt_count indicates the number of failed attempts after which to |
| // begin throttling. |
| int32 attempt_count = 1; |
| // time_window during which, if the number of failed attempts exceeds the |
| // specified attempt_count, throttling is enabled. |
| string time_window = 2; |
| } |
| |
| // TransitiveDepConfig provides configuration for a dependency referenced by |
| // both the parent and child, to be updated in the parent to match the revision |
| // depended on by the child at the revision being rolled. |
| message TransitiveDepConfig { |
| // child dependency information. |
| VersionFileConfig child = 1; |
| // parent dependency information. |
| VersionFileConfig parent = 2; |
| } |
| |
| // VersionFileConfig provides configuration for a dependency whose version is |
| // pinned within a particular file. |
| message VersionFileConfig { |
| // id of the dependency to be rolled, eg. a repo URL. |
| string id = 1; |
| // path within the repo of the file which pins the dependency. |
| string path = 2; |
| } |
| |
| // DependencyConfig provides configuration for a dependency whose version is |
| // pinned in a file and which may have transitive dependencies. |
| message DependencyConfig { |
| // primary dependency. |
| VersionFileConfig primary = 1; |
| // transitive dependencies. |
| repeated TransitiveDepConfig transitive = 2; |
| } |
| |
| // GitCheckoutConfig provides configuration for a Git checkout. |
| message GitCheckoutConfig { |
| // branch to track. |
| string branch = 1; |
| // repo_url to check out. |
| string repo_url = 2; |
| // rev_link_tmpl is an optional template used for generating links to |
| // revisions. If not specified, revisions generated by the checkout will not |
| // have an associated URL. |
| string rev_link_tmpl = 3; |
| // dependencies is an optional specification of dependencies to track. |
| // Revisions generated by the checkout will contain the pinned versions of |
| // these dependencies. |
| repeated VersionFileConfig dependencies = 4; |
| } |
| |
| // BuildbucketRevisionFilterConfig provides configuration for a revision filter |
| // which uses Buildbucket. |
| message BuildbucketRevisionFilterConfig { |
| string project = 1; |
| string bucket = 2; |
| } |