fix(ci): keep published source maps when a rebuild differs (#3113)

This commit is contained in:
Hampus
2026-10-02 15:25:05 +02:00
committed by GitHub
parent e297a6a653
commit 11645cbf28
+35 -1
View File
@@ -562,7 +562,12 @@ pub(crate) fn split_append_only_upload_plan(
let mut skipped = Vec::new();
for item in plan {
if let Some(remote) = existing_objects.get(&item.key) {
ensure_existing_s3_object_matches_local(bucket, &item, remote)?;
if let Err(error) = ensure_existing_s3_object_matches_local(bucket, &item, remote) {
if !item.key.ends_with(".map") {
return Err(error);
}
println!("Keeping the published source map: {error}");
}
skipped.push(item);
} else {
pending.push(item);
@@ -1159,6 +1164,35 @@ mod tests {
assert!(error.to_string().contains("differs from local file"));
}
#[test]
fn append_only_plan_keeps_a_published_source_map_that_differs() {
let temp = tempfile::tempdir().unwrap();
let path = temp.path().join("abc.worker.js.map");
fs::write(&path, "local").unwrap();
let plan = vec![S3UploadPlanItem::new(
path,
"assets/abc.worker.js.map".to_string(),
)];
let existing = BTreeMap::from([(
"assets/abc.worker.js.map".to_string(),
S3ObjectMetadata {
e_tag: Some("\"00000000000000000000000000000000\"".to_string()),
size: Some(9),
},
)]);
let (pending, skipped) = split_append_only_upload_plan("bucket", plan, &existing).unwrap();
assert!(pending.is_empty());
assert_eq!(
skipped
.iter()
.map(|item| item.key.as_str())
.collect::<Vec<_>>(),
vec!["assets/abc.worker.js.map"]
);
}
#[test]
fn append_only_plan_rejects_existing_key_without_comparable_etag() {
let temp = tempfile::tempdir().unwrap();