| // Copyright 2023 The Bazel Authors. All rights reserved. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| syntax = "proto3"; | |
| package remote_scrubbing; | |
| option java_package = "com.google.devtools.build.lib.remote"; | |
| // Describes when and how to scrub remote cache keys. | |
| // See the documentation for the --experimental_remote_scrubbing_config flag. | |
| message Config { | |
| // Describes a set of actions. An action must pass all criteria to match. | |
| message Matcher { | |
| // A regex matching the rule kind of the action owner. | |
| // Use .* if a partial match is desired. | |
| // If empty, matches every kind. | |
| string kind = 4; | |
| // A regex matching the canonical label of the action owner. | |
| // Use .* if a partial match is desired. | |
| // If empty, matches every label. | |
| string label = 1; | |
| // A regex matching the action mnemonic. | |
| // Use .* if a partial match is desired. | |
| // If empty, matches every mnemonic. | |
| string mnemonic = 2; | |
| // Whether to match actions built for a tool configuration. | |
| // The default is to match only actions built for non-tool configurations. | |
| bool match_tools = 3; | |
| } | |
| // Describes a string replacement. | |
| message Replacement { | |
| // A regex matching a substring to be replaced. | |
| string source = 1; | |
| // The string to replace the first matching substring with. | |
| string target = 2; | |
| } | |
| // Describes a transformation to be applied to the cache key. | |
| message Transform { | |
| // A list of regexes matching an input path. | |
| // An input whose path (relative to the execution root) exactly matches at | |
| // least one of the regexes will be omitted from the cache key. | |
| // Use .* if a partial match is desired. | |
| repeated string omitted_inputs = 1; | |
| // A list of replacements to be applied to each command line argument. | |
| // Each replacement is successively applied to the command line argument, | |
| // operating on the result of the previous replacement. | |
| repeated Replacement arg_replacements = 2; | |
| // An arbitrary value to be included in the remote cache key. | |
| // It may be used to forcefully invalidate cache entries. | |
| string salt = 3; | |
| } | |
| // Describes a set of transformations to be applied against a set of actions. | |
| message Rule { | |
| // A matcher for actions this rule applies to. | |
| Matcher matcher = 1; | |
| // The transformation applied by this rule. | |
| Transform transform = 2; | |
| } | |
| // A list of configuration rules. | |
| // For every action, the last matching rule is applied, and the remainder are | |
| // ignored. Therefore, more specific rules should be specified last. | |
| // | |
| // Beware that every matcher is potentially applied to every action, and | |
| // every transform is potentially applied to every input of a matching action, | |
| // so a large number of rules containing costly regexes may have a noticeable | |
| // impact on build performance. | |
| repeated Rule rules = 1; | |
| } |