Skip to main content

Create and manage developments environment.

Project description

ENVy

ENVy is an environment manager that allows developers to get easily set up with a project, both by managing dependency installation and by making common workflows easily discoverable.

Config Docs

The ENVy config file contains all the information ENVy uses to manage your project. At the root of your project directory create a YAML file called .envyfile. Check out some example envyfiles here.

The top level of the file contains 3 keys: environment, actions, and services.

Environment:

base:

This contains the information for the base system to be running. If not specified, ENVy will use Ubuntu 18

image: <The docker image that the environment should be built off of>

(Note: we currently only support Ubuntu images) This might look like:

base:
  image: ubuntu:18.04

system-packages:

The list of packages that your project needs that would come from a package manager (ex. apt in Ubuntu)

Each entry in the list should be an object of the following form:

package: <The name of the package>
version: <Optional: A version string to pin this package to>

An example config might look like

system-packages:
- package: curl
  version: 7.65.0
- package: wget
- package: python3

setup-steps:

The list of steps required to take the base system with the system packages and install the rest of the dependencies. This is where you'd put actions like installing python dependencies or seeding a database.

name: <The human-readable name given for this build step>
type: <Either script or remote>
triggers: <The (optional) trigger for this action: see below>

There are two kinds of steps.

A script type setup step is used for executing a list of shell commands inside the environment. This step has an additional run key:

run: <One or more shell commands to execute. Ex: 'npm run install'>

A remote type setup step is used for executing a shell script that can be pulled from a remote location, such as installing meteor. This step type has an additional url key:

url: <The url to download the bash script from>

Triggers

The triggers key is optional, and controls how often the command is re-executed on envy up. By default, the command will only be run once per environment: it will only run again if the user executes envy nuke.

A trigger can be defined as always. This command will be run on every invocation of envy up.

Alternatively, a trigger can be given an object detailing more complex trigger mechanisms, like so:

triggers:
  system-packages: <A list of previously-defined system packages this step should trigger on. This will cause a re-run if the version of that package is changed>
  files: <A list of files within the project's directory. This will cause a re-run when the contents of any of those files change. Ex: 'Pipfile' for a python dependencies step>
  steps: <A list of previously-defined setup-steps. This will cause a re-run when any of the listed steps are themselves triggered for a re-run>

An example trigger set might look like:

triggers:
  files:
    - Pipfile
    - Pipfile.lock
  steps:
    - pipenv

Here, the setup step would run the first time in a clean environment, and then would re-trigger on envy up if Pipfile or Pipfile.lock changed, or if a previous step called pipenv was run.

Actions:

A list of common workflows for the project. These would include anything from compiling a C++ application to linting a python project to starting up a web server. Anything that a developer would commonly do can be placed as an action, to be found with envy --help. Each action has a structure as follows:

name: <The sub-command name used on when invoking envy>
script: <The bash script executed in the environment for this action>
help: <The help message shown next to the command in envy --help>

One such action could be linting javascript code:

actions:
- name: lint
  script: 'eslint .'
  help: 'lint the project'

Services

ENVy can manage sidecar services for you using docker-compose. Point envy to your docker-compose file like so:

compose-file: <Name of docker-compose file in the project>

The sidecar services will be started on envy up, and stopped on envy down

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

envy-project-0.1.3.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

envy_project-0.1.3-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

Details for the file envy-project-0.1.3.tar.gz.

File metadata

  • Download URL: envy-project-0.1.3.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for envy-project-0.1.3.tar.gz
Algorithm Hash digest
SHA256 267a78c0e31f62baa7b13720761c6c84bcb4717138837086b00b050ea7bfc7e5
MD5 549ad36a72fdd91e47221764f7f11a3f
BLAKE2b-256 911d93b1ed7df8ca94b64c54e95365c88ee32de1a525a87f525241ed10422453

See more details on using hashes here.

File details

Details for the file envy_project-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: envy_project-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 26.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for envy_project-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f672e80c3573419db6b62ecfa386cb05339aa1c6b852d850d662258dea3c69d
MD5 68c307f934b1f6cc4e98022b40366f82
BLAKE2b-256 57e27041020ad25ca399c3ae228b1eff9b1d6784e8f9b29730cd09a0c5d9975b

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