diff --git a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs index a131f9372..f559a49b9 100644 --- a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs +++ b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs @@ -46,5 +46,7 @@ public class ConfigService public string? Version { get; set; } public string? Architecture { get; set; } public string? CloneDirectory { get; internal set; } + + public List DependsOn { get; set; } = new List(); } } diff --git a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs index 0f6178386..8cf6820da 100644 --- a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs +++ b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs @@ -164,6 +164,13 @@ private static void HandleServiceNameMapping(YamlMappingNode yamlMappingNode, Co case "cloneDirectory": service.CloneDirectory = YamlParser.GetScalarValue(key, child.Value); break; + case "dependsOn": + if (child.Value.NodeType != YamlNodeType.Sequence) + { + throw new TyeYamlException(child.Value.Start, CoreStrings.FormatExpectedYamlSequence(key)); + } + HandleDependencies((child.Value as YamlSequenceNode)!, service.DependsOn); + break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } @@ -578,6 +585,15 @@ private static void HandleServiceTags(YamlSequenceNode yamlSequenceNode, List dependencies) + { + foreach (var child in yamlSequenceNode!.Children) + { + var dependsOn = YamlParser.GetScalarValue(child); + dependencies.Add(dependsOn); + } + } private static void HandleServiceBindingRoutes(YamlSequenceNode yamlSequenceNode, List routes) { diff --git a/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml b/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml index 739361fc9..918d666b4 100644 --- a/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml +++ b/test/E2ETest/testassets/projects/multirepo/vote/tye.yaml @@ -2,6 +2,8 @@ name: VotingSample services: - name: vote project: vote.csproj + dependsOn: + - redis - name: worker include: ../worker/tye.yaml - name: redis