blob: ad6405e119200c9c92e692c2af73327aa7bce2e2 [file] [log] [blame]
// 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;
}