Developer Onboarding

Pre-Requisites

Versions

Replace the variables in the code snippets below with the following values:

  • PYTHON_VERSION: 3.9.18

  • NODEJS_VERSION: 16.20.2

  • CDK_VERSION: 2.115.0

Prepare environment

Set Environment Variables for Versions

PYTHON_VERSION=<see above>
NODEJS_VERSION=<see above>
CDK_VERSION=<see above>

Install pyenv and nvm

Using Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew install pyenv
brew install nvm

Python <PYTHON_VERSION>

pyenv install --skip-existing $PYTHON_VERSION

NodeJS <NODEJS_VERSION>

nvm install $NODEJS_VERSION
nvm use $NODEJS_VERSION

AWS CDK <CDK_VERSION>

Note: Do NOT install CDK globally using npm -g or yarn global add

Follow the instructions below:

mkdir -p ~/.idea/lib/idea-cdk && pushd ~/.idea/lib/idea-cdk
npm init --force --yes
npm install aws-cdk@$CDK_VERSION --save
popd

If you want to upgrade CDK version for your existing IDEA dev environment, run:

invoke devtool.upgrade-cdk

Docker Desktop (Optional)

Follow instructions on the below link to install Docker Desktop. (Required if you are working with creating Docker Images)

https://docs.docker.com/desktop/mac/install/

Clone Git Repo

All PRs will be accepted only against the main branch.

git clone https://github.com/cfs-energy/idea.git
cd idea
// make your changes

Virtual Environment

Activate your python virtual environment via:

PYENV_VERSION=$PYTHON_VERSION python -m venv venv
source venv/bin/activate

If your PYENV_VERSION command is not working for any reason, you can create venv using below command:

$HOME/.pyenv/versions/$PYTHON_VERSION/bin/python3 -m venv venv

Install Dev Requirements

pip install -r requirements/dev.txt
Note for MacOS users

BigSur Note: cryptography and orjson library requirements fail to install on MacOS BigSur.

To fix cryptography, follow the instructions mentioned here: https://stackoverflow.com/questions/64919326/pip-error-installing-cryptography-on-big-sur

env LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install cryptography==36.0.1

To fix orjson, run:

brew install rust
# Upgrade your pip
python3 -m pip install --upgrade pip

Verify Dev Setup

Run below command to check if development environment is working as expected, run:

invoke -l

Running this command should print output like below:

Available tasks:
admin.main (admin)                   call administrator app main
build.administrator                  build administrator
build.all (build)                    build all
build.cluster-manager                build cluster manager
build.data-model                     build data-model
build.dcv-connection-gateway         build dcv connection gateway
build.scheduler                      build scheduler
build.sdk                            build sdk
build.virtual-desktop-controller     build virtual desktop controller
clean.administrator                  clean administrator
clean.all (clean)                    clean all components
clean.cluster-manager                clean cluster manager
clean.data-model                     clean data-model
clean.dcv-connection-gateway         clean dcv connection gateway
clean.scheduler                      clean scheduler
clean.sdk                            clean sdk
clean.virtual-desktop-controller     clean virtual desktop controller
devtool.build                        wrapper utility for invoke clean.<module> build.<module> package.<module>
devtool.configure                    configure devtool
devtool.ssh                          ssh into the workstation
devtool.sync                         rsync local sources with remote development server
devtool.upload-packages              upload packages
docker.build                         build administrator docker image
docker.prepare-artifacts             copy administrator docker image artifacts to deployment dir
docker.print-commands                print docker push commands for ECR
package.administrator                package administrator
package.all (package)                package all components
package.cluster-manager              package cluster manager
package.dcv-connection-gateway       package dcv connection gateway
package.scheduler                    package scheduler
package.virtual-desktop-controller   package virtual desktop controller
release.prepare-opensource-package
release.update-version
req.install                          Install python requirements
req.update                           Update python requirements using pip-compile.
scheduler.cli (scheduler)            call scheduler cli
tests.run-integration-tests          Run Integration Tests
tests.run-unit-tests                 Run Unit Tests
web-portal.serve                     serve web-portal frontend app in web-browser
web-portal.typings                   convert idea python models to typescript







Clean, Build and Package
invoke clean build package
Run idea-admin.sh in Developer Mode
The IDEA_DEV_MODE environment variable is used to indicate if idea-admin.sh should use the Docker Image or Run from sources.

If IDEA_DEV_MODE=true, idea-admin.sh will execute administrator app directly using sources.
If IDEA_DEV_MODE=false (default), idea-admin.sh will attempt to download the docker image for the latest release version and execute administrator app using Docker Container.

Export IDEA_DEV_MODE=true on your terminal, before executing idea-admin.sh on from project root.
# Enable Dev Modeexport IDEA_DEV_MODE=true
You will need to run export IDEA_DEV_MODE=true, each time you open a new Terminal session.
Verify if Developer Mode is enabled
To verify, if Developer Mode is enabled, run below command. This should print (Developer Mode) at the end of the banner.
| ./idea-admin.sh about'####:'########::'########::::'###::::. ##:: ##.... ##: ##.....::::'## ##:::: ##:: ##:::: ##: ######:::'##:::. ##:: ##:: ##:::: ##: ##...:::: #########:'####: ########:: ########: ##:::: ##:Integrated Digital Engineering on AWSVersion 3.0.0-beta.1(Developer Mode)

Last updated