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