in tool/TeamCity.Docker/TeamCityKotlinSettingsGenerator.cs [504:553]
private IEnumerable<string> CreateManifestBuildConfiguration(string buildTypeId, string repositoryName, string name, IReadOnlyCollection<IGrouping<string, Image>> images, string imagePostfix, bool? onStaging, params string[] dependencies)
{
yield return $"object {buildTypeId}: BuildType(" + "{";
yield return $"\t name = \"{name}\"";
yield return $"\t{_buildNumberPattern}";
yield return "\t enablePersonalBuilds = false";
yield return "\t type = BuildTypeSettings.Type.DEPLOYMENT";
yield return "\t maxRunningBuilds = 1";
yield return "\t steps {";
foreach (var line in AddScript("remove manifests", RemoveManifestsScript))
{
yield return $"\t\t {line}";
}
foreach (var group in images.OrderBy(i => i.Key))
{
var groupedByImageId = group.GroupBy(i => i.File.ImageId);
foreach (var groupByImageId in groupedByImageId)
{
foreach (var line in CreateManifestCommands(repositoryName, group.Key, groupByImageId.Key, imagePostfix, groupByImageId))
{
yield return $"\t{line}";
}
}
}
yield return "\t }";
foreach (var line in CreateSnapshotDependencies(dependencies, onStaging))
{
yield return $"\t{line}";
}
var requirements = images.SelectMany(i => i).SelectMany(i => i.File.Requirements).Distinct().ToList();
foreach (var lines in CreateDockerRequirements(requirements, "windows", MinDockerVersion))
{
yield return $"\t{lines}";
}
yield return "\t features {";
foreach (var line in CreateDockerFeature())
{
yield return $"\t\t {line}";
}
yield return "\t}";
yield return "})";
yield return string.Empty;
}