private void TraceListenedExecute() { var auth = new GitHubAuth(GitHubAuthToken, GitHubUser, GitHubEmail); using (GitHubClient client = new GitHubClient(auth)) { var origin = new GitHubProject(ProjectRepoName, GitHubUser); var upstreamBranch = new GitHubBranch( ProjectRepoBranch, new GitHubProject(ProjectRepoName, ProjectRepoOwner)); string body = Body ?? string.Empty; if (NotifyGitHubUsers != null) { body += PullRequestCreator.NotificationString(NotifyGitHubUsers.Select(item => item.ItemSpec)); } var prCreator = new PullRequestCreator(client.Auth, GitHubAuthor); prCreator.CreateOrUpdateAsync( CommitMessage, CommitMessage + $" ({ProjectRepoBranch})", body, upstreamBranch, origin, new PullRequestOptions { ForceCreate = AlwaysCreateNewPullRequest, MaintainersCanModify = MaintainersCanModifyPullRequest, TrackDiscardedCommits = TrackDiscardedCommits }).Wait(); } }
private static Task CreatePullRequest(DependencyUpdateResults updateResults) { string commitMessage = $"Update {s_config.BranchTagPrefix} SDK to {updateResults.UsedBuildInfos.Single().LatestReleaseVersion}"; GitHubAuth gitHubAuth = new GitHubAuth(s_config.Password, s_config.UserName, s_config.Email); PullRequestCreator prCreator = new PullRequestCreator( gitHubAuth, new GitHubProject(s_config.GitHubProject, gitHubAuth.User), new GitHubBranch(s_config.GitHubUpstreamBranch, new GitHubProject(s_config.GitHubProject, s_config.GitHubUpstreamOwner)), s_config.UserName, new SingleBranchNamingStrategy($"UpdateDependencies-{s_config.BranchTagPrefix}") ); return(prCreator.CreateOrUpdateAsync(commitMessage, commitMessage, string.Empty)); }
public override bool Execute() { MsBuildTraceListener[] listeners = Trace.Listeners.AddMsBuildTraceListeners(Log); try { IDependencyUpdater[] updaters = GetDependencyUpdaters().ToArray(); BuildInfo[] buildInfos = GetBuildInfos().ToArray(); var updater = new DependencyUpdater(); DependencyUpdateResults updateResults = updater.Update(updaters, buildInfos); if (updateResults.ChangesDetected()) { var gitHubAuth = new GitHubAuth(GitHubAuthToken, GitHubUser, GitHubEmail); var origin = new GitHubProject(ProjectRepoName, GitHubUser); var upstreamBranch = new GitHubBranch( ProjectRepoBranch, new GitHubProject(ProjectRepoName, ProjectRepoOwner)); string suggestedMessage = updateResults.GetSuggestedCommitMessage(); string body = string.Empty; if (NotifyGitHubUsers != null) { body += PullRequestCreator.NotificationString(NotifyGitHubUsers.Select(item => item.ItemSpec)); } var prCreator = new PullRequestCreator(gitHubAuth, origin, upstreamBranch, GitHubAuthor); prCreator.CreateOrUpdateAsync( suggestedMessage, suggestedMessage + $" ({ProjectRepoBranch})", body, forceCreate: AlwaysCreateNewPullRequest).Wait(); } } finally { Trace.Listeners.RemoveMsBuildTraceListeners(listeners); } return(true); }
private static async Task CreatePullRequestAsync(IEnumerable <IDependencyInfo> buildInfos) { GitHubAuth gitHubAuth = new GitHubAuth(Options.GitHubPassword, Options.GitHubUser, Options.GitHubEmail); PullRequestCreator prCreator = new PullRequestCreator(gitHubAuth, Options.GitHubUser); PullRequestOptions prOptions = new PullRequestOptions() { BranchNamingStrategy = new SingleBranchNamingStrategy($"UpdateDependencies-{Options.GitHubUpstreamBranch}") }; string commitMessage = $"[{Options.GitHubUpstreamBranch}] Update dependencies from dotnet/core-sdk"; await prCreator.CreateOrUpdateAsync( commitMessage, commitMessage, string.Empty, new GitHubBranch(Options.GitHubUpstreamBranch, new GitHubProject(Options.GitHubProject, Options.GitHubUpstreamOwner)), new GitHubProject(Options.GitHubProject, gitHubAuth.User), prOptions); }
private static async Task CreatePullRequestAsync(DependencyUpdateResults updateResults) { GitHubAuth gitHubAuth = new GitHubAuth(Options.GitHubPassword, Options.GitHubUser, Options.GitHubEmail); PullRequestCreator prCreator = new PullRequestCreator(gitHubAuth, Options.GitHubUser); PullRequestOptions prOptions = new PullRequestOptions() { BranchNamingStrategy = new SingleBranchNamingStrategy($"UpdateDependencies-{Options.GitHubUpstreamBranch}") }; string sdkVersion = updateResults.UsedInfos.GetBuildVersion(SdkBuildInfoName); string commitMessage = $"Update {Options.GitHubUpstreamBranch} SDK to {sdkVersion}"; await prCreator.CreateOrUpdateAsync( commitMessage, commitMessage, string.Empty, new GitHubBranch(Options.GitHubUpstreamBranch, new GitHubProject(Options.GitHubProject, Options.GitHubUpstreamOwner)), new GitHubProject(Options.GitHubProject, gitHubAuth.User), prOptions); }
private async Task CreatePullRequestAsync(DependencyUpdateResults updateResults) { var gitHubAuth = new GitHubAuth(GitHubPassword, GitHubUser, GitHubEmail); var prCreator = new PullRequestCreator(gitHubAuth, GitHubUser); var prOptions = new PullRequestOptions() { BranchNamingStrategy = new SingleBranchNamingStrategy($"UpdateDependencies-{GitHubUpstreamBranch}") }; var runtimeVersion = updateResults.UsedInfos.First().SimpleVersion; var commitMessage = $"Update aspnetcore on {GitHubUpstreamBranch} to {runtimeVersion}"; await prCreator.CreateOrUpdateAsync( commitMessage, commitMessage, string.Empty, new GitHubBranch(GitHubUpstreamBranch, new GitHubProject(GitHubProject, GitHubUpstreamOwner)), new GitHubProject(GitHubProject, gitHubAuth.User), prOptions); }
private static async Task CreatePullRequestAsync() { // Replace slashes with hyphens for use in naming the branch string versionSourceNameForBranch = Options.VersionSourceName.Replace("/", "-"); GitHubAuth gitHubAuth = new GitHubAuth(Options.GitHubPassword, Options.GitHubUser, Options.GitHubEmail); PullRequestCreator prCreator = new PullRequestCreator(gitHubAuth, Options.GitHubUser); string branchSuffix = $"UpdateDependencies-{Options.GitHubUpstreamBranch}-From-{versionSourceNameForBranch}"; PullRequestOptions prOptions = new PullRequestOptions() { BranchNamingStrategy = new SingleBranchNamingStrategy(branchSuffix) }; string commitMessage = $"[{Options.GitHubUpstreamBranch}] Update dependencies from {Options.VersionSourceName}"; GitHubProject upstreamProject = new GitHubProject(Options.GitHubProject, Options.GitHubUpstreamOwner); GitHubBranch upstreamBranch = new GitHubBranch(Options.GitHubUpstreamBranch, upstreamProject); using (GitHubClient client = new GitHubClient(gitHubAuth)) { GitHubPullRequest pullRequestToUpdate = await client.SearchPullRequestsAsync( upstreamProject, upstreamBranch.Name, await client.GetMyAuthorIdAsync()); if (pullRequestToUpdate == null || pullRequestToUpdate.Head.Ref != $"{upstreamBranch.Name}-{branchSuffix}") { await prCreator.CreateOrUpdateAsync( commitMessage, commitMessage, string.Empty, upstreamBranch, new GitHubProject(Options.GitHubProject, gitHubAuth.User), prOptions); } else { UpdateExistingPullRequest(gitHubAuth, prOptions, commitMessage, upstreamBranch); } } }
private void TraceListenedExecute() { // GitHub and VSTS have different dev flow conventions. GitHubProject origin; using (IGitHubClient client = CreateClient(out origin)) { var upstreamBranch = new GitHubBranch( ProjectRepoBranch, new GitHubProject(ProjectRepoName, ProjectRepoOwner)); string body = Body ?? string.Empty; if (NotifyGitHubUsers != null) { body += PullRequestCreator.NotificationString(NotifyGitHubUsers.Select(item => item.ItemSpec)); } var options = new PullRequestOptions { ForceCreate = AlwaysCreateNewPullRequest, MaintainersCanModify = MaintainersCanModifyPullRequest, TrackDiscardedCommits = TrackDiscardedCommits }; var prCreator = new PullRequestCreator(client.Auth, PullRequestAuthor); prCreator.CreateOrUpdateAsync( CommitMessage, CommitMessage + $" ({ProjectRepoBranch})", body, upstreamBranch, origin, options, client).Wait(); } }
private static async Task CreatePullRequestAsync() { GitHubAuth gitHubAuth = new GitHubAuth(Options.GitHubPassword, Options.GitHubUser, Options.GitHubEmail); PullRequestCreator prCreator = new PullRequestCreator(gitHubAuth, Options.GitHubUser); PullRequestOptions prOptions = new PullRequestOptions() { BranchNamingStrategy = new SingleBranchNamingStrategy($"UpdateDependencies-{Options.GitHubUpstreamBranch}") }; string commitMessage = $"[{Options.GitHubUpstreamBranch}] Update dependencies from dotnet/core-sdk"; GitHubProject upstreamProject = new GitHubProject(Options.GitHubProject, Options.GitHubUpstreamOwner); GitHubBranch upstreamBranch = new GitHubBranch(Options.GitHubUpstreamBranch, upstreamProject); using (GitHubClient client = new GitHubClient(gitHubAuth)) { GitHubPullRequest pullRequestToUpdate = await client.SearchPullRequestsAsync( upstreamProject, upstreamBranch.Name, await client.GetMyAuthorIdAsync()); if (pullRequestToUpdate == null) { await prCreator.CreateOrUpdateAsync( commitMessage, commitMessage, string.Empty, upstreamBranch, new GitHubProject(Options.GitHubProject, gitHubAuth.User), prOptions); } else { UpdateExistingPullRequest(gitHubAuth, prOptions, commitMessage, upstreamBranch); } } }
protected override void TraceListenedExecute() { // Use the commit sha of versions repo master (not just "master") for stable upgrade. var gitHubAuth = new GitHubAuth(GitHubAuthToken, GitHubUser, GitHubEmail); var client = new GitHubClient(gitHubAuth); string masterSha = client .GetReferenceAsync(new GitHubProject("versions", "dotnet"), "heads/master") .Result.Object.Sha; foreach (ITaskItem item in DependencyBuildInfo) { if (!string.IsNullOrEmpty(item.GetMetadata(CurrentRefMetadataName))) { item.SetMetadata(CurrentRefMetadataName, masterSha); } string autoUpgradeBranch = item.GetMetadata(AutoUpgradeBranchMetadataName); if (!string.IsNullOrEmpty(autoUpgradeBranch)) { item.SetMetadata(CurrentBranchMetadataName, autoUpgradeBranch); } } DependencyUpdateResults updateResults = DependencyUpdateUtils.Update( CreateUpdaters().ToArray(), CreateBuildInfoDependencies().ToArray()); // Update CurrentRef and CurrentBranch for each applicable build info used. if (!string.IsNullOrEmpty(CurrentRefXmlPath)) { foreach (BuildInfo info in updateResults.UsedBuildInfos) { ITaskItem infoItem = FindDependencyBuildInfo(info.Name); if (!string.IsNullOrEmpty(infoItem.GetMetadata(CurrentRefMetadataName))) { UpdateProperty( CurrentRefXmlPath, $"{info.Name}{CurrentRefMetadataName}", masterSha); } string autoUpgradeBranch = infoItem.GetMetadata(AutoUpgradeBranchMetadataName); if (!string.IsNullOrEmpty(autoUpgradeBranch)) { UpdateProperty( CurrentRefXmlPath, $"{info.Name}{CurrentBranchMetadataName}", autoUpgradeBranch); } } } if (updateResults.ChangesDetected()) { var origin = new GitHubProject(ProjectRepoName, GitHubUser); var upstreamBranch = new GitHubBranch( ProjectRepoBranch, new GitHubProject(ProjectRepoName, ProjectRepoOwner)); string suggestedMessage = updateResults.GetSuggestedCommitMessage(); string body = string.Empty; if (NotifyGitHubUsers != null) { body += PullRequestCreator.NotificationString(NotifyGitHubUsers.Select(item => item.ItemSpec)); } var prCreator = new PullRequestCreator(gitHubAuth, origin, upstreamBranch, GitHubAuthor); prCreator.CreateOrUpdateAsync( suggestedMessage, suggestedMessage + $" ({ProjectRepoBranch})", body, forceCreate: AlwaysCreateNewPullRequest).Wait(); } else { Log.LogMessage("No update required: no changes detected."); } }