def ExecuteStackAsProcess(stackFile: str, stacksFolder: str, noLogs: bool, logsFolder: str, artifactIdentifier='docker-compose.'): stackName, version, stackFileIsValid = StackVersionTools.GetStackNameAndVersionFromStackFile( stackFile, artifactIdentifier=artifactIdentifier) if not (stackFileIsValid): exitCode = 0 return exitCode temporaryStackFile = __GenerateStackFileWithContainerNames( stackFile, stackName, version, stacksFolder) try: DockerComposeTools.DockerComposeUp([temporaryStackFile]) exitCode = __VerifyStackExecutedSuccessfully(temporaryStackFile, stackName, version, noLogs, logsFolder) DockerComposeTools.DockerComposeDown([temporaryStackFile]) finally: os.remove(temporaryStackFile) if exitCode > 0: warnings.warn("Stack '" + stackName + "' FAILED!") else: print(stackName + " stack finished with success.") return exitCode
def TestSelection(testSelection, selectionToTest): cwd = BuildTools.TryChangeToDirectoryAndGetCwd(testSelection) oldEnvironmentVariable = BuildTools.AddEnvironmentVariablesFromSelection( testSelection) BuildTools.HandleTerminalCommandsSelection(testSelection) TerminalTools.LoadDefaultEnvironmentVariablesFile() if BuildTools.FILES_KEY in testSelection: testComposeFile = BuildTools.GetAvailableComposeFilename( 'test', selectionToTest) composeFiles = testSelection[BuildTools.FILES_KEY] containerNames = BuildTools.MergeAndPopulateWithContainerNames( composeFiles, testComposeFile) if BuildTools.CONTAINER_NAMES_KEY in testSelection: containerNames = testSelection[BuildTools.CONTAINER_NAMES_KEY] try: DockerComposeTools.ExecuteComposeTests( [testComposeFile], testContainerNames=containerNames, removeTestContainers=False, buildCompose=True, downCompose=False) except: BuildTools.RemoveComposeFileIfNotPreserved(testComposeFile, testSelection) raise BuildTools.HandleCopyFromContainer(testSelection) DockerComposeTools.DockerComposeDown([testComposeFile]) if YamlTools.TryGetFromDictionary(testSelection, BuildTools.REMOVE_CONTAINERS_KEY, False): DockerComposeTools.DockerComposeRemove([testComposeFile]) BuildTools.RemoveComposeFileIfNotPreserved(testComposeFile, testSelection) BuildTools.RemoveEnvironmentVariables(oldEnvironmentVariable) os.chdir(cwd)