예제 #1
0
        protected override void DoAction()
        {
            int projectId = Convert.ToInt32(GetParam("deployId"));
            int pageSize;

            if (!int.TryParse(GetParam("pageSize"), out pageSize))
            {
                pageSize = 10;
            }
            List <DepProjectAction> projectList = SvnProcesser.DeployLog(projectId, pageSize);

            JsonObject jsonContainer = new JsonObject();

            List <JsonObject> jsonList = new List <JsonObject>();

            foreach (var item in projectList)
            {
                JsonObject jItem = new JsonObject();
                jItem.Add("Id", item.Id);
                jItem.Add("Ip", item.Ip);
                jItem.Add("DepId", item.DepId);
                jItem.Add("Type", item.Type);
                jItem.Add("Revision", item.Revision);
                jItem.Add("Status", item.Status);
                jItem.Add("ErrorMsg", FormatJson(item.ErrorMsg));
                jItem.Add("CreateDate", item.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
                jsonList.Add(jItem);
            }
            jsonContainer.Add("rows", jsonList.ToArray());
            string comboJson = jsonContainer.ToJson();

            _context.Response.Write(comboJson);
        }
예제 #2
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!Page.IsPostBack)
     {
         lblSubTitle.Text = SvnProcesser.Project(DeployId).Name;
     }
 }
예제 #3
0
        protected override void DoAction()
        {
            if (hasDoAction)
            {
                return;
            }
            int projectId = Convert.ToInt32(GetParam("deployId"));
            List <DepProjectItem> projectList = SvnProcesser.ProjectItemList(projectId);

            JsonObject jsonContainer = new JsonObject();

            List <JsonObject> jsonList = new List <JsonObject>();

            foreach (var item in projectList)
            {
                JsonObject jItem = new JsonObject();
                jItem.Add("Id", item.Id);
                jItem.Add("Name", item.Name);
                jItem.Add("WebSite", item.WebSite);
                jItem.Add("DeployPath", item.DeployPath);
                jItem.Add("ExcludeFile", item.ExcludeFile);
                jItem.Add("CreateDate", item.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
                jItem.Add("ServerId", item.ServerId);
                jsonList.Add(jItem);
            }
            jsonContainer.Add("rows", jsonList.ToArray());
            string comboJson = jsonContainer.ToJson();

            _context.Response.Write(comboJson);
        }
예제 #4
0
        protected override void DoAction()
        {
            List <DepProject> projectList = SvnProcesser.ProjectList();

            JsonObject jsonContainer = new JsonObject();

            List <JsonObject> jsonList = new List <JsonObject>();

            foreach (var item in projectList)
            {
                JsonObject jItem = new JsonObject();
                jItem.Add("SlnId", item.Id);
                jItem.Add("SlnName", item.Name);
                jItem.Add("Ip", item.Ip);
                jItem.Add("SvnPath", item.SvnPath);
                jItem.Add("SharePath", item.SharePath);
                jItem.Add("ExcludeFile", item.ExcludeFile);
                jItem.Add("CreateDate", item.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
                jItem.Add("GameId", item.GameId);
                jsonList.Add(jItem);
            }
            jsonContainer.Add("rows", jsonList.ToArray());
            string comboJson = jsonContainer.ToJson();

            _context.Response.Write(comboJson);
        }
예제 #5
0
        /// <summary>
        /// 检查是否是任务计划操作
        /// </summary>
        /// <param name="projectAction"></param>
        /// <returns></returns>
        private bool CheckSchTaskOperate(DepProjectAction projectAction)
        {
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);

            return(!string.IsNullOrEmpty(projectItem.ExcludeFile) &&
                   projectItem.ExcludeFile.EndsWith(".exe"));
        }
예제 #6
0
        private void Deploy(DepProjectAction projectAction)
        {
            string msg = string.Empty;

            Deploy(projectAction, ref msg);
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, msg);
        }
예제 #7
0
        /// <summary>
        /// 开启计划任务
        /// </summary>
        /// <param name="projectAction"></param>
        private void StartSchTasks(DepProjectAction projectAction)
        {
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);
            string         strOutput   = SchTasksOperate.StartRun(projectItem.WebSite);

            Logger.SaveLog(strOutput);
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, strOutput);
        }
