diff options
| -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(())          } | 
