/// <summary> /// 持续集成入口 /// </summary> static void Integration() { WorkPath = ConfigHelper.GetValue("WorkPath"); var releaseService = new ReleaseService(); var projService = new ProjectService(); var list = releaseService.GetReleaseListByStatus("发布中");//获取需要发布版本的请求 //list.Clear(); //list.Add(new CIRelease //{ // ID = "9a44c1d9-6c8a-4be9-b964-7e5978cad1b7", // ProjectID = "bf5d0925-76d4-4936-927f-d22da9da30df", // Type = "测试版本" //});//测试用 foreach (var item in list) { var project = new CIProject(); project = projService.GetById(item.ProjectID); var projectSvnUrl = string.Empty; if (item.Type == "测试版本") { projectSvnUrl = project.ProjectSvnURL; } if (item.Type == "正式版本") { projectSvnUrl = project.ProjectSvnURLRelease; } SlnName = project.SlnName; //从数据库读取解决方案名称 PackagePath = project.PackagePath; //从数据库中读取打包路径名称 //var path = project.ProjectSvnURL.Split('/'); var path = projectSvnUrl.Split('/'); BranchName = path[path.Length - 1]; ProjCode = path[path.Length - 2]; item.BeginTime = DateTime.Now; Console.WriteLine(project.ProjectName + "代码获取中..."); string svnlog = ""; long reversion = -1; SVNUpdate(projectSvnUrl, out svnlog, out reversion); //svn代码获取 item.Remark = svnlog; //svn 日志 item.Reversion = reversion; //版本号 Console.WriteLine(item.Remark); Console.WriteLine("代码获取成功"); Console.WriteLine(project.ProjectName + "代码编译打包中..."); MSBuildAndCompress();//编译打包 #region 发布记录更新 var localpath = WorkPath + @"\" + ProjCode + @"\" + BranchName;//当前发布记录地址 item.EndTime = DateTime.Now; //获取发布日志 var logpath = localpath + @"\log.log"; string s = ""; // FileStream fs = new FileStream("f:\\aaa.txt", FileMode.Open, FileAccess.Read, FileShare.Read); // StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default); using (StreamReader sr = new StreamReader(logpath, System.Text.Encoding.Default)) { item.LogContent = sr.ReadToEnd();//发布日志 } //判断发布状态逻辑 if (item.LogContent.IndexOf("成功生成") > 0 || item.LogContent.IndexOf("Build succeeded") > 0) { item.Status = "发布成功"; var filename = ""; DirectoryInfo dirInfo = new DirectoryInfo(WorkPath + @"\" + ProjCode + @"\" + BranchName); FileSystemInfo[] files = dirInfo.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; if (file != null && file.Name.ToLower().LastIndexOf(".rar") > -1) //是文件 { filename = file.Name; } } //获取下载地址逻辑 item.VersionURL = "/" + ProjCode + "/" + BranchName + "/" + filename;//下载地址url } else { item.Status = "发布失败"; } releaseService.UpdatePro(item); #endregion } }