예제 #8
0
        /// <summary>
        /// 回收IIS应用程序池
        /// </summary>
        /// <param name="projectAction"></param>
        /// <param name="iisVersion"></param>
        private void RecycleIISPool(DepProjectAction projectAction, IIsVersion iisVersion)
        {
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);
            string         strOutput;

            IISHelper.GetIIS(iisVersion, projectItem.WebSite).RecycleAppPool(out strOutput);
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, strOutput);
        }
예제 #9
0
 private void DoProcess(int type, string[] ids, DepProject project, int version)
 {
     foreach (var item in ids)
     {
         int id = 0;
         if (int.TryParse(item, out id))
         {
             SvnProcesser.AppendDeploy(type, project.Ip, id, version);
         }
     }
 }
예제 #10
0
        protected override void DoDelete()
        {
            int depId = Convert.ToInt32(GetParam("Id"));
            var list  = SvnProcesser.ProjectItemList(depId);

            foreach (var depProjectItem in list)
            {
                SvnProcesser.DeleteProjectItem(depProjectItem.Id);
            }
            SvnProcesser.DeleteProject(depId);
        }
예제 #11
0
 private bool GetSchTasks(string[] ids)
 {
     if (ids.Length > 0)
     {
         var item = SvnProcesser.ProjectItem(int.Parse(ids[0]));
         if (item != null && !string.IsNullOrEmpty(item.ExcludeFile))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #12
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(tbSlnName.Text.Trim()))
                {
                    ShowResult("请输入方案名称。");
                    return;
                }

                if (string.IsNullOrEmpty(tbSlnIP.Text.Trim()))
                {
                    ShowResult("请输入机器IP。");
                    return;
                }
                if (string.IsNullOrEmpty(tbSvnPath.Text.Trim()))
                {
                    ShowResult("请输入SVN路径。");
                    return;
                }
                var project = new DepProject()
                {
                    Id          = nId,
                    Name        = tbSlnName.Text,
                    Ip          = tbSlnIP.Text,
                    SvnPath     = tbSvnPath.Text,
                    SharePath   = txtSharePath.Text,
                    ExcludeFile = txtExcludeFile.Text,
                    GameId      = int.Parse(txtGameId.Text)
                };
                if (bIsNew)
                {
                    if (IsExist(tbSlnName.Text))
                    {
                        ShowResult("方案名称已经存在。");
                        return;
                    }
                    SvnProcesser.AppendProject(project);
                }
                else
                {
                    SvnProcesser.UpateProject(project);
                }

                Response.Redirect("Default.aspx");
            }
            catch (Exception ex)
            {
                ShowResult(ex.Message);
            }
        }
예제 #13
0
        private void QuickDeploy(DepProjectAction projectAction, IIsVersion iisVersion)
        {
            //停止IIS
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);

            if (CheckSchTaskOperate(projectAction))
            {
                DoSchTaskQuickDeploy(projectAction, projectItem);
            }
            else
            {
                DoIIsQuickDeploy(projectAction, iisVersion, projectItem);
            }
        }
예제 #14
0
        /// <summary>
        /// 创建任务计划
        /// </summary>
        /// <param name="projectAction"></param>
        private void CreateSchTasks(DepProjectAction projectAction)
        {
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);
            string         targetPath  = string.Empty;

            targetPath = projectItem.DeployPath.Replace("/", @"\");
            if (targetPath.IndexOf(":") == -1)
            {
                targetPath = CommandExeHelper.CombineDir(DEPLOY_ROOT, targetPath);
            }
            targetPath = CommandExeHelper.CombineDir(targetPath, projectItem.ExcludeFile);
            string strOutput = SchTasksOperate.Create(projectItem.WebSite, targetPath);

            Logger.SaveLog(strOutput);
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, strOutput);
        }
예제 #15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            DepProject depSln = null;
            string     strId  = Request.QueryString["id"];

            if ((!string.IsNullOrEmpty(strId)) && int.TryParse(strId, out nId))
            {
                depSln = SvnProcesser.Project(nId);

                if (null == depSln)
                {
                    bIsNew = true;
                    Response.Redirect("SlnEdit.aspx");
                    return;
                }
            }
            else
            {
                bIsNew = true;
            }

            if (bIsNew)
            {
                pTitle.InnerText = "项目部署创建";
            }
            else
            {
                pTitle.InnerText = depSln.Name;
            }

            if ("GET".Equals(Request.HttpMethod) && !Page.IsPostBack)
            {
                if (!bIsNew)
                {
                    tbSlnName.Text      = depSln.Name;
                    tbSlnIP.Text        = depSln.Ip;
                    tbSvnPath.Text      = depSln.SvnPath;
                    txtSharePath.Text   = depSln.SharePath;
                    txtExcludeFile.Text = depSln.ExcludeFile;
                    txtGameId.Text      = depSln.GameId.ToString();
                }
            }
        }
