[snowpatch] [PATCH 2/5] jenkins: Rename "build_url" to "build_handle"
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Fri Feb 1 17:17:11 AEDT 2019
In preparation for genericising our CI backend API, change references to
"build_url" to the more generic "build_handle", because the fact that it's
a URL is really a Jenkins-specific detail. Snowpatch cares about the fact
that a results URL is a URL, but not so much the build URL, which could be
any arbitrary identifier really.
Also some random formatting cleanups.
Signed-off-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
---
src/jenkins.rs | 42 ++++++++++++++++++++++--------------------
src/main.rs | 18 +++++++++---------
2 files changed, 31 insertions(+), 29 deletions(-)
diff --git a/src/jenkins.rs b/src/jenkins.rs
index 97dfe4f031db..547c396c3513 100644
--- a/src/jenkins.rs
+++ b/src/jenkins.rs
@@ -145,7 +145,7 @@ impl JenkinsBackend {
.map_err(|e| format!("Couldn't parse JSON from Jenkins: {}", e).into())
}
- pub fn get_build_url(&self, build_queue_entry: &str) -> Result<String, Box<Error>> {
+ pub fn get_build_handle(&self, build_queue_entry: &str) -> Result<String, Box<Error>> {
loop {
let entry = self.get_api_json_object(build_queue_entry)?;
match entry.get("executable") {
@@ -166,17 +166,17 @@ impl JenkinsBackend {
}
}
- pub fn get_build_status(&self, build_url: &str) -> Result<JenkinsBuildStatus, Box<Error>> {
- match self.get_api_json_object(build_url)?["building"].as_bool() {
+ pub fn get_build_status(&self, build_handle: &str) -> Result<JenkinsBuildStatus, Box<Error>> {
+ match self.get_api_json_object(build_handle)?["building"].as_bool() {
Some(true) => Ok(JenkinsBuildStatus::Running),
Some(false) => Ok(JenkinsBuildStatus::Done),
None => Err("Error getting build status".into()),
}
}
- pub fn get_build_result(&self, build_url: &str) -> Result<TestState, Box<Error>> {
+ pub fn get_build_result(&self, build_handle: &str) -> Result<TestState, Box<Error>> {
match self
- .get_api_json_object(build_url)?
+ .get_api_json_object(build_handle)?
.get("result")
.map(|v| v.as_str().unwrap_or("PENDING"))
{
@@ -191,11 +191,11 @@ impl JenkinsBackend {
}
}
- pub fn get_results_url(&self, build_url: &str, job: &BTreeMap<String, String>) -> String {
- let default_url = format!("{}/", build_url);
+ pub fn get_results_url(&self, build_handle: &str, job: &BTreeMap<String, String>) -> String {
+ let default_url = format!("{}/", build_handle);
match job.get("artifact") {
Some(artifact) => {
- let artifact_url = format!("{}/artifact/{}", build_url, artifact);
+ let artifact_url = format!("{}/artifact/{}", build_handle, artifact);
match self.get_url(&artifact_url) {
Ok(mut resp) => match resp.status().is_success() {
true => artifact_url,
@@ -210,27 +210,29 @@ impl JenkinsBackend {
pub fn get_description(
&self,
- build_url: &str,
+ build_handle: &str,
job: &BTreeMap<String, String>,
) -> Option<String> {
match job.get("description") {
- Some(artifact) => match self.get_url(&format!("{}/artifact/{}", build_url, artifact)) {
- Ok(mut resp) => match resp.status().is_success() {
- true => match resp.text() {
- Ok(text) => Some(text),
- Err(_e) => None,
+ Some(artifact) => {
+ match self.get_url(&format!("{}/artifact/{}", build_handle, artifact)) {
+ Ok(mut resp) => match resp.status().is_success() {
+ true => match resp.text() {
+ Ok(text) => Some(text),
+ Err(_e) => None,
+ },
+ false => None,
},
- false => None,
- },
- Err(_e) => None,
- },
+ Err(_e) => None,
+ }
+ }
None => None,
}
}
- pub fn wait_build(&self, build_url: &str) -> Result<JenkinsBuildStatus, Box<Error>> {
+ pub fn wait_build(&self, build_handle: &str) -> Result<JenkinsBuildStatus, Box<Error>> {
// TODO: Implement a timeout?
- while self.get_build_status(build_url)? != JenkinsBuildStatus::Done {
+ while self.get_build_status(build_handle)? != JenkinsBuildStatus::Done {
sleep(Duration::from_millis(JENKINS_POLLING_INTERVAL));
}
Ok(JenkinsBuildStatus::Done)
diff --git a/src/main.rs b/src/main.rs
index 2ca2b007ecba..19989c87cb01 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -134,23 +134,23 @@ fn run_tests(
.start_test(&job.job, jenkins_params)
.unwrap_or_else(|err| panic!("Starting Jenkins test failed: {}", err));
debug!("{:?}", &res);
- let build_url_real;
+ let build_handle_real;
loop {
- let build_url = jenkins.get_build_url(&res);
- if let Ok(url) = build_url {
- build_url_real = url;
+ let build_handle = jenkins.get_build_handle(&res);
+ if let Ok(handle) = build_handle {
+ build_handle_real = handle;
break;
} // TODO: Handle error
}
- debug!("Build URL: {}", build_url_real);
- jenkins.wait_build(&build_url_real).unwrap(); // TODO: Error correctly
- let mut test_result = jenkins.get_build_result(&build_url_real).unwrap();
+ debug!("Build URL: {}", build_handle_real);
+ jenkins.wait_build(&build_handle_real).unwrap(); // TODO: Error correctly
+ let mut test_result = jenkins.get_build_result(&build_handle_real).unwrap();
info!("Jenkins job for {}/{} complete.", branch_name, job.title);
if test_result == TestState::Fail && job.warn_on_fail {
test_result = TestState::Warning;
}
results.push(TestResult {
- description: match jenkins.get_description(&build_url_real, &job.parameters) {
+ description: match jenkins.get_description(&build_handle_real, &job.parameters) {
Some(description) => Some(description),
None => Some(
format!("Test {} on branch {}", job.title, branch_name.to_string()).to_string(),
@@ -158,7 +158,7 @@ fn run_tests(
},
state: test_result,
context: Some(job.title.replace("/", "_")),
- target_url: Some(jenkins.get_results_url(&build_url_real, &job.parameters)),
+ target_url: Some(jenkins.get_results_url(&build_handle_real, &job.parameters)),
});
}
results
--
2.11.0
More information about the snowpatch
mailing list