Evergreen Module Manager
Manage Evergreen modules in your local environment.
Table of contents
- Description
- Getting Help
- Documentation
- Dependencies
- Installation
- Usage
- Contributor's Guide
- Resources
Description
The evg-module-manager is a tool to help improve the local workflows of working with modules in
your evergreen projects. It will help you keep any modules defined in your local project in sync.
It supports the following functionality:
- List what modules are defined in the local project.
- List what modules are currently active in your local repo.
- Clone a module repository.
- Enable/disable modules in your local repo.
- Create an evergreen patch build that includes changes from the local patch build and all enabled
modules.
- Submit a changes to the commit-queue that includes changes from the local patch build and all
enabled modules.
Getting Help
What's the right channel to ask my question?
If you have a question about evg-module-manager, please mention @dag-on-call in the
slack channel #evergreen-users
or email us at
dev-prod-dag@mongodb.com.
How can I request a change/report a bug in evg-module-manager?
Create a DAG ticket.
What should I include in my ticket or #evergreen-users question?
Since #evergreen-users questions are interrupts,
please include as much information as possible.
This can help avoid long information-gathering threads.
Please include the following in any created tickets:
- Motivation for Request
- Provide us the motivation for this change.
- Context
- Provide some background context for this issue.
- Description
- Provide some description on how this issue happened.
Documentation
Read the documentation here.
Dependencies
See Usage Prerequisites
for more details.
Installation
We strongly recommend using a tool like pipx to install
this tool. This will isolate the dependencies and ensure they don't conflict with other tools.
$ pipx install evg-module-manager
Debugging installation issues
A common issue that arises during installation is pipx failing to install emm and printing out the following error:
$ pipx install evg-module-manager
Fatal error from pip prevented installation. Full pip output in file:
/home/ubuntu/.local/pipx/logs/cmd_2022-03-31_13.24.42_pip_errors.log
Some possibly relevant errors from pip install:
ERROR: Could not find a version that satisfies the requirement evg-module-manager (from versions: none)
ERROR: No matching distribution found for evg-module-manager
Error installing evg-module-manager.
This error indicates that pipx could not find a version of emm that was built to support the version of Python installed on your machine.
Make sure to check that your version of Python matches the requirements called out in the Dependencies section. You
can check the version of Python that is on your computer by running
$ python --version
If you are running into the issue above but are sure that the correct version of Python is installed on your computer,
you can explicitly specify a path to the correct Python version during installation.
$ which python3.9
/usr/bin/python3.9
$ pipx install evg-module-manager --python /usr/bin/python3.9
Usage
See the documentation for details about using this tool.
Usage: evg-module-manager [OPTIONS] COMMAND [ARGS]...
Evergreen Module Manager is a tool help simplify the local workflows of evergreen modules.
Options:
--modules-dir PATH Directory to store module repositories [default='..']
--evg-config-file PATH Path to file with evergreen auth configuration
[default='/Users/dbradf/.evergreen.yml']
--evg-project TEXT Name of Evergreen project [default='mongodb-mongo-master']
--help Show this message and exit.
Commands:
disable Disable the specified module in the current repo.
enable Enable the specified module in the current repo.
evg Perform evergreen actions against the base repo and enabled modules.
git Perform git actions against the base repo and enabled modules.
list-modules List the modules available for the current repo.
pull-request Create a Github pull request for changes in the base repository and any...
Contributor's Guide
Setting up a local development environment
This project uses poetry for setting up a local environment.
git clone ...
cd evg-module-manager
poetry install
linting/formatting
This project uses black and
isort for formatting.
poetry run black src tests
poetry run isort src tests
Running tests
This project uses pytest for testing.
poetry run pytest
Automatically running checks on commit
This project has pre-commit configured. Pre-commit will run
configured checks at git commit time. To enable pre-commit on your local repository run:
poetry run pre-commit install
Versioning
This project uses semver for versioning.
Please include a description what is added for each new version in CHANGELOG.md
.
Code Review
Please open a Github Pull Request for code review.
Deployment
Deployment to pypi is automatically triggered on merges to main.
Resources