diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jenkins.rs | 161 |
1 files changed, 80 insertions, 81 deletions
diff --git a/src/jenkins.rs b/src/jenkins.rs index 038056a..273e26c 100644 --- a/src/jenkins.rs +++ b/src/jenkins.rs @@ -121,94 +121,93 @@ pub fn find_and_track_build_and_update_status( // Does `displayName` match if job_for_commit(&job, &commit_ref) { info!("Job found: {}", job_url); - // thread::spawn(move || { - // Start timer - let now = Instant::now(); - - let commit_status = job.result.commit_status(); - - github::update_commit_status( - &github_token, - &commit_ref, - &commit_status, - job_url.clone(), - None, - "continuous-integration/jenkins".to_owned() - ).expect( - format!( - "GitHub pending status update failed for {}/{} {}.", - commit_ref.owner, - commit_ref.repo, - commit_ref.sha - ).as_ref() - ); - while job.result == JobStatus::Pending { - // loop - // if timer > 20 minutes - // call github::update_commit_status with timeout error - // return - // wait 30 seconds - // call request_job again - // if the status is different - // call github::update_commit_status - // stop - - info!("Waiting for job to finish"); - - if now.elapsed().as_secs() == t20_minutes { - github::update_commit_status( - &github_token, - &commit_ref, - &github::CommitStatus::Error, - job_url.clone(), - Some("The status checker timed out.".to_owned()), - "continuous-integration/jenkins".to_owned() - ).expect( - format!( - "GitHub timeout error status update failed for {}/{} {}.", - commit_ref.owner, - commit_ref.repo, - commit_ref.sha - ).as_ref() - ); - - return Ok(()) - } + // Start timer + let now = Instant::now(); + + let commit_status = job.result.commit_status(); + + github::update_commit_status( + &github_token, + &commit_ref, + &commit_status, + job_url.clone(), + None, + "continuous-integration/jenkins".to_owned() + ).expect( + format!( + "GitHub pending status update failed for {}/{} {}.", + commit_ref.owner, + commit_ref.repo, + commit_ref.sha + ).as_ref() + ); + + while job.result == JobStatus::Pending { + // loop + // if timer > 20 minutes + // call github::update_commit_status with timeout error + // return + // wait 30 seconds + // call request_job again + // if the status is different + // call github::update_commit_status + // stop + + info!("Waiting for job to finish"); + + if now.elapsed().as_secs() == t20_minutes { + github::update_commit_status( + &github_token, + &commit_ref, + &github::CommitStatus::Error, + job_url.clone(), + Some("The status checker timed out.".to_owned()), + "continuous-integration/jenkins".to_owned() + ).expect( + format!( + "GitHub timeout error status update failed for {}/{} {}.", + commit_ref.owner, + commit_ref.repo, + commit_ref.sha + ).as_ref() + ); + + return Ok(()) + } - sleep(Duration::from_secs(30)); + sleep(Duration::from_secs(30)); - let updated_job = request_job( - &jenkins_url, - &jenkins_client, - job_url.as_ref() + let updated_job = request_job( + &jenkins_url, + &jenkins_client, + job_url.as_ref() + ).expect( + format!("Failed to request job '{}'.", job_url).as_ref() + ); + + if job.result != updated_job.result { + github::update_commit_status( + &github_token, + &commit_ref, + &job.result.commit_status(), + job_url.clone(), + None, + "continuous-integration/jenkins".to_owned() ).expect( - format!("Failed to request job '{}'.", job_url).as_ref() + format!( + "GitHub status update failed for {}/{} {}.", + commit_ref.owner, + commit_ref.repo, + commit_ref.sha + ).as_ref() ); - if job.result != updated_job.result { - github::update_commit_status( - &github_token, - &commit_ref, - &job.result.commit_status(), - job_url.clone(), - None, - "continuous-integration/jenkins".to_owned() - ).expect( - format!( - "GitHub status update failed for {}/{} {}.", - commit_ref.owner, - commit_ref.repo, - commit_ref.sha - ).as_ref() - ); - - return Ok(()) - } - - job = updated_job; + return Ok(()) } - // }); + + job = updated_job; + } return Ok(()) } |