Skip to main content

Utilities for setting up a Sentry development environment

Project description

devenv

managing dev environments since '24

devenv is an extensible execution framework and library for authoring a simple set of high level commands - bootstrap, sync, doctor, nuke - that manage a repository's dev environment.

prerequisites

Are you a Sentry employee? Make sure your GitHub account has been added to a getsentry/engineering team. If not, open an IT Ticket before continuing.

Otherwise, set the SENTRY_EXTERNAL_CONTRIBUTOR environment variable.

install

Download this and run it:

bash install-devenv.sh

This "global" devenv is installed to ~/.local/share/sentry-devenv.

To update this installation, run devenv update.

user guide

devenv bootstrap

This is intended for initial setup.

devenv fetch [repository name]

Any repository on github in the form of [org]/[reponame]

Repositories are cloned to a "coderoot" directory which is specified in the global configuration.

Note: sentry and ops are currently special names which perform more complicated installations (e.g., sentry will set up both sentry and getsentry)

devenv sync

When you're inside a repository, this will bring the dev environment up to date, or create it if it doesn't exist. It runs [reporoot]/devenv/sync.py.

devenv doctor

When you're inside a repository, this diagnoses and tries to fix common issues. Checks and fixes are defined in [reporoot]/devenv/checks.

devenv nuke|uninstall (wip)

When you're inside a repository, this completely removes the dev environment.

technical overview

devenv itself lives in ~/.local/share/sentry-devenv. This is the "global" devenv. Inside:

  • bin contains devenv itself and direnv
    • this is the only PATH entry needed for devenv
  • a private python and virtualenv used exclusively by devenv

As much as possible, a repo's dev environment is self-contained within [reporoot]/.devenv.

We're relying on direnv (which bootstrap will install, globally) to add [reporoot]/.devenv/bin to PATH. Therefore a minimum viable [reporoot]/.envrc might look like:

if [ -f "${PWD}/.env" ]; then
    dotenv
fi

PATH_add "${HOME}/.local/share/sentry-devenv/bin"

if ! command -v devenv >/dev/null; then
    echo "install devenv: https://github.com/getsentry/devenv#install"
    return 1
fi

PATH_add "${PWD}/.devenv/bin"

configuration

global configuration is at ~/.config/sentry-devenv/config.ini.

repository configuration is at [reporoot]/devenv/config.ini.

develop

We use tox. The easiest way to run devenv locally is just using the tox venv's executable:

~/code/sentry $  ~/code/devenv/.tox/py311/bin/devenv sync

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentry_devenv-1.9.0.tar.gz (35.1 kB view details)

Uploaded Source

Built Distribution

sentry_devenv-1.9.0-py3-none-any.whl (53.2 kB view details)

Uploaded Python 3

File details

Details for the file sentry_devenv-1.9.0.tar.gz.

File metadata

  • Download URL: sentry_devenv-1.9.0.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.2

File hashes

Hashes for sentry_devenv-1.9.0.tar.gz
Algorithm Hash digest
SHA256 690a70c555ffadae061617421200c2070c3334b27f9d5bbfc405bbbca790c562
MD5 b525127e0179c2faf8c0f85170ab92ff
BLAKE2b-256 eacf8d375470e07d1fbdb7833dff33a3a70185886aebc76d54ac75c193afa3eb

See more details on using hashes here.

File details

Details for the file sentry_devenv-1.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sentry_devenv-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af0568132bf8613c7e894a501b759da49ae5b1f16729057fbc62f1efde128f61
MD5 a3718cf63540043772d21a471ae1afa8
BLAKE2b-256 67bb4aee9ec24921d7fcddcb864e208cca650c98abfd61903b947293bb23d47f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page