/// <summary> /// method tries to push to repository /// </summary> /// <param name="committerName">committer name</param> /// <param name="committerEmail">committer detail</param> /// <param name="authorEmail">author email id</param> /// <param name="solutionFile">solution file info</param> /// <param name="solutionFilePath">path of file that contains list of solution to be released</param> /// <param name="hashSet">hash set to store release solution</param> private static void TryPushToRepository( string committerName, string committerEmail, string authorEmail, SolutionFileInfo solutionFile, string solutionFilePath, HashSet <string> hashSet) { RepositoryConfigurationConstants.ResetLocalDirectory(); solutionFile.Solution[Constants.SourceControlQueueAttributeNameForStatus] = Constants.SourceControlQueuemPushingToStatus; solutionFile.Update(); GitDeploy.GitRepositoryManager gitRepositoryManager = GetRepositoryManager(committerName, committerEmail, authorEmail, solutionFile); gitRepositoryManager.UpdateRepository(); PopulateHashset(solutionFilePath, hashSet); if (!hashSet.Contains(solutionFile.SolutionFileZipName) && solutionFile.IncludeInRelease) { hashSet.Add(solutionFile.SolutionFileZipName); } SaveHashSet(solutionFilePath, hashSet); gitRepositoryManager.CommitAllChanges(solutionFile, solutionFilePath); gitRepositoryManager.PushCommits(); solutionFile.Solution[Constants.SourceControlQueueAttributeNameForStatus] = Constants.SourceControlQueuemPushToRepositorySuccessStatus; solutionFile.Update(); }
/// <summary> /// Method tries to update repository /// </summary> /// <param name="solutionUniqueName">unique solution name</param> /// <param name="committerName">committer name</param> /// <param name="committerEmail">committer email</param> /// <param name="authorEmail">author email</param> public void TryUpdateToRepository(string solutionUniqueName, string committerName, string committerEmail, string authorEmail) { try { string solutionFilePath = string.Empty; ICrmSolutionHelper crmSolutionHelper = new CrmSolutionHelper( Singleton.RepositoryConfigurationConstantsInstance.RepositoryUrl, Singleton.RepositoryConfigurationConstantsInstance.BranchName, Singleton.RepositoryConfigurationConstantsInstance.RepositoryRemoteName, Singleton.CrmConstantsInstance.SolutionPackagerPath); int timeOut = Convert.ToInt32(Singleton.CrmConstantsInstance.SleepTimeoutInMillis); var solutionFiles = crmSolutionHelper.DownloadSolutionFile(solutionUniqueName); if (!crmSolutionHelper.CanPush) { System.Threading.Thread.Sleep(timeOut); //// continue; } if (solutionFiles.Count > 0) { solutionFilePath = Singleton.RepositoryConfigurationConstantsInstance.LocalDirectory + "solutions.txt"; GitDeploy.GitRepositoryManager gitRepositoryManager = this.ConfigureRepository(solutionFiles[0], committerName, committerEmail, authorEmail, solutionFilePath); this.PushRepository(solutionFiles, committerName, committerEmail, authorEmail, solutionFilePath, gitRepositoryManager); System.Threading.Thread.Sleep(timeOut); } } catch (Exception ex) { Singleton.SolutionFileInfoInstance.WebJobsLog.AppendLine(ex.Message); } }
/// <summary> /// method tries to push to repository /// </summary> /// <param name="committerName">committer name</param> /// <param name="committerEmail">committer detail</param> /// <param name="authorEmail">author email id</param> /// <param name="solutionFile">solution file info</param> /// <param name="solutionFilePath">path of file that contains list of solution to be released</param> /// <param name="hashSet">hash set to store release solution</param> /// <param name="gitRepositoryManager">object initialization for class RepositoryManager</param> private void TryPushToRepository( string committerName, string committerEmail, string authorEmail, SolutionFileInfo solutionFile, string solutionFilePath, HashSet <string> hashSet, GitDeploy.GitRepositoryManager gitRepositoryManager) { ////RepositoryConfigurationConstants.ResetLocalDirectory(); solutionFile.Solution[Constants.SourceControlQueueAttributeNameForStatus] = Constants.SourceControlQueuemPushingToStatus; solutionFile.Solution.Attributes["syed_webjobs"] = Singleton.SolutionFileInfoInstance.WebJobs(); solutionFile.Update(); Workspace workspace = null; ////GitDeploy.GitRepositoryManager gitRepositoryManager = GetRepositoryManager(committerName, committerEmail, authorEmail, solutionFile); if (solutionFile.Repository != Constants.SourceControlAzureDevOpsServer) { gitRepositoryManager.UpdateRepository(); } ////433710000 value for Yes if (solutionFile.SolutionsTxt == 433710000 && File.Exists(solutionFilePath)) { File.WriteAllText(solutionFilePath, string.Empty); hashSet.Clear(); } this.PopulateHashset(solutionFilePath, hashSet); if (!hashSet.Contains(solutionFile.SolutionFileZipName) && solutionFile.IncludeInRelease) { hashSet.Add(solutionFile.SolutionFileZipName); } if (solutionFile.Repository == Constants.SourceControlAzureDevOpsServer) { workspace = gitRepositoryManager.ConnectTFSMap(solutionFile, solutionFilePath, hashSet); } else { this.SaveHashSet(solutionFilePath, hashSet); gitRepositoryManager.CommitAllChanges(solutionFile, solutionFilePath, null); gitRepositoryManager.PushCommits(); } solutionFile.Solution[Constants.SourceControlQueueAttributeNameForStatus] = Constants.SourceControlQueuemPushToRepositorySuccessStatus; solutionFile.Solution.Attributes["syed_webjobs"] = Singleton.SolutionFileInfoInstance.WebJobs(); solutionFile.Update(); }
private static void TryPushToRepository(string committerName, string committerEmail, string authorEmail, SolutionFileInfo solutionFile, string solutionFilePath) { GitDeploy.GitRepositoryManager gitRepositoryManager = new GitDeploy.GitRepositoryManager( ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["GitPassword"], ConfigurationManager.AppSettings["RepositoryUrl"], ConfigurationManager.AppSettings["RepositoryLocalDirectory"], solutionFile.OwnerName ?? committerName, authorEmail, committerName, committerEmail); //GitDeploy.GitRepositoryManager gitRepositoryManager = new GitDeploy.GitRepositoryManager( // ConfigurationManager.AppSettings["UserName"], // ConfigurationManager.AppSettings["GitPassword"], // ConfigurationManager.AppSettings["RepositoryUrl"], // ConfigurationManager.AppSettings["RepositoryLocalDirectory"], // authorName, authorEmail, committerName, committerEmail); gitRepositoryManager.CommitAllChanges(solutionFile.Message, solutionFile.SolutionFilePath, solutionFilePath); gitRepositoryManager.PushCommits(ConfigurationManager.AppSettings["RemoteName"], ConfigurationManager.AppSettings["BranchName"]); }
/// <summary> /// Method tries to configure repository /// </summary> /// <param name="solutionFiles">solution files</param> /// <param name="committerName">committer name</param> /// <param name="committerEmail">committer email</param> /// <param name="authorEmail">author email</param> /// <param name="solutionFilePath">solution file path</param> /// <returns> returns repository manager</returns> public GitDeploy.GitRepositoryManager ConfigureRepository(SolutionFileInfo solutionFiles, string committerName, string committerEmail, string authorEmail, string solutionFilePath) { int timeOut = Convert.ToInt32(Singleton.CrmConstantsInstance.SleepTimeoutInMillis); GitDeploy.GitRepositoryManager gitRepositoryManager = null; try { // todo: enable solutions file clear from crm portal this.PopulateHashset(solutionFilePath, new HashSet <string>()); gitRepositoryManager = this.GetRepositoryManager(committerName, committerEmail, authorEmail, solutionFiles); } catch (Exception ex) { Console.Write(ex.Message); Singleton.SolutionFileInfoInstance.WebJobsLog.AppendLine(" " + ex.Message + "<br>"); solutionFiles.Solution[Constants.SourceControlQueueAttributeNameForStatus] = "Error +" + ex.Message; solutionFiles.Solution.Attributes["syed_webjobs"] = Singleton.SolutionFileInfoInstance.WebJobs(); solutionFiles.Update(); Singleton.SolutionFileInfoInstance.UploadFiletoDynamics(Singleton.CrmConstantsInstance.ServiceProxy, solutionFiles.Solution); System.Threading.Thread.Sleep(timeOut); } return(gitRepositoryManager); }
/// <summary> /// Method tries to push it to repository /// </summary> /// <param name="solutionFiles">solution files</param> /// <param name="committerName">committer name</param> /// <param name="committerEmail">committer email</param> /// <param name="authorEmail">author email</param> /// <param name="solutionFilePath">solution file path</param> /// <param name="gitRepositoryManager"> repository manager</param> public void PushRepository(List <SolutionFileInfo> solutionFiles, string committerName, string committerEmail, string authorEmail, string solutionFilePath, GitDeploy.GitRepositoryManager gitRepositoryManager) { foreach (var solutionFile in solutionFiles) { try { if (solutionFile.CheckInSolution) { Singleton.SolutionFileInfoInstance.WebJobsLog.Clear(); Singleton.SolutionFileInfoInstance.WebJobsLog.Append(solutionFile.Solution.GetAttributeValue <string>("syed_webjobs")); HashSet <string> hashSet = new HashSet <string>(); this.TryPushToRepository(committerName, committerEmail, authorEmail, solutionFile, solutionFilePath, hashSet, gitRepositoryManager); Singleton.SolutionFileInfoInstance.UploadFiletoDynamics(Singleton.CrmConstantsInstance.ServiceProxy, solutionFile.Solution); } } catch (Exception ex) { Console.Write(ex.Message); Singleton.SolutionFileInfoInstance.WebJobsLog.AppendLine(" " + ex.Message + "<br>"); solutionFile.Solution[Constants.SourceControlQueueAttributeNameForStatus] = "Error +" + ex.Message; solutionFile.Solution.Attributes["syed_webjobs"] = Singleton.SolutionFileInfoInstance.WebJobs(); solutionFile.Update(); Singleton.SolutionFileInfoInstance.UploadFiletoDynamics(Singleton.CrmConstantsInstance.ServiceProxy, solutionFile.Solution); } } }