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 });
        }
Beispiel #2
0
        /// <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));
            }
        }
Beispiel #3
0
        public virtual void AddProject(CIProject newProject)
        {
            if (newProject == null)
                throw new ArgumentNullException("newProject");

            newProject.Server = this;
            internalProjects.Add(newProject);
        }
Beispiel #4
0
        /// <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 }));
            }
        }
Beispiel #5
0
        /// <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));
            }
        }
Beispiel #6
0
 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>();
 }
Beispiel #7
0
        public static void SharedSetup()
        {
            testServer = new CIServer
                         {
                             Name = "ADP",
                             Url = "http://smeedee.org/ccnet/"
                         };

            testProject = new CIProject(projectName)
                          {
                              SystemId = "ProjectNr.1",
                              Server = testServer, 
                          };
        }
Beispiel #8
0
        public void SharedSetup()
        {
            testServer = new CIServer
                         {
                             Name = "ADP",
                             Url = "http://agileprojectdashboard.org/ccnet/"
                         };

            testProject = new CIProject(projectName)
                          {
                              SystemId = "ProjectNr.1",
                              Server = testServer
                          };
        }
Beispiel #9
0
        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));
                }
            }
        }
Beispiel #10
0
        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");
        }
Beispiel #11
0
 public static string GetProjectSelectedSettingName(CIProject project)
 {
     return project.SystemId + "-is-shown";
 }
Beispiel #12
0
 private void LinkProjectBuildsToProject(CIProject project)
 {
     foreach (Build build in project.Builds)
     {
         build.Project = project;
     }
 }
Beispiel #13
0
        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;
        }
Beispiel #14
0
        /// <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
            }
        }
Beispiel #15
0
 /// <summary>
 /// 编辑项目
 /// </summary>
 /// <param name="project"></param>
 /// <returns></returns>
 public int UpdatePro(CIProject project)
 {
     return(_projectRepository.Update(project));
 }
Beispiel #16
0
        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);
 }
Beispiel #19
0
 public ProjectConfigViewModel(CIProject project, Configuration config)
 {
     this.Project = project;
     this.SelectedSetting = config.GetSetting(CISettingsViewModel.GetProjectSelectedSettingName(project));
     this.initialSelectedState = Boolean.Parse(SelectedSetting.Value);
 }
Beispiel #20
0
 /// <summary>
 /// 添加项目
 /// </summary>
 /// <param name="project"></param>
 /// <returns></returns>
 public int InsertPro(CIProject project)
 {
     return(_projectRepository.Insert(project));
 }