Skip to content

Conversation

@runningcode
Copy link
Contributor

Summary

Implements the launchpad side of EME-606. Extracts tooling version information from uploaded artifact zip files and sends them to Sentry for storage and searchability in Dash.

Changes

API Models (src/launchpad/api/update_api_models.py)

  • Added sentry_cli_version field to UpdateData model
  • Added fastlane_version field to UpdateData model
  • Added gradle_plugin_version field to UpdateData model

Version Extraction (src/launchpad/artifact_processor.py)

  • Added _extract_tooling_versions method to parse .sentry-cli-metadata.txt from artifact zip files
  • Handles missing/corrupt files gracefully
  • Parses format: sentry-cli-version: {version}
  • Updated _prepare_update_data to extract and include version information when updating Sentry

Tests (tests/unit/test_artifact_processor.py)

  • Added TestToolingVersionExtraction test class with 5 comprehensive tests:
    • Test successful extraction of sentry-cli version
    • Test handling of missing metadata files
    • Test multiline metadata parsing
    • Test whitespace handling
    • Test graceful handling of invalid/corrupt zip files

Notes

  • All tests pass ✅
  • Pre-commit hooks pass ✅
  • Tested with real artifact - successfully extracted and sent sentry-cli version 2.58.0

Refs: EME-606

Related PR: getsentry/sentry#103062

Extract sentry-cli, fastlane, and gradle plugin versions from artifact
metadata files and send them to Sentry's preprod artifact update API.

Changes:
- Add sentry_cli_version, fastlane_version, and gradle_plugin_version
  fields to UpdateData model
- Add _extract_tooling_versions method to parse .sentry-cli-metadata.txt
- Update _prepare_update_data to extract and include version information
- Add comprehensive tests for version extraction

Refs: EME-606
@linear
Copy link

linear bot commented Nov 10, 2025

@codecov
Copy link

codecov bot commented Nov 10, 2025

Codecov Report

❌ Patch coverage is 97.36842% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.38%. Comparing base (9082e59) to head (db5046d).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/launchpad/artifact_processor.py 88.88% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #464      +/-   ##
==========================================
+ Coverage   80.29%   80.38%   +0.09%     
==========================================
  Files         159      159              
  Lines       13482    13558      +76     
  Branches     1428     1431       +3     
==========================================
+ Hits        10825    10899      +74     
- Misses       2119     2120       +1     
- Partials      538      539       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants