示例#1
0
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)