/// <inheritdoc /> public override bool DetermineIfPullRequest(IssuesContext context) { context.NotNull(nameof(context)); // Could be simplified once https://github.com/cake-build/cake/issues/2149 is fixed return(!string.IsNullOrWhiteSpace(context.EnvironmentVariable("SYSTEM_PULLREQUEST_PULLREQUESTID"))); }
/// <inheritdoc /> public override int?DeterminePullRequestId(IssuesContext context) { context.NotNull(nameof(context)); // Not supported by GitHub Actions return(null); }
/// <inheritdoc /> public override void CreateSummaryIssuesReport( IssuesContext context, [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "") { context.NotNull(nameof(context)); // Summary issues report is not supported for GitHub Actions. }
/// <inheritdoc /> public override string DetermineCommitId( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); return(context.AppVeyor().Environment.Repository.Commit.Id); }
/// <inheritdoc /> public override string DetermineCommitId( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); return(context.AzurePipelines().Environment.Repository.SourceVersion); }
/// <inheritdoc /> public override Uri DetermineRepositoryRemoteUrl( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); return(new Uri(context.EnvironmentVariable("BUILD_REPOSITORY_URI"))); }
/// <inheritdoc /> public override Uri DetermineRepositoryRemoteUrl( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); return(new Uri($"https://github.com/{context.GitHubActions().Environment.Workflow.Repository}.git")); }
/// <inheritdoc /> public override string DetermineCommitId( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); return(context.GitHubActions().Environment.Workflow.Sha); }
/// <inheritdoc /> public virtual Uri DetermineRepositoryRemoteUrl( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); repositoryRootDirectory.NotNull(nameof(repositoryRootDirectory)); return(context.State.RepositoryInfo.GetRepositoryRemoteUrl(context, repositoryRootDirectory)); }
/// <inheritdoc /> public virtual string DetermineCommitId( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); repositoryRootDirectory.NotNull(nameof(repositoryRootDirectory)); return(context.State.RepositoryInfo.GetCommitId(context, repositoryRootDirectory)); }
/// <inheritdoc /> public override void ReportIssuesToBuildServer( IssuesContext context) { context.NotNull(nameof(context)); context.ReportIssuesToPullRequest( context.State.Issues, context.GitHubActionsBuilds(), context.State.ProjectRootDirectory); }
/// <inheritdoc /> public override void PublishIssuesArtifacts(IssuesContext context) { context.NotNull(nameof(context)); if (context.Parameters.BuildServer.ShouldPublishFullIssuesReport && context.State.FullIssuesReport != null && context.FileExists(context.State.FullIssuesReport)) { context.AzurePipelines().Commands.UploadArtifact("Issues", context.State.FullIssuesReport, "Issues"); } }
/// <inheritdoc /> public override void PublishIssuesArtifacts(IssuesContext context) { context.NotNull(nameof(context)); if (context.Parameters.BuildServer.ShouldPublishFullIssuesReport && context.State.FullIssuesReport != null && context.FileExists(context.State.FullIssuesReport)) { context.AppVeyor().UploadArtifact(context.State.FullIssuesReport); } }
/// <inheritdoc /> public override FileLinkSettings GetFileLinkSettings(IssuesContext context) { context.NotNull(nameof(context)); var rootPath = context.State.RepositoryRootDirectory.GetRelativePath(context.State.ProjectRootDirectory); return(context.IssueFileLinkSettingsForAzureDevOpsCommit( context.State.RepositoryRemoteUrl, context.State.CommitId, rootPath.FullPath)); }
/// <inheritdoc /> public override int?DeterminePullRequestId(IssuesContext context) { context.NotNull(nameof(context)); if (!Int32.TryParse(context.EnvironmentVariable("SYSTEM_PULLREQUEST_PULLREQUESTID"), out var pullRequestId)) { throw new Exception($"Invalid pull request ID: {context.EnvironmentVariable("SYSTEM_PULLREQUEST_PULLREQUESTID")}"); } else { return(pullRequestId); } }
/// <inheritdoc /> public override void ReportIssuesToBuildServer( IssuesContext context) { context.NotNull(nameof(context)); foreach (var issue in context.State.Issues) { context.AzurePipelines().Commands.WriteWarning( issue.MessageText, new AzurePipelinesMessageData { SourcePath = issue.AffectedFileRelativePath?.FullPath, LineNumber = issue.Line }); } }
/// <inheritdoc /> public override Uri DetermineRepositoryRemoteUrl( IssuesContext context, DirectoryPath repositoryRootDirectory) { context.NotNull(nameof(context)); switch (context.AppVeyor().Environment.Repository.Provider) { case "bitBucket": return(new Uri($"https://bitbucket.org/{context.AppVeyor().Environment.Repository.Name}/src")); case "gitHub": return(new Uri($"https://github.com/{context.AppVeyor().Environment.Repository.Name}.git")); case "gitLab": return(new Uri($"https://gitlab.com/{context.AppVeyor().Environment.Repository.Name}.git")); case "vso": return(new Uri($"https://dev.azure.com/{context.AppVeyor().Environment.Repository.Name}")); default: return(new Uri(context.AppVeyor().Environment.Repository.Name)); } }
/// <inheritdoc /> public override void SetPullRequestIssuesState(IssuesContext context) { context.NotNull(nameof(context)); #pragma warning disable SA1123 // Do not place regions within elements #region DupFinder Exclusion #pragma warning restore SA1123 // Do not place regions within elements if (string.IsNullOrWhiteSpace(context.EnvironmentVariable("SYSTEM_ACCESSTOKEN"))) { context.Warning("SYSTEM_ACCESSTOKEN environment variable not set. Make sure the 'Allow Scripts to access OAuth token' option is enabled on the build definition."); return; } var pullRequestSettings = new AzureDevOpsPullRequestSettings( context.State.BuildServer.DetermineRepositoryRemoteUrl(context, context.State.RepositoryRootDirectory), context.State.BuildServer.DeterminePullRequestId(context).Value, context.AzureDevOpsAuthenticationOAuth(context.EnvironmentVariable("SYSTEM_ACCESSTOKEN"))); #endregion var pullRequestStatusName = "Issues"; var pullRequestDescriptionIfIssues = $"Found {context.State.Issues.Count()} issues"; var pullRequestDescriptionIfNoIssues = "No issues found"; if (!string.IsNullOrWhiteSpace(context.Parameters.BuildIdentifier)) { pullRequestStatusName += $"-{context.Parameters.BuildIdentifier}"; pullRequestDescriptionIfIssues += $" for build {context.Parameters.BuildIdentifier}"; pullRequestDescriptionIfNoIssues += $" for build {context.Parameters.BuildIdentifier}"; } var pullRequestStatus = new AzureDevOpsPullRequestStatus(pullRequestStatusName) { Genre = "Cake.Issues.Recipe", State = context.State.Issues.Any() ? AzureDevOpsPullRequestStatusState.Failed : AzureDevOpsPullRequestStatusState.Succeeded, Description = context.State.Issues.Any() ? pullRequestDescriptionIfIssues : pullRequestDescriptionIfNoIssues }; context.AzureDevOpsSetPullRequestStatus( pullRequestSettings, pullRequestStatus); }
/// <inheritdoc /> public override void ReportIssuesToPullRequest(IssuesContext context) { context.NotNull(nameof(context)); #pragma warning disable SA1123 // Do not place regions within elements #region DupFinder Exclusion #pragma warning restore SA1123 // Do not place regions within elements if (string.IsNullOrWhiteSpace(context.EnvironmentVariable("SYSTEM_ACCESSTOKEN"))) { context.Warning("SYSTEM_ACCESSTOKEN environment variable not set. Make sure the 'Allow Scripts to access OAuth token' option is enabled on the build definition."); return; } context.ReportIssuesToPullRequest( context.State.Issues, context.AzureDevOpsPullRequests( context.State.BuildServer.DetermineRepositoryRemoteUrl(context, context.State.RepositoryRootDirectory), context.State.BuildServer.DeterminePullRequestId(context).Value, context.AzureDevOpsAuthenticationOAuth(context.EnvironmentVariable("SYSTEM_ACCESSTOKEN"))), GetReportIssuesToPullRequestSettings(context)); #endregion }
/// <inheritdoc /> public override void CreateSummaryIssuesReport( IssuesContext context, [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "") { context.NotNull(nameof(context)); var summaryFileName = "summary"; if (!string.IsNullOrWhiteSpace(context.Parameters.BuildIdentifier)) { summaryFileName += $"-{context.Parameters.BuildIdentifier}"; } summaryFileName += ".md"; var summaryFilePath = context.Parameters.OutputDirectory.CombineWithFilePath(summaryFileName); var templateName = "Cake.Frosting.Issues.Recipe.BuildServers.AzurePipelineSummary.cshtml"; using (var stream = this.GetType().Assembly.GetManifestResourceStream(templateName)) { if (stream == null) { throw new ApplicationException($"Could not load resource {templateName}"); } using (var sr = new StreamReader(stream)) { // Create summary for Azure Pipelines using custom template. context.CreateIssueReport( context.State.Issues, context.GenericIssueReportFormatFromContent(sr.ReadToEnd()), context.State.ProjectRootDirectory, summaryFilePath); } } context.AzurePipelines().Commands.UploadTaskSummary(summaryFilePath); }
/// <inheritdoc /> public override int?DeterminePullRequestId(IssuesContext context) { context.NotNull(nameof(context)); return(context.AppVeyor().Environment.PullRequest.Number); }
/// <inheritdoc /> public override bool DetermineIfPullRequest(IssuesContext context) { context.NotNull(nameof(context)); return(context.GitHubActions().Environment.PullRequest.IsPullRequest); }
/// <inheritdoc /> public override void SetPullRequestIssuesState(IssuesContext context) { context.NotNull(nameof(context)); // Not supported yet }
/// <inheritdoc /> public override void ReportIssuesToPullRequest(IssuesContext context) { context.NotNull(nameof(context)); // Not supported yet }
/// <inheritdoc /> public virtual int?DeterminePullRequestId(IssuesContext context) { context.NotNull(nameof(context)); return(null); }
/// <inheritdoc /> public override void PublishIssuesArtifacts(IssuesContext context) { context.NotNull(nameof(context)); // Publishing artifacts is currently not supported for GitHub Actions. }
/// <inheritdoc /> public virtual bool DetermineIfPullRequest(IssuesContext context) { context.NotNull(nameof(context)); return(false); }