internal static List <string> GetPipelineQueueList(string toolName, string pipeline, string environment)
        {
            PipelineInfo     pipelineInfo = new PipelineInfo(toolName, pipeline, environment);
            ExecutionManager exeManager   = executionManagerDictionary[pipelineInfo.LockName];

            return(exeManager.GetQueueList());
        }
Пример #2
0
        public string AddToQueue(PipelineInfo pipelineInfo)
        {
            logger.Info("Adding Pipeline Instance " + pipelineInfo.PipelineInstance + " into QueueList for lock name " + pipelineInfo.LockName);
            if (PipelineQueue.Any(x => x.ConfigKey.Equals(pipelineInfo.ConfigKey)))
            {
                return("AlreadyInQueue");
            }
            PipelineQueue.Add(pipelineInfo);
            logger.Info("Added Pipeline Instance " + pipelineInfo.PipelineInstance + " into QueueList for lock name " + pipelineInfo.LockName);
            if (PipelineQueue.Where(x => x.Status == PipelineStatus.Running).Count() == 0)
            {
                logger.Info("Triggering Pipeline Instance " + PipelineQueue.FirstOrDefault().PipelineInstance);
                pipelineInfo.Status = PipelineStatus.Running;
                logger.Info("Setting Pipeline " + pipelineInfo.PipelineInstance + " status to Running for lock " + pipelineInfo.LockName);
                Thread triggerThread = new Thread(() =>
                {
                    TriggerPipeline(PipelineQueue.FirstOrDefault());
                });
                logger.Info("Trigger Thread Id: " + triggerThread.ManagedThreadId + " initiated pipeline " + PipelineQueue.FirstOrDefault().PipelineInstance);
                triggerThread.Start();
                //triggerThread.Join();
                //var task = Task.Run(() => { TriggerPipeline(PipelineQueue.FirstOrDefault()); });

                return("Pipeline Triggered");
            }
            return("AddedToQueue");
        }
        internal static string AbortPipeline(string toolName, string pipeline, string environment, string pipelineInstanceName)
        {
            PipelineInfo     pipelineInfo = new PipelineInfo(toolName, pipeline, environment);
            ExecutionManager exeManager   = executionManagerDictionary[pipelineInfo.LockName];

            return(exeManager.AbortPipeline(pipelineInstanceName));
        }
Пример #4
0
        private static string RerunPipeline(string toolName, string pipeline, string environment, string pipelineInstanceName, List <string> testCaseIds = null)
        {
            PipelineInfo pipelineInfo = new PipelineInfo(toolName, pipeline, environment, pipelineInstanceName: pipelineInstanceName, testCasesIds: testCaseIds);

            CreateLogsDirectory(toolName, pipeline, environment, pipelineInstanceName);
            var rerunPipelineStatus = PipelineManager.AddToQueue(pipelineInfo);

            return(rerunPipelineStatus);
        }
Пример #5
0
        private static string TriggerPipeline(string toolName, string pipeline, string environment, bool updatePlan)
        {
            PipelineInfo pipelineInfo = new PipelineInfo(toolName, pipeline, environment, updatePlan);

            CreateLogsDirectory(toolName, pipeline, environment, pipelineInfo.PipelineInstance);

            var triggerPipelineStatus = PipelineManager.AddToQueue(pipelineInfo);

            return(triggerPipelineStatus);
        }
Пример #6
0
 public ExecutionManager(ILog logger, PipelineInfo pipelineInfo)
 {
     InitializeQueue();
     //logger.InfoFormat("Execution Manager started for lockName:{0}", pipelineInfo.LockName);
     //logger.Info("Triggering Pipeline Instance " + pipelineInfo.PipelineInstance);
     //pipelineInfo.Status = PipelineStatus.Running;
     //logger.Info("Setting Pipeline " + pipelineInfo.PipelineInstance + " status to Running for lock " + pipelineInfo.LockName);
     //Thread triggerThread = new Thread(() => { TriggerPipeline(pipelineInfo); });
     //logger.Info("Trigger Thread Id: " + triggerThread.ManagedThreadId + " initiated pipeline " + pipelineInfo.PipelineInstance);
     //triggerThread.Start();
 }
        public static string AddToQueue(PipelineInfo pipelineInfo)
        {
            logger.Info("Pipeline Lock Name:" + pipelineInfo.LockName);
            ExecutionManager exeManager = null;

            if (!executionManagerDictionary.ContainsKey(pipelineInfo.LockName))
            {
                logger.Info("Initializing ExecutionManager for Pipeline " + pipelineInfo.LockName);
                exeManager = new ExecutionManager(logger, pipelineInfo);
                executionManagerDictionary[pipelineInfo.LockName] = exeManager;
            }
            logger.Info("Fetching ExecutionManager for Pipeline " + pipelineInfo.LockName);
            exeManager = executionManagerDictionary[pipelineInfo.LockName];
            return(exeManager.AddToQueue(pipelineInfo));
        }
Пример #8
0
        private void TriggerPipeline(PipelineInfo pipelineInfo)
        {
            while (PipelineQueue.Count > 0)
            {
                var loggerName = string.Join("_", PipelineQueue.FirstOrDefault().ConfigKey, PipelineQueue.FirstOrDefault().LockName);
                pipelineLogger = LoggerBase.GetLogger(loggerName, PipelineQueue.FirstOrDefault().ConfigData.Environment, PipelineQueue.FirstOrDefault().ConfigData.ToolName,
                                                      PipelineQueue.FirstOrDefault().ConfigData.Pipeline, PipelineQueue.FirstOrDefault().PipelineInstance);

                pipelineLogger.InfoFormat("Logger instance created for {0}_{1}_{2}_{3} with name: {4}", PipelineQueue.FirstOrDefault().ConfigData.Environment,
                                          PipelineQueue.FirstOrDefault().ConfigData.ToolName, PipelineQueue.FirstOrDefault().PipelineInstance, PipelineQueue.FirstOrDefault().ConfigData.Pipeline, loggerName);

                pipelineLogger.Info("Started Execution for " + PipelineQueue.FirstOrDefault().LockName + "=>" + PipelineQueue.FirstOrDefault().PipelineInstance);
                PipelineQueue.FirstOrDefault().Status = PipelineStatus.Running;
                StartExecution();
            }
        }