コード例 #1
0
ファイル: GitLogic.cs プロジェクト: jufman/C-SharpBuildAgent
 private static CredentialsHandler getCredentialsHandler(Settings.Objects.Details details)
 {
     return(new CredentialsHandler((url, user, cred) => new SshUserKeyCredentials()
     {
         PrivateKey = details.PrivriteKeyLocation,
         PublicKey = details.PublicKeyLocation,
         Passphrase = string.Empty,
         Username = "******"
     }));
 }
コード例 #2
0
        public static bool BuildProject(Objects.BuildItem buildItem, Settings.Objects.Details settingsDetails)
        {
            var projectLocation  = settingsDetails.SourcesLocation + buildItem.Name;
            var outputLocation   = settingsDetails.BuildLocation + buildItem.Name;
            var solutionLocation = projectLocation + "\\" + buildItem.PathToSln;

            if (Directory.Exists(outputLocation) == false)
            {
                Directory.CreateDirectory(outputLocation);
            }

            //InstallNuGetPackages(solutionLocation);

            FileLogger fileLogger = new FileLogger()
            {
                Verbosity              = LoggerVerbosity.Detailed,
                ShowSummary            = true,
                SkipProjectStartedText = true
            };

            BuildParameters param = new BuildParameters()
            {
                MaxNodeCount = Environment.ProcessorCount,
                Loggers      = new[] {
                    fileLogger
                },
            };

            Dictionary <string, string> globalProperties = new Dictionary <string, string>
            {
                { "Configuration", "Release" },     // always "Debug"
                { "Platform", buildItem.Platform }, // always "Any CPU"
                { "OutputPath", outputLocation },
            };

            BuildManager.DefaultBuildManager.BeginBuild(param);

            var buildRequest    = new BuildRequestData(solutionLocation, globalProperties, null, new String[] { "Build" }, null);
            var buildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(buildRequest);

            buildSubmission.Execute();
            BuildManager.DefaultBuildManager.EndBuild();
            if (buildSubmission.BuildResult.OverallResult == BuildResultCode.Failure)
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
ファイル: GitLogic.cs プロジェクト: jufman/C-SharpBuildAgent
        public static bool CloneRepo(Settings.Objects.Details details, string repoAddress, string destination)
        {
            var output = string.Empty;

            Directory.CreateDirectory(destination);

            try
            {
                CloneOptions options = new CloneOptions
                {
                    Checkout            = true,
                    CredentialsProvider = getCredentialsHandler(details)
                };

                output = Repository.Clone(repoAddress, destination, options);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message);
                return(false);
            }

            return(true);
        }
コード例 #4
0
ファイル: GitLogic.cs プロジェクト: jufman/C-SharpBuildAgent
        public static bool PullRepo(Settings.Objects.Details details, string repoFolder)
        {
            using (var repo = new Repository(repoFolder))
            {
                // Credential information to fetch
                LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
                options.FetchOptions = new FetchOptions();
                options.FetchOptions.CredentialsProvider = getCredentialsHandler(details);

                // User information to create a merge commit
                var signature = new LibGit2Sharp.Signature(
                    new Identity("MERGE_USER_NAME", "MERGE_USER_EMAIL"), DateTimeOffset.Now);

                // Pull
                MergeResult mergeResult = Commands.Pull(repo, signature, options);

                if (mergeResult.Status == MergeStatus.Conflicts || mergeResult.Status == MergeStatus.NonFastForward)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #5
0
 public Logic(Settings.Objects.Details settingsDetails)
 {
     SettingsDetails = settingsDetails;
 }