예제 #16
0
        protected override void DoAdd()
        {
            int    deployId    = Convert.ToInt32(GetParam("deployId"));
            int    serverId    = Convert.ToInt32(GetParam("serverId"));
            string name        = GetParam("Name");
            string webSite     = GetParam("WebSite");
            string deployPath  = GetParam("DeployPath");
            string excludeFile = GetParam("ExcludeFile");
            var    projectItem = new DepProjectItem()
            {
                Id          = 0,
                DepId       = deployId,
                Name        = name,
                WebSite     = webSite,
                DeployPath  = deployPath,
                ExcludeFile = excludeFile,
                ServerId    = serverId
            };

            SvnProcesser.AppendProjectItem(projectItem);
        }
예제 #17
0
        /// <summary>
        /// 清理SVN
        /// </summary>
        /// <param name="projectAction"></param>
        private void Cleanup(DepProjectAction projectAction)
        {
            DepProjectItem projectItem  = SvnProcesser.ProjectItem(projectAction.DepId);
            DepProject     depProject   = SvnProcesser.Project(projectItem.DepId);
            string         checkOutPath = Path.Combine(SVN_UPDATE_ROOT, depProject.Id.ToString());
            string         svnArguments = string.Format(
                "cleanup {0} --username {1} --password {2} --no-auth-cache --non-interactive --trust-server-cert",
                checkOutPath,
                SVN_USER,
                SVN_PASSWORD
                );

            Logger.SaveLog(string.Format("SvnDeploy执行svn.exe {0}", svnArguments));
            string strOutput = CommandExeHelper.Run("svn.exe", svnArguments);

            if (string.IsNullOrEmpty(strOutput))
            {
                strOutput = "cleanup end.";
            }
            SvnProcesser.UpdateDeployStatus(projectAction.Id, 1, strOutput);
        }
예제 #18
0
        /// <summary>
        /// 快速部署计划任务
        /// </summary>
        private void DoSchTaskQuickDeploy(DepProjectAction projectAction, DepProjectItem projectItem)
        {
            //更新缓存
            DepProject project  = SvnProcesser.Project(projectItem.DepId);
            int        gameId   = project.GameId;
            int        serverId = projectItem.ServerId;
            string     host     = project.ExcludeFile;//配置成Socket地址

            using (GameSocketClient client = new GameSocketClient())
            {
                string msg = string.Empty;
                client.ReceiveHandle += new SocketCallback((error, errorInfo, buffer) =>
                {
                    try
                    {
                        msg += string.Format("cache cmd:{0}-{1}\r\n", error, errorInfo);
                        //停止计划任务
                        msg += SchTasksOperate.StopRun(projectItem.WebSite);
                        string deploymsg = string.Empty;
                        if (Deploy(projectAction, ref deploymsg))
                        {
                            msg          += deploymsg;
                            int sleepTime = SVN_QDEPLOY_WAIT + new Random().Next(1, 10);
                            Thread.Sleep(sleepTime * 1000);
                            //开启计划任务
                            msg += SchTasksOperate.StartRun(projectItem.WebSite);
                        }
                        SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, msg);
                    }
                    catch (Exception ex)
                    {
                        new BaseLog().SaveLog("DoSchTaskQuickDeploy", ex);
                        SvnProcesser.UpdateDeployStatus(projectAction.Id, ERROR, ex.ToString());
                    }
                });
                client.Connect(host);
                string command = "GM:cache";
                client.SendToServer(gameId, serverId, 1000, command);
            }
        }
예제 #19
0
        private void DoIIsQuickDeploy(DepProjectAction projectAction, IIsVersion iisVersion, DepProjectItem projectItem)
        {
            string msg = string.Empty;
            string iisstopMsg;

            IISHelper.GetIIS(iisVersion, projectItem.WebSite).Stop(out iisstopMsg);
            msg += iisstopMsg;

            string deploymsg   = string.Empty;
            string iisstartMsg = string.Empty;

            if (Deploy(projectAction, ref deploymsg))
            {
                int sleepTime = SVN_QDEPLOY_WAIT + new Random().Next(1, 10);
                Thread.Sleep(sleepTime * 1000);
                IISHelper.GetIIS(iisVersion, projectItem.WebSite).Start(out iisstartMsg);
            }

            msg += deploymsg;
            msg += iisstartMsg;
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, msg);
        }
