Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/axem-solutions/dem
Containerized Development Environment Manager for embedded development
https://github.com/axem-solutions/dem
containerization containers developer-tools development-environment development-environment-manager development-environment-setup devops devtools edge edge-computing embedded embedded-systems hacktoberfest internal-developer-platform iot platform-engineering toolchains tools
Last synced: 2 months ago
JSON representation
Containerized Development Environment Manager for embedded development
- Host: GitHub
- URL: https://github.com/axem-solutions/dem
- Owner: axem-solutions
- License: other
- Created: 2023-01-25T19:27:50.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-12T14:37:55.000Z (3 months ago)
- Last Synced: 2024-11-12T15:32:57.051Z (3 months ago)
- Topics: containerization, containers, developer-tools, development-environment, development-environment-manager, development-environment-setup, devops, devtools, edge, edge-computing, embedded, embedded-systems, hacktoberfest, internal-developer-platform, iot, platform-engineering, toolchains, tools
- Language: Python
- Homepage:
- Size: 7.17 MB
- Stars: 92
- Watchers: 6
- Forks: 15
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
Development Environment Manager
for
Embedded Development
Manage your isolated Development Environments with ease
:star2: Join our Community on Discord :star2:
## Overview
Documentation • Tutorial •
Contribution Guide •
Support
**DEM** is a command-line tool that provides an easy, reproducible, and scalable way to set up
multi-container-based Development Environments (DevEnvs for short) for software development.> DEM is currently in alpha state, so expect major changes in the future!
Contributors and early adopters are welcome!## Key features
- Create scalable, reliable, and reproducible containerized Development Environments where each tool
is isolated in its own container.
- Install preconfigured Development Environments from catalogs.
- Ensure that everyone on your team works with the same toolset.## How is DEM Different?
Unlike other container-based development environments that pack all tools into a single image
requiring users to enter the container via an interactive shell, DEM creates a separate container
for each tool. This allows you to work on your host system with your usual setup while the
development-specific tools are isolated in containers.## Prerequisites
Linux and Windows are supported.
:information_source: macOS is not yet officially supported. However, if all prerequisites are met,
DEM should work on macOS as well.DEM depends on Python and Docker. Ensure you have the following versions:
- Python 3.10+
- Docker Engine 24.0+## Installation
First, install Python and Docker if you haven't already:
- [Python](https://www.python.org/downloads/)
- [Docker](https://docs.docker.com/get-docker/)Make sure to include **pip** during Python installation.
Install DEM from the PyPI repository using:
pip install axem-dem
- The package name is 'axem-dem', but the command is `dem`.
- Ensure the Docker daemon is running before using DEM.### Enable Autocompletion
Enable autocompletion for PowerShell, Bash, and Zsh shells:
dem --install-completion
If the command doesn't work, specify your shell type as an input parameter (powershell, bash, or zsh).
> **Note for Zsh users:** `compinit` must be called from your .zshrc.
## Quick start
We got you covered in all scenarios!
### I'd like to start with a template...
DEM comes with a few templates available from the `axem` catalog. List them with:
dem list --cat axem
Clone the selected template:
dem clone DEV_ENV_NAME
Replace DEV_ENV_NAME with the name of the Development Environment you want to clone.
### I'd like to work on a project already configured with DEM...
Enter the project's root directory and initialize the DevEnv:
dem init
### I'd like to use a DevEnv someone shared with me...
Import a DevEnv descriptor JSON:
dem import PATH_TO_DEV_ENV
where PATH_TO_DEV_ENV is the path to the JSON file.
### I'd like to create my own DevEnv from scratch...
Create a new DevEnv:
dem create DEV_ENV_NAME
Customize your DevEnv:
- Add or remove tools.
- Change the tool image for a given tool.You can edit the DevEnv with:
dem modify DEV_ENV_NAME
Finally, if you are ready to use the Development Environment, install it with:
dem install DEV_ENV_NAME
>For more detailed instructions please refer to the
[Documentation](https://www.axemsolutions.io/dem_doc/index.html)## The Concept in a Nutshell
A Development Environment (DevEnv) is a set of software tools used for a specific development
project (e.g., build system, debugger, test framework).The idea is to pack the tools separately into container images, which are then can be stored in
registries.Each DevEnv has a descriptor, like a blueprint, indicating which tools are required.
![DevEnv descriptor](/docs/wp-content/dev_env_descriptor.png)
Sample descriptors can be stored in the Development Environment **Catalogs**. You can browse these
catalogs and download a copy of the Development Environment descriptor to your local catalog.![Catalogs](/docs/wp-content/dem_catalogs.png)
A DevEnv can be installed from your local catalog.
![DevEnv installation](/docs/wp-content/dev_env_installation.png)