(
&self,
completed_runs: &mut [(ExecutionContext, ExecutorName)],
api_client: &mut CodSpeedAPIClient,
)
| 246 | } |
| 247 | |
| 248 | pub async fn upload_all( |
| 249 | &self, |
| 250 | completed_runs: &mut [(ExecutionContext, ExecutorName)], |
| 251 | api_client: &mut CodSpeedAPIClient, |
| 252 | ) -> Result<UploadResult> { |
| 253 | let mut last_upload_result: Option<UploadResult> = None; |
| 254 | |
| 255 | let total_runs = completed_runs.len(); |
| 256 | for (run_part_index, (ctx, executor_name)) in completed_runs.iter_mut().enumerate() { |
| 257 | // OIDC tokens can expire quickly, so refresh just before each upload |
| 258 | self.provider.set_oidc_token(api_client).await?; |
| 259 | |
| 260 | if total_runs > 1 { |
| 261 | info!("Uploading results {}/{total_runs}", run_part_index + 1); |
| 262 | } |
| 263 | let run_part_suffix = |
| 264 | Self::build_run_part_suffix(executor_name, run_part_index, total_runs); |
| 265 | let upload_result = upload( |
| 266 | self, |
| 267 | api_client, |
| 268 | ctx, |
| 269 | executor_name.clone(), |
| 270 | run_part_suffix, |
| 271 | ) |
| 272 | .await?; |
| 273 | last_upload_result = Some(upload_result); |
| 274 | } |
| 275 | info!("Performance data uploaded"); |
| 276 | if let Some(upload_result) = &last_upload_result { |
| 277 | info!( |
| 278 | "Linked repository: {}", |
| 279 | console::style(format!( |
| 280 | "{}/{}", |
| 281 | upload_result.owner, upload_result.repository |
| 282 | )) |
| 283 | .bold() |
| 284 | ); |
| 285 | } |
| 286 | |
| 287 | last_upload_result.ok_or_else(|| anyhow::anyhow!("No completed runs to upload")) |
| 288 | } |
| 289 | } |
no test coverage detected