欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SVN 定时 更新代码 Demo

程序员文章站 2022-12-24 23:35:12
1. 涉及技术: Winservice: 用system身份后台跑; Quartz:定时任务; SVN 2. 思路: Quartz定时调用cmd 程序,执行SVN update 命令,整个程序寄宿在Winservice 3. 步骤: 1)service 用local system账户安装,通过Pro ......

1. 涉及技术:

Winservice: 用system身份后台跑;  Quartz:定时任务;  SVN 

2. 思路:

Quartz定时调用cmd 程序,执行SVN update 命令,整个程序寄宿在Winservice

3. 步骤:

1)service 用local system账户安装,通过Process 启动cmd 程序。

执行核心代码: 

    string path = ConfigurationManager.AppSettings["localPath"].ToString();    

    string username = ConfigurationManager.AppSettings["username"].ToString();

    string password = ConfigurationManager.AppSettings["password"].ToString(); 

 

    Process p = new Process();
            ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.UseShellExecute = false;
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.FileName = @"cmd.exe ";
            //startInfo.Arguments = " /c svn update " + path + " --username mashenghao --password mashenghao ";
            p.StartInfo = startInfo;
            p.Start();
            p.StandardInput.WriteLine("svn update " + path + " --username " + username + " --password " + password + " &exit ");
            p.StandardInput.AutoFlush = true;
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            p.Close();

 

2) Quartz 定时执行步骤1)      

      ISchedulerFactory fact = new StdSchedulerFactory();

 

            IScheduler sche = fact.GetScheduler();
            sche.Start();
            IJobDetail detail = JobBuilder.Create<AutoUpdateQuartzJob>()
                .WithIdentity("SVNAutoUpdate", "SVNAutoUpdate")
                .Build();
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("SVNAutoUpdateTrigger", "SVNAutoUpdateTrigger")
                .StartNow()
                .WithSimpleSchedule(x => x.WithIntervalInSeconds(15).RepeatForever())
                .Build();
            IJobListener listener = new AutoUpdateQuartzJobListern();
            sche.ScheduleJob(detail, trigger);
3) 安装winservice

  cmd 管理员身份运行

>  cd  C:\Windows\Microsoft.NET\Framework\v4.0.30319

> installutil XXX.exe