Nuke.GitHub

    Build Status
    Built with Nuke

    NuGet MyGet

    This plugin provides some methods to work with GitHub repositories in NUKE Build.

    Currently supported:

    • PublishRelease to create GitHub releases.

    Link to documentation.

    Changelog

    CI Builds

    All builds are available on MyGet:

    https://www.myget.org/F/dangl/api/v2
    https://www.myget.org/F/dangl/api/v3/index.json
    

    Example

    using static Nuke.GitHub.GitHubTasks;
    using static Nuke.GitHub.ChangeLogExtensions;
    using static Nuke.Common.ChangeLog.ChangelogTasks;
    
    Target PublishGitHubRelease => _ => _
        .DependsOn(Pack)
        .Requires(() => GitHubAuthenticationToken)
        .OnlyWhen(() => GitVersion.BranchName.Equals("master") || GitVersion.BranchName.Equals("origin/master"))
        .Executes<Task>(async () =>
        {
            var releaseTag = $"v{GitVersion.MajorMinorPatch}";
    
            // Not providing the second, optional parameter gives the latest section
            var changeLogSectionEntries = ExtractChangelogSectionNotes(ChangeLogFile);
            var latestChangeLog = changeLogSectionEntries
                .Aggregate((c, n) => c + Environment.NewLine + n);
            var completeChangeLog = $"## {releaseTag}" + Environment.NewLine + latestChangeLog;
    
            var repositoryInfo = GetGitHubRepositoryInfo(GitRepository);
    
            await PublishRelease(new GitHubReleaseSettings()
                .SetArtifactPaths(GlobFiles(OutputDirectory, "*.nupkg").NotEmpty().ToArray())
                .SetCommitSha(GitVersion.Sha)
                .SetReleaseNotes(completeChangeLog)
                .SetRepositoryName(repositoryInfo.repositoryName)
                .SetRepositoryOwner(repositoryInfo.gitHubOwner)
                .SetTag(releaseTag)
                .SetToken(GitHubAuthenticationToken)
            );
        });
    
    • Improve this Doc
    Back to top © Dangl IT - Georg Dangl