Esempio n. 1
0
        public Task InsertSequenceScriptTask(String sequenceScriptId)
        {
            SequenceScript sequenceScript = _sequenceScriptDataAccess.Get(sequenceScriptId);

            if (sequenceScript != null)
            {
                Task task = new Task();
                task.ExternalId = System.Guid.NewGuid().ToString();
                task.Project    = sequenceScript.Sequence.Project;
                task.ParentId   = sequenceScript.ID;
                task.ParentType = ItemType.SequenceScript;
                task.Name       = sequenceScript.Name;
                task.Status     = Status.Unprocessed;
                task.Created    = DateTime.UtcNow;

                task = _taskDataAccess.Insert(task);

                TaskScript taskScript = new TaskScript();
                taskScript.Task     = task;
                taskScript.Type     = sequenceScript.Type;
                taskScript.Content  = sequenceScript.Content;
                taskScript.Position = 1;

                _taskScriptDataAccess.Insert(taskScript);

                return(task);
            }
            else
            {
                _log.Info("InsertSequenceScriptTask(" + sequenceScriptId + "): Unable to find sequence script");

                return(null);
            }
        }
        public Boolean UpdateTaskScriptLog(long taskScriptId, string log)
        {
            TaskScript taskScript = null;

            try
            {
                taskScript = _context.TaskScripts.SingleOrDefault(ts => ts.ID == taskScriptId);
            }
            catch (Exception ex)
            {
                _log.Info("UpdateTaskScriptLog(" + taskScriptId + "): unable to retrieve task script", ex);
            }

            if (taskScript != null)
            {
                taskScript.Log = log;

                try
                {
                    Save();

                    return(true);
                }
                catch (Exception ex)
                {
                    _log.Info("UpdateTaskScriptLog(" + taskScriptId + "): unable to update task script", ex);

                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
        public GitProcessor(String processingLocation, TaskScript taskScript)
        {
            _log.Debug("Setting up Git processing object");

            _log.Debug("Setting processing location to " + processingLocation);

            _processingLocation = processingLocation;

            _taskScript = taskScript;
        }
Esempio n. 4
0
        public NodeProcessor(String processingLocation, String nodeLocation, TaskScript taskScript)
        {
            _log.Debug("Setting up node processing object");

            _log.Debug("Setting processing location to " + processingLocation);

            _processingLocation = processingLocation;
            _nodeLocation       = nodeLocation;

            _taskScript = taskScript;
        }
        public PhantomJSProcessor(String processingLocation, String phantomJSLocation, TaskScript taskScript)
        {
            _log.Debug("Setting up phantomjs processing object");

            _log.Debug("Setting processing location to " + processingLocation);

            _processingLocation = processingLocation;

            _log.Debug("Setting phantomjs location to " + phantomJSLocation);

            _phantomJSLocation = phantomJSLocation;

            _taskScript = taskScript;
        }
        public TaskScript Insert(TaskScript taskScript)
        {
            try
            {
                _context.TaskScripts.Add(taskScript);
                Save();

                return(taskScript);
            }
            catch (Exception ex)
            {
                _log.Error("Insert(): Unable to add new task script", ex);

                return(null);
            }
        }
Esempio n. 7
0
        public Task InsertScriptTask(String scriptId, String name, IList <TaskScriptParameter> taskScriptParameter)
        {
            Script script = _scriptDataAccess.Get(scriptId);

            if (script != null)
            {
                Task task = new Task();
                task.ExternalId = System.Guid.NewGuid().ToString();
                task.Project    = script.Project;
                task.ParentId   = script.ID;
                task.ParentType = ItemType.Script;
                task.Name       = name;
                task.Status     = Status.Unprocessed;
                task.Created    = DateTime.UtcNow;

                task = _taskDataAccess.Insert(task);

                TaskScript taskScript = new TaskScript();
                taskScript.Type     = script.Type;
                taskScript.Task     = task;
                taskScript.Content  = script.Content;
                taskScript.Position = 1;

                taskScript = _taskScriptDataAccess.Insert(taskScript);

                if (taskScriptParameter != null)
                {
                    foreach (TaskScriptParameter scriptTaskParameter in taskScriptParameter)
                    {
                        InsertTaskScriptParameter(taskScript.ID, scriptTaskParameter.Name, scriptTaskParameter.Value);
                    }
                }

                return(task);
            }
            else
            {
                _log.Info("InsertScriptTask(" + scriptId + "): Unable to find script");

                return(null);
            }
        }
Esempio n. 8
0
        public TaskScriptParameter InsertTaskScriptParameter(long taskScriptId, String name, String value)
        {
            TaskScript taskScript = _taskScriptDataAccess.Get(taskScriptId);

            if (taskScript != null)
            {
                TaskScriptParameter taskScriptParameter = new TaskScriptParameter();
                taskScriptParameter.TaskScript = taskScript;
                taskScriptParameter.Name       = name;
                taskScriptParameter.Value      = value;

                return(_taskScriptParameterDataAccess.Insert(taskScriptParameter));
            }
            else
            {
                _log.Info("InsertTaskScriptParameter(" + taskScriptId + "): Unable to find script task");

                return(null);
            }
        }
Esempio n. 9
0
        private void processTaskScript(String scriptProcessingLocation, Task task, TaskScript taskScript)
        {
            _log.Debug("Determining task type");

            IProcessor processor = null;

            switch (taskScript.Type)
            {
            case ScriptType.Git:
                processor = new GitProcessor(scriptProcessingLocation, taskScript);
                break;

            case ScriptType.CommandLine:
                processor = new CommandLineProcessor(scriptProcessingLocation, _nodeLocation, taskScript);
                break;

            case ScriptType.Node:
                processor = new NodeProcessor(scriptProcessingLocation, _nodeLocation, taskScript);
                break;

            case ScriptType.Grunt:
                processor = new GruntProcessor(scriptProcessingLocation, _nodeLocation, taskScript);
                break;

            case ScriptType.PhantomJS:
                processor = new PhantomJSProcessor(scriptProcessingLocation, _phantomJSLocation, taskScript);
                break;
            }

            String processResults = String.Empty;

            if (processor != null)
            {
                _log.Debug("Starting to process task");

                if (!Directory.Exists(scriptProcessingLocation))
                {
                    Directory.CreateDirectory(scriptProcessingLocation);
                }

                _log.Debug("Checking for any required node packages");

                foreach (String requiredPackage in processor.GetRequiredPackages())
                {
                    PackageCache packageCache = _packageCacheDataAccess.Get(task.Project.ID, requiredPackage);

                    _log.Debug("Package required: " + requiredPackage);

                    String packageCacheLocation  = _packageCacheLocation.TrimEnd(new char[] { '\\' }) + "\\" + task.Project.ID + "\\" + requiredPackage;
                    String targetPackageLocation = scriptProcessingLocation.TrimEnd(new char[] { '\\' }) + "\\node_modules\\" + requiredPackage;

                    _log.Debug("Package cache location: " + packageCacheLocation);
                    _log.Debug("target package location: " + targetPackageLocation);

                    if ((packageCache == null) ||
                        ((packageCache != null) && (!packageCache.Store)) ||
                        ((packageCache != null) && (packageCache.Store) && (!Directory.Exists(packageCacheLocation))))
                    {
                        _log.Debug("Cached package does not exist so importing");

                        processResults += CommandWindowHelper.ProcessCommand(scriptProcessingLocation, _nodeLocation, 5, "npm install " + requiredPackage) + Environment.NewLine;
                    }
                    else
                    {
                        _log.Debug("Cached package exists so attempting to pull into place");

                        Boolean packageImportSuccessful = IOHelper.CopyDirectory(packageCacheLocation, targetPackageLocation);

                        _log.Debug("Check if the cach package copy was successfull");

                        if (!packageImportSuccessful)
                        {
                            _log.Debug("Cache package copy failed so pulling " + requiredPackage + " from npm");

                            processResults += CommandWindowHelper.ProcessCommand(scriptProcessingLocation, _nodeLocation, 5, "npm install " + requiredPackage) + Environment.NewLine;
                        }
                    }

                    _log.Debug("Checking that we now have the target package");

                    if (Directory.Exists(targetPackageLocation))
                    {
                        _log.Debug("We do have the package so copy it into cache");

                        Boolean copySuccessful = true;

                        if ((packageCache == null) ||
                            ((packageCache != null) && (packageCache.Store) && (!Directory.Exists(packageCacheLocation))))
                        {
                            copySuccessful = IOHelper.CopyDirectory(targetPackageLocation, packageCacheLocation);
                        }

                        if ((packageCache == null) && (copySuccessful))
                        {
                            packageCache            = new PackageCache();
                            packageCache.ExternalId = System.Guid.NewGuid().ToString();
                            packageCache.Name       = requiredPackage;
                            packageCache.Version    = IOHelper.GetPackageVersion(targetPackageLocation);
                            packageCache.Store      = true;
                            packageCache.Project    = task.Project;

                            packageCache = _packageCacheDataAccess.Insert(packageCache);
                        }
                    }
                }

                processResults += processor.Process();
            }

            _taskScriptDataAccess.UpdateTaskScriptLog(taskScript.ID, processResults);
        }
Esempio n. 10
0
        private void BuildTasks()
        {
            Task task1 = new Task();

            task1.ID          = 1;
            task1.ExternalId  = "352e3cf8-480b-4568-80b5-d0cba95dae04";
            task1.Name        = "Test Script 1 Task";
            task1.Status      = Status.Completed;
            task1.Created     = DateTime.Now.AddHours(-2);
            task1.Started     = DateTime.Now.AddHours(-1);
            task1.Completed   = DateTime.Now;
            task1.ParentId    = 1;
            task1.ParentType  = ItemType.Script;
            task1.Project     = Projects.SingleOrDefault(p => p.ID == 1);
            task1.User        = Users.SingleOrDefault(u => u.ID == 1);
            task1.TaskScripts = new List <TaskScript>();

            Tasks.Add(task1);

            TaskScript taskScript1 = new TaskScript();

            taskScript1.ID      = 1;
            taskScript1.Content = "Test script with [parameter1]";
            taskScript1.Log     = "Output would go in here";
            taskScript1.Task    = task1;

            TaskScripts.Add(taskScript1);

            TaskScriptParameter taskParameter1 = new TaskScriptParameter();

            taskParameter1.ID         = 1;
            taskParameter1.Name       = "parameter1";
            taskParameter1.Value      = "Added Parameter";
            taskParameter1.TaskScript = taskScript1;

            TaskScriptParameters.Add(taskParameter1);

            Task task2 = new Task();

            task2.ID          = 2;
            task2.ExternalId  = "b006de77-5937-486e-baff-f31877cb946e";
            task2.Status      = Status.Unprocessed;
            task2.Created     = DateTime.Now;
            task2.Started     = null;
            task2.Completed   = null;
            task2.ParentId    = 1;
            task2.ParentType  = ItemType.Script;
            task2.Project     = Projects.SingleOrDefault(p => p.ID == 1);
            task2.User        = Users.SingleOrDefault(u => u.ID == 1);
            task2.TaskScripts = new List <TaskScript>();

            Tasks.Add(task2);

            TaskScript taskScript2 = new TaskScript();

            taskScript2.ID      = 2;
            taskScript2.Content = "Test script with [parameter1]";
            taskScript2.Log     = null;
            taskScript2.Task    = task2;

            TaskScripts.Add(taskScript1);

            TaskScriptParameter taskParameter2 = new TaskScriptParameter();

            taskParameter2.ID         = 2;
            taskParameter2.Name       = "parameter1";
            taskParameter2.Value      = "Other Parameter";
            taskParameter2.TaskScript = taskScript2;

            TaskScriptParameters.Add(taskParameter2);
        }