public static void _outputTestFiles(List <ContainerImagePayload> payloads, List <string> builtImages) { PublishContainerImages.WriteLog($"\nWriting test files for the following images:\n { string.Join("\n", builtImages)}"); var payloadsWithTests = _removeInvalidPayloads(payloads); var payloadsWithTestsAndImagesTagged = _updateTestConfigAndParametersWithTaggedImage(payloadsWithTests, builtImages); payloadsWithTestsAndImagesTagged.ForEach(payload => { var parametersPath = Path.Combine(OutputTestPath(), payload.TestConfigurationDefinition.Parameters); var parametersJson = JsonSerializeObject(payload.TestParametersDefinition); FileInfo paramsFile = new FileInfo(parametersPath); Directory.CreateDirectory(paramsFile.DirectoryName); File.WriteAllText(parametersPath, parametersJson); PublishContainerImages.WriteLog($"\nWrote parameters file at: {paramsFile.FullName}, file contents:"); PublishContainerImages.WriteLog(parametersJson); }); var testsConfiguration = new TestsDefinition { Tests = payloadsWithTestsAndImagesTagged.Select(payload => { var config = payload.TestConfigurationDefinition; config.Parameters = Path.Combine(OutputTestPath(), config.Parameters).Replace("\\", "/"); return(config); }).ToArray(), Images = new[] { new TestMarketplaceImageDefinition { Offer = "microsoft-azure-batch", OsType = "linux", Publisher = "centos-container", Sku = "7-5", Version = "latest", } } }; var testsConfigurationFilepath = Path.Combine(OutputTestPath(), PublishContainerImages.TestConfigurationFilename); var testsConfigurationJson = JsonSerializeObject(testsConfiguration); FileInfo configFile = new FileInfo(testsConfigurationFilepath); Directory.CreateDirectory(configFile.DirectoryName); File.WriteAllText(testsConfigurationFilepath, testsConfigurationJson); PublishContainerImages.WriteLog($"\nWrote configuration file at: {configFile.FullName}, file contents:"); PublishContainerImages.WriteLog(testsConfigurationJson); }
public static void _outputTestFiles(string testRepoUsername, string testRepoPassword, string testRepoRegistry, string batchExtensionTemplatesRootDir, List <OutputContainerImage> imageDefinitions, List <string> imagesWithTagsToTest) { PublishContainerImages.WriteLog($"\nWriting test files for the following images:\n { string.Join("\n", imageDefinitions.Select(image => image.TestContainerImage))}"); var imagesWithTests = _removeInvalidPayloads(imageDefinitions); var updatedImageDefinitions = _updateTestConfigAndParametersWithTaggedImage(imagesWithTests); updatedImageDefinitions.ForEach(payload => { var parametersPath = Path.Combine(OutputTestPath(), payload.Payload.TestConfigurationDefinition.GetParametersFileName()); var parametersJson = Json.JsonSerializeObject(payload.Payload.TestParametersDefinition); FileInfo paramsFile = new FileInfo(parametersPath); Directory.CreateDirectory(paramsFile.DirectoryName); File.WriteAllText(parametersPath, parametersJson); PublishContainerImages.WriteLog($"\nWrote parameters file at: {paramsFile.FullName}, file contents:"); PublishContainerImages.WriteLog(parametersJson); }); updatedImageDefinitions.ForEach(payload => { var runnerDirectory = Path.Combine(ExecutableDirectory(), batchExtensionTemplatesRootDir, "runner"); var poolTemplateOriginalFullPath = Path.Combine(runnerDirectory, payload.Payload.TestConfigurationDefinition.PoolTemplate); var poolTemplateDynamic = Json.ReadJsonFileToDynamic(poolTemplateOriginalFullPath); if (!string.IsNullOrEmpty(testRepoUsername)) { var containerRegistries = JArray.FromObject(new[] { new { username = testRepoUsername, password = testRepoPassword, registryServer = testRepoRegistry } }); poolTemplateDynamic.variables.osType.containerConfiguration.containerRegistries = containerRegistries; } var poolTemplateJson = Json.JsonSerializeObject(poolTemplateDynamic); var relativeFinalPathForPoolTemplate = payload.Payload.TestConfigurationDefinition.PoolTemplate.Replace("../", ""); var poolTemplateFinalPath = Path.Combine(OutputTestPath(), relativeFinalPathForPoolTemplate); payload.Payload.TestConfigurationDefinition.PoolTemplate = poolTemplateFinalPath.Replace("\\", "/"); FileInfo poolTemplateFinal = new FileInfo(poolTemplateFinalPath); Directory.CreateDirectory(poolTemplateFinal.DirectoryName); File.WriteAllText(poolTemplateFinalPath, poolTemplateJson); PublishContainerImages.WriteLog($"\nWrote pool template file at: {poolTemplateFinalPath}, file contents:"); PublishContainerImages.WriteLog(poolTemplateJson); }); var testsConfiguration = new TestsDefinition { Tests = updatedImageDefinitions.Select(payload => { var config = payload.Payload.TestConfigurationDefinition; config.Parameters = Path.Combine(OutputTestPath(), config.GetParametersFileName()).Replace("\\", "/"); return(config); }).ToArray(), Images = new[] { new TestMarketplaceImageDefinition { Offer = "microsoft-azure-batch", OsType = "linux", Publisher = "centos-container", Sku = "7-5", Version = "latest", }, new TestMarketplaceImageDefinition { Offer = "microsoft-azure-batch", OsType = "linux", Publisher = "ubuntu-server-container", Sku = "16-04-lts", Version = "latest", } } }; var testsConfigurationFilepath = Path.Combine(OutputTestPath(), PublishContainerImages.TestConfigurationFilename); var testsConfigurationJson = Json.JsonSerializeObject(testsConfiguration); FileInfo configFile = new FileInfo(testsConfigurationFilepath); Directory.CreateDirectory(configFile.DirectoryName); File.WriteAllText(testsConfigurationFilepath, testsConfigurationJson); PublishContainerImages.WriteLog($"\nWrote configuration file at: {configFile.FullName}, file contents:"); PublishContainerImages.WriteLog(testsConfigurationJson); }