Skip to content

Using JenkinsJobRunner

Joshua Miller edited this page Jul 27, 2017 · 2 revisions

This class has been added to simplify the automation of running a Jenkins Job.

private JenkinsBuild RunJenkinsJob(JenkinsClient client, string jobName, IDictionary<string, string> jobParameters = null)
{
    var runner = new JenkinsJobRunner(client);

    runner.StatusChanged += () => {
        switch (runner.Status) {
            case JenkinsJobStatus.Queued:
                Console.WriteLine("Job is Queued.");
                break;
            case JenkinsJobStatus.Building:
                Console.WriteLine("Job is Running.");
                break;
            case JenkinsJobStatus.Complete:
                Console.WriteLine("Job is Complete.");
                break;
        }
    };

    Console.WriteLine($"Starting Job '{jobName}'...");

    var buildResult = (jobParameters?.Any() ?? false)
        ? runner.RunWithParameters(jobName, jobParameters)
        : runner.Run(jobName);

    if (!string.Equals(buildResult?.Result, "SUCCESS"))
        throw new ApplicationException($"Build #{buildResult?.Number} Failed!");

    Console.WriteLine($"Build #{buildResult?.Number} completed successfully.");
    Console.WriteLine($"Report: {buildResult?.Url}");
    return buildResult;
}