예제 #20
0
        /// <summary>
        /// 部署Python脚本
        /// </summary>
        /// <param name="projectAction"></param>
        private bool DeployPython(DepProjectAction projectAction)
        {
            string         msg         = "";
            bool           result      = true;
            string         pythonPath  = ConfigHelper.GetSetting("DEPLOY_Python_Path", "PyScript");
            DepProjectItem projectItem = SvnProcesser.ProjectItem(projectAction.DepId);
            DepProject     project     = SvnProcesser.Project(projectItem.DepId);
            //目标路径
            string targetPath = projectItem.DeployPath.Replace("/", @"\");

            if (targetPath.IndexOf(":") == -1)
            {
                targetPath = CommandExeHelper.CombineDir(DEPLOY_ROOT, targetPath);
                //Python目录
                targetPath = CommandExeHelper.CombineDir(targetPath, pythonPath);
            }
            if (!Directory.Exists(targetPath))
            {
                Directory.CreateDirectory(targetPath);
            }
            string checkSharePath = CommandExeHelper.CombineDir(SVN_UPDATE_ROOT, project.Id.ToString());

            checkSharePath = CommandExeHelper.CombineDir(checkSharePath, project.SharePath);
            //Python目录
            checkSharePath = CommandExeHelper.CombineDir(checkSharePath, pythonPath);

            string exclude = "";//string.IsNullOrEmpty(project.ExcludeFile) ? "" : string.Format("/xf {0}", project.ExcludeFile);
            //更新共享的目录,如Code目录
            string robarguments = string.Format("{0} {1} /MIR {2}", checkSharePath, targetPath, exclude);

            Logger.SaveLog(string.Format("SvnDeploy Python shared directory robocopy.exe {0}", robarguments));
            msg += CommandExeHelper.Run("robocopy.exe", robarguments);

            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, msg);
            return(result);
        }
예제 #21
0
        private bool IsExist(string name)
        {
            var list = SvnProcesser.ProjectList();

            return(list.Exists(m => m.Name.ToLower().Equals(name.ToLower())));
        }
