示例#1
0
        public static JenkinsJobRunner Create(TextWriter writer, JenkinsClient client = null, bool quiet = false)
    #endif
        {
            client = client ?? DefaultClient.Create();

            var jobRunner = new JenkinsJobRunner(client)
            {
                MonitorConsoleOutput = !quiet,
            };

            if (!quiet)
            {
                jobRunner.StatusChanged += () => {
                    writer.WriteLine($"[{DateTime.Now}] Status: '{jobRunner.Status}'");
                };

            #if NETCORE
                // Write method not available!
                jobRunner.ConsoleOutputChanged += writer.WriteLine;
            #else
                jobRunner.ConsoleOutputChanged += writer.Write;
            #endif
            }

            return(jobRunner);
        }
示例#2
0
        public static JenkinsJobRunner Create(TextWriter writer, JenkinsClient client = null)
        {
            client = client ?? DefaultClient.Create();

            var jobRunner = new JenkinsJobRunner(client)
            {
                MonitorConsoleOutput = true,
            };

            jobRunner.StatusChanged += () => {
                writer.WriteLine($"[{DateTime.Now}] Status: '{jobRunner.Status}'");
            };

            jobRunner.ConsoleOutputChanged += newText => {
                writer.Write(newText);
            };

            return(jobRunner);
        }
示例#3
0
        private async void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                jenkinsJobRunner = new JenkinsJobRunner(jenkinsClient)
                {
                    BuildTimeout = 60 * 60
                };

                jenkinsJobRunner.StatusChanged += JenkinsJobRunner_StatusChanged;

                string jobName = JobCombo.SelectedValue.ToString();
                ListBinding.Add(new ListEntry {
                    Message = $"start {jobName}"
                });
                JenkinsBuildBase result = null;
                if (jobData[jobName].Count == 0)
                {
                    result = await jenkinsJobRunner.RunAsync(jobName);
                }
                else
                {
                    Dictionary <string, string> parameters = new Dictionary <string, string>();
                    foreach (var jobProperty in SelectedJob.JobProperties)
                    {
                        parameters[jobProperty.Key] = jobProperty.Value;
                    }
                    result = await jenkinsJobRunner.RunWithParametersAsync(jobName, parameters);
                }

                ListBinding.Add(new ListEntry {
                    Message = $"Duration { result.Duration } ms"
                });
                ListBinding.Add(new ListEntry {
                    Message = $"Result {result.Result}"
                });
            }
            catch (Exception ex)
            {
                var t = ex;
            }
        }
示例#4
0
        private static void ExecuteJenkinsJob()
        {
            var jobName = Env.GetString("JOB");
            var client  = new JenkinsClient(Env.GetString("JENKINS_HOST"))
            {
                UserName = Env.GetString("JENKINS_USER"),
                ApiToken = Env.GetString("JENKINS_API_KEY")
            };

            client.UpdateSecurityCrumb();
            if (Env.GetBool("WAIT_FOR_COMPLETION"))
            {
                var jenkinsJobRunner = new JenkinsJobRunner(client)
                {
                    BuildTimeout = Env.GetInt("BUILD_TIMEOUT", 600)
                };

                Log.Information("Starting build");
                var buildBase = jenkinsJobRunner.Run(jobName);
                if (Env.GetBool("TERMINATE_ON_FAILURE") && buildBase.Result != "SUCCESS")
                {
                    Log.Error("Build status was " + buildBase.Result);
                    Environment.Exit(1);
                }

                if (Env.GetBool("DOWNLOAD_ARTIFACT"))
                {
                    if (buildBase.Id != null)
                    {
                        DownloadArtifact(client, jobName, buildBase.Id.Value, Env.GetString("ARTIFACT_NAME"));
                    }
                }
            }
            else
            {
                client.Jobs.Build(jobName);
            }
            Log.Information("Completed");
        }