Skip to content

Conversation

@yoannmoinet
Copy link
Member

@yoannmoinet yoannmoinet commented Dec 15, 2025

What and why?

  • Add an alpha apps plugin that zips built assets and uploads them to Datadog storage with optional dry-run and identifier override.
  • Extend core helpers with gzipped multipart uploads, origin headers, repository URL sanitization, and APPS intake env overrides to support the new workflow.
  • Wire the apps plugin into the factory and published bundler packages while keeping alpha plugins hidden from the root README.
  • Align sourcemap uploads and git timing with the new helpers and logging style.

How?

  • Collect bundler outputs plus optional include globs, dedupe them, archive with JSZip, and upload via the apps-intake endpoint with retries/dry-run summaries.
  • Derive app identifiers from package.json or git remote (with sensitive info stripped)
  • Allow full intake URL overrides via DATADOG_APPS_INTAKE_URL/DATADOG_SITE.
  • Introduce createGzipFormData and getOriginHeaders for compressed multipart requests and reuse them in sourcemap sending.
  • Export the new options/types across bundler plugins and adjust README generation to skip packages marked hideFromRootReadme.

@yoannmoinet yoannmoinet changed the title Yoann/apps plugin Apps plugin Dec 15, 2025
@datadog-official
Copy link

datadog-official bot commented Dec 15, 2025

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 054f233 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@yoannmoinet yoannmoinet marked this pull request as ready for review December 16, 2025 22:15
log.error(red('Unable to determine the git remote to compute the app identifier.'));
}

const identifier = buildIdentifier(repository, name);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we should be worried about conflicts when the repository url isn't defined and the package name conflicts across two apps. I don't think it needs to be solved now but maybe we should think through this scenario in one of the RFCs.

Copy link
Member Author

@yoannmoinet yoannmoinet Jan 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good point, we could make it mandatory to have a remote url.
At least for now.

const { errors: uploadErrors, warnings: uploadWarnings } = await uploadArchive(
archive,
{
apiKey: context.auth.apiKey,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Separately from the PR we should think through how we want to handle auth. I kind of like how dd-auth works.

Copy link
Member Author

@yoannmoinet yoannmoinet Jan 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does dd-auth work? (make it through DM in slack)

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.

3 participants