예제 #22
0
        protected override bool DoProcess(object obj)
        {
            try
            {
                if (!Directory.Exists(SVN_UPDATE_ROOT))
                {
                    Directory.CreateDirectory(SVN_UPDATE_ROOT);
                }
                if (string.IsNullOrEmpty(ip))
                {
                    ip = GetServerIP();
                }
                var list = SvnProcesser.DeployList(ip);
                foreach (var projectAction in list)
                {
                    Logger.SaveLog(projectAction.Id + "Deploy the project begins...");
                    try
                    {
                        switch (projectAction.Type)
                        {
                        case 1:
                            StartIIS(projectAction, IIS_VERSION);
                            break;

                        case 2:
                            StopIIS(projectAction, IIS_VERSION);
                            break;

                        case 3:
                            SvnUpdate(projectAction);
                            break;

                        case 4:
                            Deploy(projectAction);
                            break;

                        case 5:
                            Cleanup(projectAction);
                            break;

                        case 6:
                            SvnCheckOut(projectAction);
                            break;

                        case 7:
                            QuickDeploy(projectAction, IIS_VERSION);
                            break;

                        case 8:
                            DeployPython(projectAction);
                            break;

                        case 11:
                            //创建计划任务
                            CreateSchTasks(projectAction);
                            break;

                        case 12:
                            //删除计划任务
                            DeleteSchTasks(projectAction);
                            break;

                        case 13:
                            //创建计划任务
                            StartSchTasks(projectAction);
                            break;

                        case 14:
                            StopSchTasks(projectAction);
                            break;

                        case 15:
                            //重启IIS或任务计划
                            ReStart(projectAction, IIS_VERSION);
                            break;

                        default:
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.SaveLog(string.Format("SvnDeploy Execution [{0}] command error:", projectAction.Id), ex);
                        SvnProcesser.UpdateDeployStatus(projectAction.Id, 2, ex.ToString());
                    }
                    Logger.SaveLog(projectAction.Id + " the end of the project deployment");
                }

                return(true);
            }
            catch (Exception ex)
            {
                Logger.SaveLog(ex);
                return(false);
            }
        }
예제 #23
0
        /// <summary>
        /// 更新SVN
        /// </summary>
        /// <param name="projectAction"></param>
        private void SvnUpdate(DepProjectAction projectAction, bool isCheckout)
        {
            DepProjectItem projectItem  = SvnProcesser.ProjectItem(projectAction.DepId);
            DepProject     depProject   = SvnProcesser.Project(projectItem.DepId);
            string         svnUrl       = depProject.SvnPath.ToLower().StartsWith("http") ? depProject.SvnPath : SVN_ROOT + "/" + depProject.SvnPath;
            string         checkOutPath = Path.Combine(SVN_UPDATE_ROOT, depProject.Id.ToString());
            string         svnArguments = string.Empty;
            Exception      error        = null;

            //判断是否检出
            if (isCheckout || !Directory.Exists(checkOutPath))
            {
                //if (Directory.Exists(checkOutPath))
                //{
                //    try
                //    {
                //        Directory.Delete(checkOutPath, true);
                //    }
                //    catch (Exception ex)
                //    {
                //        error = ex;
                //    }
                //}
                if (projectAction.Revision <= 0)
                {
                    svnArguments = string.Format(
                        "checkout {0} {1} --username {2} --password {3} --no-auth-cache --non-interactive --trust-server-cert --force",
                        svnUrl,
                        checkOutPath,
                        SVN_USER,
                        SVN_PASSWORD
                        );
                }
                else
                {
                    svnArguments = string.Format(
                        "checkout {0} {1} -r {2} --username {3} --password {4} --no-auth-cache --non-interactive --trust-server-cert --force",
                        svnUrl,
                        checkOutPath,
                        projectAction.Revision,
                        SVN_USER,
                        SVN_PASSWORD
                        );
                }
            }
            else
            {
                if (projectAction.Revision <= 0)
                {
                    svnArguments = string.Format(
                        "update {0} --username {1} --password {2} --no-auth-cache --non-interactive --trust-server-cert --force",
                        checkOutPath,
                        SVN_USER,
                        SVN_PASSWORD
                        );
                }
                else
                {
                    svnArguments = string.Format(
                        "update {0} -r {1} --username {2} --password {3} --no-auth-cache --non-interactive --trust-server-cert --force",
                        checkOutPath,
                        projectAction.Revision,
                        SVN_USER,
                        SVN_PASSWORD
                        );
                }
            }
            if (error != null)
            {
                Logger.SaveLog(string.Format("SvnDeploy执行svn.exe {0}\r\n清除目录出错:", svnArguments), error);
            }
            else
            {
                Logger.SaveLog(string.Format("SvnDeploy执行svn.exe {0}", svnArguments));
            }

            string strOutput = CommandExeHelper.Run("svn.exe", svnArguments);

            if (error != null)
            {
                strOutput = "清除目录出错:" + error.Message + "\r\n" + strOutput;
            }
            SvnProcesser.UpdateDeployStatus(projectAction.Id, SUCCESS, strOutput);
        }
예제 #24
0
        private bool DoDeploy(DepProjectAction projectAction, ref string msg)
        {
            bool           result         = true;
            DepProjectItem projectItem    = SvnProcesser.ProjectItem(projectAction.DepId);
            DepProject     project        = SvnProcesser.Project(projectItem.DepId);
            string         checkSharePath = CommandExeHelper.CombineDir(SVN_UPDATE_ROOT, project.Id.ToString());
            string         targetPath     = string.Empty;

            targetPath = projectItem.DeployPath.Replace("/", @"\");
            if (targetPath.IndexOf(":") == -1)
            {
                targetPath = CommandExeHelper.CombineDir(DEPLOY_ROOT, targetPath);
            }
            if (!Directory.Exists(targetPath))
            {
                Directory.CreateDirectory(targetPath);
            }
            if (!string.IsNullOrEmpty(project.SharePath.Trim()))
            {
                checkSharePath = CommandExeHelper.CombineDir(checkSharePath, project.SharePath);

                string exclude = "";//string.IsNullOrEmpty(project.ExcludeFile) ? "" : string.Format("/xf {0}", project.ExcludeFile);
                //更新共享的目录,如Code目录
                string robarguments = string.Format("{0} {1} /MIR {2}", checkSharePath, targetPath, exclude);
                Logger.SaveLog(string.Format("SvnDeploy shared directory robocopy.exe {0}", robarguments));
                msg += CommandExeHelper.Run("robocopy.exe", robarguments);
            }

            //差异目录,如天界行1服目录下的Web.Config文件
            string checkOutPath = CommandExeHelper.CombineDir(SVN_UPDATE_ROOT, project.Id.ToString());

            checkOutPath = CommandExeHelper.CombineDir(checkOutPath, projectItem.Name);
            bool isExist = Directory.Exists(checkOutPath);

            if (isExist)
            {
                //合并Debug与Release目录文件
                string arguments = string.Empty;
                if (IsRelease)
                {
                    arguments = string.Format("{0} {1} /e/y", checkOutPath, targetPath);
                }
                else
                {
                    arguments = string.Format("{0} {1} /e/y", Path.Combine(checkOutPath, "Debug"), targetPath);
                }

                Logger.SaveLog(string.Format("SvnDeploy differences in directory xcopy.exe {0}", arguments));
                msg += CommandExeHelper.Run("xcopy.exe", arguments);
            }
            //支持以前目录结构
            else if (string.IsNullOrEmpty(project.SharePath.Trim()))
            {
                checkOutPath = CommandExeHelper.CombineDir(SVN_UPDATE_ROOT, project.Id.ToString());
                string arguments = string.Format("{0} {1} /e/y", checkOutPath, targetPath);
                Logger.SaveLog(string.Format("SvnDeploy old directory xcopy.exe {0}", arguments));
                msg += CommandExeHelper.Run("xcopy.exe", arguments);
            }
            else
            {
                result = false;
                msg   += string.Format("Directory error:{0} {1}", checkOutPath, targetPath);
            }
            return(result);
        }
예제 #25
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var depSln = SvnProcesser.Project(DeployId);

            pTitle.Text = depSln.Name;
        }
예제 #26
0
        protected override void DoOperated(string op)
        {
            string[] ids = GetParam("Id").Split(',');

            int projectId = Convert.ToInt32(GetParam("deployId"));
            int verId     = 0;

            int.TryParse(GetParam("verId"), out verId);
            DepProject project    = SvnProcesser.Project(projectId);
            bool       hasSchTask = false;
            int        type       = 0;
            int        gameId     = 0;
            int        serverId   = 0;

            switch (op)
            {
            case "startiis":
                hasSchTask = GetSchTasks(ids);
                type       = hasSchTask ? 13 : 1;
                DoProcess(type, ids, project, verId);
                break;

            case "stopiis":
                hasSchTask = GetSchTasks(ids);
                type       = hasSchTask ? 14 : 2;
                DoProcess(type, ids, project, verId);
                break;

            case "clearupsvn":
                DoProcess(5, ids, project, verId);
                break;

            case "updatesvn":
                bool ischeck;
                bool.TryParse(GetParam("Ischeck"), out ischeck);
                if (ischeck)
                {
                    DoProcess(6, ids, project, verId);
                }
                else
                {
                    DoProcess(3, ids, project, verId);
                }
                break;

            case "deploy":
                DoProcess(4, ids, project, verId);
                break;

            case "deployPython":
                DoProcess(8, ids, project, verId);
                break;

            case "quickdeploy":
                DoProcess(7, ids, project, verId);
                break;

            case "runpy":
                gameId   = Convert.ToInt32(GetParam("gameId"));
                serverId = Convert.ToInt32(GetParam("serverId"));
                DoProcessPython(ids, gameId, serverId);
                hasDoAction = true;
                break;

            case "msmq":
                gameId   = Convert.ToInt32(GetParam("gameId"));
                serverId = Convert.ToInt32(GetParam("serverId"));
                SelectMSMQLog(projectId, gameId, serverId);
                hasDoAction = true;
                break;

            case "createSchtask":
                DoProcess(11, ids, project, verId);
                break;

            case "deleteSchtask":
                DoProcess(12, ids, project, verId);
                break;

            case "restart":
                DoProcess(15, ids, project, verId);
                break;

            case "socketcmd":
                DoProcessCommand(ids, project, GetParam("cmd"));
                break;

            default:
                break;
            }
        }
예제 #27
0
        protected override void DoDelete()
        {
            int id = Convert.ToInt32(GetParam("Id"));

            SvnProcesser.DeleteProjectItem(id);
        }
예제 #28
0
        private bool IsExist(int deployId, string name)
        {
            var list = SvnProcesser.ProjectItemList(deployId);

            return(list.Exists(m => m.Name.ToLower().Equals(name.ToLower())));
        }