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; }
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); } }
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); } }
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); } }
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); }
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); }