Skip to content

Commit 2e19178

Browse files
runningcodeclaude
andcommitted
feat(build): Add CLI version metadata to build upload archives (EME-471)
Adds a `.sentry-cli-metadata.txt` file to all zip archives created during build uploads. This file contains the sentry-cli version for debugging purposes. The metadata file is added to both single-file uploads (APK, AAB) and directory uploads (XCArchive) with the same compression and timestamp settings as other files to maintain consistent checksums. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 3f51037 commit 2e19178

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/commands/build/upload.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use crate::api::{
1414
Api, AuthenticatedApi, ChunkUploadCapability, ChunkedBuildRequest, ChunkedFileState, VcsInfo,
1515
};
1616
use crate::config::Config;
17+
use crate::constants::VERSION;
1718
use crate::utils::args::ArgExt as _;
1819
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
1920
use crate::utils::build::{handle_asset_catalogs, ipa_to_xcarchive, is_apple_app, is_ipa_file};
@@ -455,6 +456,9 @@ fn normalize_file(path: &Path, bytes: &[u8]) -> Result<TempFile> {
455456
zip.start_file(file_name, options)?;
456457
zip.write_all(bytes)?;
457458

459+
zip.start_file(".sentry-cli-metadata.txt", options)?;
460+
writeln!(zip, "sentry-cli-version: {VERSION}")?;
461+
458462
zip.finish()?;
459463
debug!("Successfully created normalized zip for file");
460464
Ok(temp_file)

src/utils/build/normalize.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::io::Write as _;
66
use std::os::unix::fs::PermissionsExt as _;
77
use std::path::{Path, PathBuf};
88

9+
use crate::constants::VERSION;
910
use crate::utils::fs::TempFile;
1011
use anyhow::{Context as _, Result};
1112
use itertools::Itertools as _;
@@ -108,6 +109,12 @@ pub fn normalize_directory(path: &Path, parsed_assets_path: &Path) -> Result<Tem
108109
)?;
109110
}
110111

112+
let options = SimpleFileOptions::default()
113+
.compression_method(zip::CompressionMethod::Deflated)
114+
.last_modified_time(DateTime::default());
115+
zip.start_file(".sentry-cli-metadata.txt", options)?;
116+
writeln!(zip, "sentry-cli-version: {VERSION}")?;
117+
111118
zip.finish()?;
112119
debug!("Successfully created normalized zip for directory with {file_count} files");
113120
Ok(temp_file)

0 commit comments

Comments
 (0)