mirror of
https://github.com/actions/runner.git
synced 2025-12-18 16:26:58 +00:00
75 lines
2.0 KiB
C#
75 lines
2.0 KiB
C#
using System.Runtime.Serialization;
|
|
using GitHub.DistributedTask.Pipelines.Validation;
|
|
|
|
namespace GitHub.DistributedTask.Pipelines
|
|
{
|
|
[DataContract]
|
|
internal enum DeploymentRollingOption
|
|
{
|
|
[EnumMember]
|
|
Absolute,
|
|
|
|
[EnumMember]
|
|
Percentage
|
|
}
|
|
|
|
[DataContract]
|
|
internal class DeploymentExecutionOptions
|
|
{
|
|
public DeploymentExecutionOptions()
|
|
{
|
|
}
|
|
|
|
private DeploymentExecutionOptions(DeploymentExecutionOptions optionsToCopy)
|
|
{
|
|
this.RollingOption = optionsToCopy.RollingOption;
|
|
this.RollingValue = optionsToCopy.RollingValue;
|
|
}
|
|
|
|
[DataMember]
|
|
public DeploymentRollingOption RollingOption
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
[DataMember(EmitDefaultValue = false)]
|
|
public uint RollingValue
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public DeploymentExecutionOptions Clone()
|
|
{
|
|
return new DeploymentExecutionOptions(this);
|
|
}
|
|
|
|
public void Validate(
|
|
IPipelineContext context,
|
|
ValidationResult result)
|
|
{
|
|
switch (RollingOption)
|
|
{
|
|
case DeploymentRollingOption.Absolute:
|
|
if (RollingValue == 0)
|
|
{
|
|
result.Errors.Add(new PipelineValidationError(PipelineStrings.InvalidAbsoluteRollingValue()));
|
|
}
|
|
break;
|
|
|
|
case DeploymentRollingOption.Percentage:
|
|
if (RollingValue == 0 || RollingValue > 100)
|
|
{
|
|
result.Errors.Add(new PipelineValidationError(PipelineStrings.InvalidPercentageRollingValue()));
|
|
}
|
|
break;
|
|
|
|
default:
|
|
result.Errors.Add(new PipelineValidationError(PipelineStrings.InvalidRollingOption(RollingOption)));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|