Vibeleaderboard
Index / tool
Visit getsentry.github.io
Category
Developer Tools
Rank
Pricing
Open Source
Type
TOOL
Builder
getsentry
GitHub
193 stars
Latest release
2.30.1
Date

About

Universal release CLI used by Sentry to publish to npm, PyPI, NuGet, crates.io, GCS, and more in one command.

What it does

Craft turns a repository’s release process into a configured sequence. It resolves versions, manages release branches and changelogs, waits for CI, retrieves artifacts, and sends those artifacts to selected destinations. A YAML configuration defines policies, providers, and targets, while preparation and publication remain separate commands.

Why it's ranked here

Craft is compelling when one release must coordinate several ecosystems without duplicating workflow logic. Its strongest case is broader than registry upload: version selection, changelog generation, CI artifact handling, monorepo support, and release controls share one model. That opinionated model also makes adoption a process decision, not merely a command substitution.

What's good

The target coverage spans language registries, container distribution, cloud storage, release pages, and platform-specific channels. Automatic versioning reads conventional commits, while manual and calendar policies remain available. NPM and Yarn workspaces receive dependency-aware ordering and filtering. Dry-run mode suppresses file writes, commits, pushes, and API mutations. Configuration validation reports field-level errors.

Tradeoffs

Craft enforces its own release-branch, changelog, artifact, and publication workflow, so teams with different conventions must adapt their process. Several targets depend on external tools, credentials, repository access, or CI artifacts. Some publishing operations clone repositories or compile projects. Built-in Sentry instrumentation attaches command arguments, working directory, username, hostname, and operating-system details, although it removes server names and shortens home-directory paths in error frames.

How to use it well

Use Craft for repositories that repeatedly ship related artifacts through GitHub and multiple package or storage destinations. Put policy in configuration, prepare releases separately from publication, preview changelogs in pull requests, and test changes with dry runs. It does not replace CI builds, registry credentials, signing tools, or the ecosystem-specific executables some targets require.

Technical notes+

src/index.ts builds the yargs CLI with prepare, publish, targets, config, artifacts, and changelog command modules; it also defaults prompt suppression in CI and exposes dry-run behavior. src/config.ts searches upward for .craft.yml, parses YAML, validates it with CraftProjectConfigSchema, caches results, and gates features through minVersion. src/logger.ts routes logs to stderr so structured stdout remains clean. src/instrument.ts initializes Sentry tracing, records host and invocation metadata, removes server_name, and replaces the home-directory prefix in stack-frame paths. src/utils/env.ts rejects legacy environment-file loading and warns when such files remain. src/utils/gpg.ts pipes private keys directly to GPG rather than writing them to disk. package.json defines the craft and sentry-craft executable aliases, TypeScript build tooling, Vitest tests, and an npm package surface.

Observed

License
MIT
Primary language
TypeScript
Installation
Global npm package @sentry/craft or downloadable binary release
Interface
Command-line application with craft and sentry-craft executable aliases
Configuration
YAML project configuration validated with a Zod schema
Automation surface
GitHub Action for release preparation and reusable workflow for changelog previews
Release targets
GitHub, npm, PyPI, Docker, crates.io, NuGet, Homebrew, GCS, GitHub Pages, CocoaPods, RubyGems, Maven Central, Hex, pub.dev, AWS Lambda layers, and PowerShell Gallery

Read from README.md, package.json, src/index.ts, src/config.ts, src/logger.ts, src/instrument.ts, src/utils/env.ts, src/utils/git.ts, src/utils/gpg.ts, src/targets/gcs.ts, src/targets/gem.ts, src/targets/hex.ts, src/targets/npm.ts, src/targets/upm.ts, src/utils/async.ts.

What it can do

  • Publish packages to npm registry

    JavaScript/Node.js packagePublished npm package

  • Publish packages to PyPI registry

    Python packagePublished PyPI package

  • Publish packages to NuGet registry

    .NET packagePublished NuGet package

  • Publish packages to crates.io registry

    Rust cratePublished Rust crate

  • Upload files to Google Cloud Storage

    Files and GCS configurationFiles stored in GCS bucket

  • Execute multi-platform releases with single command

    Release configuration and package filesPackages published across multiple registries

Intel on Craft

More in Intel

Tags

releasecliautomationpublishingsentry

Tech Stack

Node.jsDockerTypeScript

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.