修复预览构建状态解析与工作进程恢复
限制 Jenkins 状态接口只返回监控所需字段 避免完整构建 JSON 触发反序列化递归深度限制 让预览外部生成工作进程在身份初始化后自动重启 补充定向测试、防回归检查和技术说明
This commit is contained in:
@@ -205,10 +205,13 @@ impl JenkinsClient {
|
||||
Fut: Future<Output = ()>,
|
||||
{
|
||||
let build_url = loop {
|
||||
let item_url = reference
|
||||
let mut item_url = reference
|
||||
.queue_url
|
||||
.join("api/json")
|
||||
.map_err(|error| error.to_string())?;
|
||||
item_url
|
||||
.query_pairs_mut()
|
||||
.append_pair("tree", "cancelled,executable[url]");
|
||||
let item: QueueItem = self.get_json_with_retry(item_url).await?;
|
||||
if item.cancelled.unwrap_or(false) {
|
||||
return Ok(JenkinsOutcome {
|
||||
@@ -226,9 +229,12 @@ impl JenkinsClient {
|
||||
|
||||
on_build(build_url.as_str()).await;
|
||||
let successful = loop {
|
||||
let state_url = build_url
|
||||
let mut state_url = build_url
|
||||
.join("api/json")
|
||||
.map_err(|error| error.to_string())?;
|
||||
state_url
|
||||
.query_pairs_mut()
|
||||
.append_pair("tree", "building,result");
|
||||
let state: BuildState = self.get_json_with_retry(state_url).await?;
|
||||
if state.building {
|
||||
tokio::time::sleep(self.poll_interval).await;
|
||||
|
||||
@@ -103,7 +103,13 @@ async fn mock_queue(axum::extract::Path(id): axum::extract::Path<u64>) -> Json<V
|
||||
)
|
||||
}
|
||||
|
||||
async fn mock_build(State(state): State<MockJenkinsState>) -> impl IntoResponse {
|
||||
async fn mock_build(
|
||||
State(state): State<MockJenkinsState>,
|
||||
uri: axum::http::Uri,
|
||||
) -> impl IntoResponse {
|
||||
if uri.query() != Some("tree=building%2Cresult") {
|
||||
return (StatusCode::BAD_REQUEST, "missing bounded tree query").into_response();
|
||||
}
|
||||
if state
|
||||
.invalid_build_responses
|
||||
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |remaining| {
|
||||
|
||||
Reference in New Issue
Block a user