public shared() { this.firstDate = new DateTime(2000, 10, 10); this.secondDate = new DateTime(2000, 10, 11); this.failedBuild1 = new Build() { FinishedTime = firstDate, Status = DomainModel.CI.BuildStatus.FinishedWithFailure }; this.failedBuild2 = new Build() { FinishedTime = firstDate, Status = DomainModel.CI.BuildStatus.FinishedWithFailure }; this.failedBuild3 = new Build() { FinishedTime = secondDate, Status = DomainModel.CI.BuildStatus.FinishedWithFailure }; this.successBuild1 = new Build() { FinishedTime = firstDate, Status = DomainModel.CI.BuildStatus.FinishedSuccefully }; this.successBuild2 = new Build() { FinishedTime = secondDate, Status = DomainModel.CI.BuildStatus.FinishedSuccefully }; this.project1 = new CIProject("test one"); project1.AddBuild(failedBuild1); project1.AddBuild(successBuild1); this.project2 = new CIProject("test two"); project2.AddBuild(failedBuild2); project2.AddBuild(failedBuild3); project2.AddBuild(successBuild2); this.ciserver = new CIServer("server", "serverurl"); ciserver.AddProject(project1); ciserver.AddProject(project2); repository.Setup(r => r.Get(It.IsAny<AllSpecification<CIServer>>())) .Returns(new List<CIServer>() { ciserver }); }
/// <summary> /// 编辑项目 /// </summary> /// <param name="checkitem"></param> /// <returns></returns> public int Update(CIProject project) { const string sql = @"UPDATE CIProject SET ProjectCode = @ProjectCode, ProjectName = @ProjectName, ProjectManager = @ProjectManager, Executive = @Executive, ProjectMember = @ProjectMember, ProjectFormalURL = @ProjectFormalURL, ProjectTestURL = @ProjectTestURL, DBTestURL = @DBTestURL, ProjectSvnURL = @ProjectSvnURL, ProjectSvnURLRelease = @ProjectSvnURLRelease, UpdateTime = @UpdateTime, Remark = @Remark, DBDevelopURL = @DBDevelopURL, DBFormalURL = @DBFormalURL, SlnName = @SlnName, PackagePath = @PackagePath WHERE ID=@ID " ; using (var conn = new DapperHelper().OpenConnection()) { return(conn.Execute(sql, project)); } }
public virtual void AddProject(CIProject newProject) { if (newProject == null) throw new ArgumentNullException("newProject"); newProject.Server = this; internalProjects.Add(newProject); }
/// <summary> /// 删除项目 /// </summary> /// <param name="checkitem"></param> /// <returns></returns> public int Delete(CIProject project) { const string sql = "DELETE FROM CIProject WHERE ID=@ID "; using (var conn = new DapperHelper().OpenConnection()) { return(conn.Execute(sql, new { ID = project.ID })); } }
/// <summary> /// 添加项目 /// </summary> /// <param name="checkitem"></param> /// <returns></returns> public int Insert(CIProject project) { var sql = @"INSERT INTO CIProject (ID,ProjectCode,ProjectName,ProjectManager,Executive,ProjectMember,ProjectFormalURL,ProjectTestURL,DBTestURL,ProjectSvnURL,ProjectSvnURLRelease,AddTime,UpdateTime,Remark,DBDevelopURL,DBFormalURL,SlnName,PackagePath) VALUES (@ID,@ProjectCode,@ProjectName,@ProjectManager,@Executive,@ProjectMember,@ProjectFormalURL,@ProjectTestURL,@DBTestURL,@ProjectSvnURL,@ProjectSvnURLRelease,@AddTime,@UpdateTime,@Remark,@DBDevelopURL,@DBFormalURL,@SlnName,@PackagePath)"; using (var conn = new DapperHelper().OpenConnection()) { return(conn.Execute(sql, project)); } }
public ProjectModel() { Project = new CIProject(); PageList = new ProjectPageList(); ProjectList = new List <CIProject>(); User = new CIUser(); CIReview = new CIReview(); reviewlist = new List <CIReview>(); Release = new CIRelease(); ReleaseList = new List <CIRelease>(); StatusSelectItem = new List <SelectListItem>(); }
public static void SharedSetup() { testServer = new CIServer { Name = "ADP", Url = "http://smeedee.org/ccnet/" }; testProject = new CIProject(projectName) { SystemId = "ProjectNr.1", Server = testServer, }; }
public void SharedSetup() { testServer = new CIServer { Name = "ADP", Url = "http://agileprojectdashboard.org/ccnet/" }; testProject = new CIProject(projectName) { SystemId = "ProjectNr.1", Server = testServer }; }
public ActionResult ProjectAdd(CIProject project) { ProjectModel model = new ProjectModel(); model.Project = project; if (string.IsNullOrEmpty(project.ID)) { project.ID = Guid.NewGuid().ToString(); project.AddTime = DateTime.Now; project.UpdateTime = DateTime.Now; //model.Executive = PressRequest.GetFormString("hidUsername"); 暂时直接手填 不用人员树 int num = _projectservice.InsertPro(project); if (num > 0) { return(Redirect(Url.Action("ProjectList", "Project"))); } else { ErrorNotification("添加失败"); return(View(model)); } } else { project.UpdateTime = DateTime.Now; int num = _projectservice.UpdatePro(project); if (num > 0) { return(Redirect(Url.Action("ProjectList", "Project"))); } else { ErrorNotification("编辑失败"); return(View(model)); } } }
public void assure_object_graph_is_Serialized_correctly() { DataContractSerializer serializer = new DataContractSerializer(typeof(IEnumerable<CIServer>), null, int.MaxValue,false, true, null); CIServer server = new CIServer() {Name = "Test name", Url = "http://www.smeedee.org"}; CIProject project = new CIProject(){Server = server, ProjectName = "SmeeDee"}; Build build = new Build() { SystemId = "123"}; server.AddProject(project); project.AddBuild(build); List<CIServer> listOfServers = new List<CIServer>(); listOfServers.Add(server); MemoryStream stream = new MemoryStream(); serializer.WriteObject(stream, listOfServers); stream.Position = 0; object deSerialized = serializer.ReadObject(stream); var deSerializedServerList = deSerialized as IEnumerable<CIServer>; var deSerializedServer = deSerializedServerList.ElementAt(0); deSerializedServer.Name.ShouldBe("Test name"); deSerializedServer.Url.ShouldBe("http://www.smeedee.org"); deSerializedServer.Projects.Count() .ShouldBe(1); deSerializedServer.Projects.ElementAt(0).ProjectName.ShouldBe("SmeeDee"); deSerializedServer.Projects.ElementAt(0).Server.Name.ShouldBe("Test name"); deSerializedServer.Projects.ElementAt(0).Server.Url.ShouldBe("http://www.smeedee.org"); deSerializedServer.Projects.ElementAt(0).Builds.Count().ShouldBe(1); deSerializedServer.Projects.ElementAt(0).Builds.ElementAt(0).SystemId.ShouldBe("123"); deSerializedServer.Projects.ElementAt(0).Builds.ElementAt(0).Project.ProjectName.ShouldBe("SmeeDee"); deSerializedServer.Projects.ElementAt(0).Builds.ElementAt(0).Project.Server.Name.ShouldBe("Test name"); }
public static string GetProjectSelectedSettingName(CIProject project) { return project.SystemId + "-is-shown"; }
private void LinkProjectBuildsToProject(CIProject project) { foreach (Build build in project.Builds) { build.Project = project; } }
private CIProject ExtractProjectInfoFromXmlElement(XmlElement projectElement) { var projectInfo = new CIProject(projectElement.GetAttribute("name")); Build latestBuild = ExtractBuildFromXmlElement(projectElement, projectInfo.ProjectName ); projectInfo.AddBuild(latestBuild); LinkProjectBuildsToProject(projectInfo); return projectInfo; }
/// <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 } }
/// <summary> /// 编辑项目 /// </summary> /// <param name="project"></param> /// <returns></returns> public int UpdatePro(CIProject project) { return(_projectRepository.Update(project)); }
public void Assure_rows_are_unique() { var project = new CIProject("development") { SystemId = Guid.NewGuid().ToString() }; var project2 = new CIProject("development") { SystemId = project.SystemId }; project.ShouldBe(project2); project2 = new CIProject("development") { SystemId = Guid.NewGuid().ToString() }; project.ShouldNotBe(project2); }
private void SetupObjectGraph() { this.server = new CIServer() { Name = "CruiseControl.NET", Url = "http://agileprojectdashboard.org/ccnet" }; this.project = new CIProject(TESTPROJECTNAME_ONE) { SystemId = "ProjectNr.1", }; var project2 = new CIProject(TESTPROJECTNAME_TWO) { SystemId = "ProjectNr.2", }; server.AddProject(project); server.AddProject(project2); var build1 = new Build { SystemId = "Build.1", StartTime = new DateTime(2000, 1, 1), FinishedTime = new DateTime(2000, 1, 2), Status = BuildStatus.FinishedSuccefully, Trigger = new CodeModifiedTrigger("tuxbear") }; var build2 = new Build { SystemId = "Build.2", StartTime = new DateTime(2000, 1, 3), FinishedTime = new DateTime(2000, 1, 4), Status = BuildStatus.FinishedWithFailure, Trigger = new CodeModifiedTrigger("tuxbear") }; var build3 = new Build { SystemId = "Build.3", StartTime = new DateTime(2000, 1, 5), FinishedTime = new DateTime(2000, 1, 6), Status = BuildStatus.Unknown, Trigger = new CodeModifiedTrigger("tuxbear") }; var build4 = new Build { SystemId = "Build.4", StartTime = new DateTime(2000, 1, 7), FinishedTime = new DateTime(2000, 1, 8), Status = BuildStatus.Building, Trigger = new CodeModifiedTrigger("tuxbear") }; project.AddBuild(build1); project.AddBuild(build2); project.AddBuild(new Build { SystemId = "Build.Common", StartTime = DateTime.MinValue, FinishedTime = DateTime.MaxValue, Status = BuildStatus.FinishedSuccefully, Trigger = new CodeModifiedTrigger("tuxbear") }); project2.AddBuild(build3); project2.AddBuild(build4); project2.AddBuild(new Build { SystemId = "Build.Common", StartTime = DateTime.MinValue, FinishedTime = DateTime.MaxValue, Status = BuildStatus.FinishedSuccefully, Trigger = new CodeModifiedTrigger("tuxbear") }); }
private void AssertCIProject(CIProject expected, CIProject actual) { actual.ShouldNotBeNull(); actual.ProjectName.ShouldBe(expected.ProjectName); actual.Server.ShouldNotBeNull(); actual.Server.Name.ShouldBe(expected.Server.Name); actual.Builds.ShouldNotBeNull(); actual.Builds.Count().ShouldBe(expected.Builds.Count()); actual.LatestBuild.ShouldNotBeNull(); actual.LatestBuild.SystemId.ShouldBe(expected.LatestBuild.SystemId); }
public ProjectConfigViewModel(CIProject project, Configuration config) { this.Project = project; this.SelectedSetting = config.GetSetting(CISettingsViewModel.GetProjectSelectedSettingName(project)); this.initialSelectedState = Boolean.Parse(SelectedSetting.Value); }
/// <summary> /// 添加项目 /// </summary> /// <param name="project"></param> /// <returns></returns> public int InsertPro(CIProject project) { return(_projectRepository.Insert(project)); }