public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); if (!File.Exists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } if (variablesFile != null && !File.Exists(variablesFile)) { throw new CommandException("Could not find variables file: " + variablesFile); } var variables = new CalamariVariableDictionary(variablesFile, sensitiveVariableFiles, sensitiveVariablesPassword); var commandLineRunner = new CommandLineRunner(new SplitCommandOutput(new ConsoleCommandOutput(), new ServiceMessageCommandOutput(variables))); var substituter = new FileSubstituter(fileSystem); var extractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); ValidateRequiredVariables(variables); var conventions = new List <IConvention> { new ContributeEnvironmentVariablesConvention(), new LogVariablesConvention(), new ExtractPackageToStagingDirectoryConvention(extractor, fileSystem), new StageScriptPackagesConvention(null, fileSystem, extractor, true), new ConfiguredScriptConvention(DeploymentStages.PreDeploy, fileSystem, scriptEngine, commandLineRunner), new SubstituteInFilesConvention(fileSystem, substituter, _ => true, FileTargetFactory), new ConfiguredScriptConvention(DeploymentStages.Deploy, fileSystem, scriptEngine, commandLineRunner), new HelmUpgradeConvention(scriptEngine, commandLineRunner, fileSystem), new ConfiguredScriptConvention(DeploymentStages.PostDeploy, fileSystem, scriptEngine, commandLineRunner), }; var deployment = new RunningDeployment(packageFile, variables); var conventionRunner = new ConventionProcessor(deployment, conventions); try { conventionRunner.RunConventions(); deploymentJournalWriter.AddJournalEntry(deployment, true, packageFile); } catch (Exception) { deploymentJournalWriter.AddJournalEntry(deployment, false, packageFile); throw; } return(0); }
void ExtractScriptFromPackage(VariableDictionary variables) { Log.Info("Extracting package: " + packageFile); if (!File.Exists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } var extractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); extractor.GetExtractor(packageFile).Extract(packageFile, Environment.CurrentDirectory, true); variables.Set(SpecialVariables.OriginalPackageDirectoryPath, Environment.CurrentDirectory); }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var variables = new CalamariVariableDictionary(variablesFile, sensitiveVariablesFile, sensitiveVariablesPassword); if (string.IsNullOrEmpty(packageFile)) { throw new CommandException($"No package file was specified. Please provide `{SpecialVariables.Tentacle.CurrentDeployment.PackageFilePath}` variable"); } if (!fileSystem.FileExists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } fileSystem.FreeDiskSpaceOverrideInMegaBytes = variables.GetInt32(SpecialVariables.FreeDiskSpaceOverrideInMegaBytes); fileSystem.SkipFreeDiskSpaceCheck = variables.GetFlag(SpecialVariables.SkipFreeDiskSpaceCheck); var environment = AwsEnvironmentGeneration.Create(variables).GetAwaiter().GetResult(); var substituter = new FileSubstituter(fileSystem); var targetType = GetTargetMode(targetMode); var packageExtractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); var conventions = new List <IConvention> { new ContributeEnvironmentVariablesConvention(), new LogVariablesConvention(), new ExtractPackageToStagingDirectoryConvention(packageExtractor, fileSystem).When(_ => targetType == S3TargetMode.FileSelections), new LogAwsUserInfoConvention(environment), new CreateS3BucketConvention(environment, _ => bucket), new UploadAwsS3Convention( fileSystem, environment, bucket, targetType, new VariableS3TargetOptionsProvider(variables), substituter ) }; var deployment = new RunningDeployment(packageFile, variables); var conventionRunner = new ConventionProcessor(deployment, conventions); conventionRunner.RunConventions(); return(0); }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); Guard.NotNullOrWhiteSpace(packageId, "No package ID was specified. Please pass --packageId YourPackage"); Guard.NotNullOrWhiteSpace(rawPackageVersion, "No package version was specified. Please pass --packageVersion 1.0.0.0"); Guard.NotNullOrWhiteSpace(packageHash, "No package hash was specified. Please pass --packageHash YourPackageHash"); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var extractor = new GenericPackageExtractorFactory().createJavaGenericPackageExtractor(fileSystem); var packageStore = new PackageStore(extractor); if (!VersionFactory.TryCreateVersion(rawPackageVersion, out IVersion version, versionFormat)) { throw new CommandException($"Package version '{rawPackageVersion}' is not a valid {versionFormat} version string. Please pass --packageVersionFormat with a different version type."); } ; var package = packageStore.GetPackage(packageId, version, packageHash); if (package == null) { Log.Verbose($"Package {packageId} version {version} hash {packageHash} has not been uploaded."); if (exactMatchOnly) { return(0); } FindEarlierPackages(packageStore, version); return(0); } Log.VerboseFormat("Package {0} {1} hash {2} has already been uploaded", package.PackageId, package.Version, package.Hash); Log.ServiceMessages.PackageFound( package.PackageId, package.Version, package.Hash, package.Extension, package.FullFilePath, true); return(0); }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var variables = new CalamariVariableDictionary(variablesFile, sensitiveVariablesFile, sensitiveVariablesPassword); if (!string.IsNullOrEmpty(packageFile)) { if (!fileSystem.FileExists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } } fileSystem.FreeDiskSpaceOverrideInMegaBytes = variables.GetInt32(SpecialVariables.FreeDiskSpaceOverrideInMegaBytes); fileSystem.SkipFreeDiskSpaceCheck = variables.GetFlag(SpecialVariables.SkipFreeDiskSpaceCheck); var substituter = new FileSubstituter(fileSystem); var packageExtractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); var additionalFileSubstitution = variables.Get(TerraformSpecialVariables.Action.Terraform.FileSubstitution); var runAutomaticFileSubstitution = variables.GetFlag(TerraformSpecialVariables.Action.Terraform.RunAutomaticFileSubstitution, true); var enableNoMatchWarning = variables.Get(SpecialVariables.Package.EnableNoMatchWarning); variables.Add(SpecialVariables.Package.EnableNoMatchWarning, !String.IsNullOrEmpty(enableNoMatchWarning) ? enableNoMatchWarning : (!String.IsNullOrEmpty(additionalFileSubstitution)).ToString()); var conventions = new List <IConvention> { new ContributeEnvironmentVariablesConvention(), new LogVariablesConvention(), new ExtractPackageToStagingDirectoryConvention(packageExtractor, fileSystem).When(_ => packageFile != null), new SubstituteInFilesConvention(fileSystem, substituter, _ => true, _ => FileTargetFactory(runAutomaticFileSubstitution ? DefaultTerraformFileSubstitution : string.Empty, additionalFileSubstitution)), step(fileSystem) }; var deployment = new RunningDeployment(packageFile, variables); var conventionRunner = new ConventionProcessor(deployment, conventions); conventionRunner.RunConventions(); return(0); }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var commandLineRunner = new CommandLineRunner(new SplitCommandOutput(new ConsoleCommandOutput(), new ServiceMessageCommandOutput(variables))); fileSubstituter = new FileSubstituter(fileSystem); var configurationTransformer = ConfigurationTransformer.FromVariables(variables); var transformFileLocator = new TransformFileLocator(fileSystem); var replacer = new ConfigurationVariablesReplacer(variables.GetFlag(SpecialVariables.Package.IgnoreVariableReplacementErrors)); var jsonVariableReplacer = new JsonConfigurationVariableReplacer(); var extractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); ValidateArguments(); WriteVariableScriptToFile(); var conventions = new List <IConvention> { new ContributeEnvironmentVariablesConvention(), new ContributeVariablesFromJsonFileConvention(), new LogVariablesConvention(), new StageScriptPackagesConvention(packageFile, fileSystem, extractor), // Substitute the script source file new SubstituteInFilesConvention(fileSystem, fileSubstituter, _ => true, ScriptFileTargetFactory), // Substitute any user-specified files new SubstituteInFilesConvention(fileSystem, fileSubstituter), new ConfigurationTransformsConvention(fileSystem, configurationTransformer, transformFileLocator), new ConfigurationVariablesConvention(fileSystem, replacer), new JsonConfigurationVariablesConvention(jsonVariableReplacer, fileSystem), new ExecuteScriptConvention(scriptEngine, commandLineRunner) }; var deployment = new RunningDeployment(packageFile, variables); var conventionRunner = new ConventionProcessor(deployment, conventions); conventionRunner.RunConventions(); var exitCode = variables.GetInt32(SpecialVariables.Action.Script.ExitCode); deploymentJournalWriter.AddJournalEntry(deployment, exitCode == 0, packageFile); return(exitCode.Value); }
void ExtractPackage(VariableDictionary variables) { if (string.IsNullOrWhiteSpace(packageFile)) { return; } Log.Info("Extracting package: " + packageFile); if (!File.Exists(packageFile)) { throw new CommandException("Could not find package file: " + packageFile); } deployment = new RunningDeployment(packageFile, (CalamariVariableDictionary)variables); var extractor = new GenericPackageExtractorFactory().createStandardGenericPackageExtractor(); extractor.GetExtractor(packageFile).Extract(packageFile, Environment.CurrentDirectory, true); variables.Set(SpecialVariables.OriginalPackageDirectoryPath, Environment.CurrentDirectory); }
public override int Execute(string[] commandLineArguments) { Options.Parse(commandLineArguments); Guard.NotNullOrWhiteSpace(packageId, "No package ID was specified. Please pass --packageId YourPackage"); Guard.NotNullOrWhiteSpace(packageVersion, "No package version was specified. Please pass --packageVersion 1.0.0.0"); Guard.NotNullOrWhiteSpace(packageHash, "No package hash was specified. Please pass --packageHash YourPackageHash"); var fileSystem = CalamariPhysicalFileSystem.GetPhysicalFileSystem(); var packageMetadata = new MetadataFactory().GetMetadataFromPackageID(packageId, packageVersion, null, 0, packageHash); var extractor = new GenericPackageExtractorFactory().createJavaGenericPackageExtractor(fileSystem); var packageStore = new PackageStore(extractor); var package = packageStore.GetPackage(packageMetadata); if (package == null) { Log.Verbose($"Package {packageMetadata.PackageId} version {packageMetadata.Version} hash {packageMetadata.Hash} has not been uploaded."); if (exactMatchOnly) { return(0); } FindEarlierPackages(packageStore, packageMetadata); return(0); } Log.VerboseFormat("Package {0} {1} hash {2} has already been uploaded", package.Metadata.PackageId, package.Metadata.Version, package.Metadata.Hash); Log.ServiceMessages.PackageFound( package.Metadata.PackageId, package.Metadata.Version, package.Metadata.Hash, package.Metadata.FileExtension, package.FullPath, true); return(0); }