Last active
May 15, 2020 20:03
-
-
Save jpbarto/94fde57ee264c82dddec905f01818bb1 to your computer and use it in GitHub Desktop.
Lifecycle script for SageMaker notebook startup which installs Theia-IDE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
sudo -u ec2-user -i <<'EOP' | |
## INSTALL THEIA IDE FROM SOURCE | |
EC2_HOME=/home/ec2-user | |
mkdir ${EC2_HOME}/theia && cd ${EC2_HOME}/theia | |
### begin by installing NVM, NodeJS v10, and Yarn | |
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash | |
source ${EC2_HOME}/.nvm/nvm.sh | |
nvm install 10 | |
nvm use 10 | |
npm install -g yarn | |
### now compile Theia-IDE from source, retrieving the configuration package.json from GitHub | |
export NODE_OPTIONS=--max_old_space_size=4096 | |
curl https://gist.githubusercontent.com/jpbarto/94fde57ee264c82dddec905f01818bb1/raw/3994ba14d994d1f887bc327920eeee2802f5891b/package.json -o ${EC2_HOME}/theia/package.json | |
yarn & | |
### Configure Theia defaults | |
THEIA_PATH=$PATH | |
mkdir ${EC2_HOME}/.theia | |
mkdir -p ${EC2_HOME}/SageMaker/.theia | |
curl https://gist.githubusercontent.com/jpbarto/94fde57ee264c82dddec905f01818bb1/raw/87e015f83070dc274fa6c890c118428ccade50f6/launch.json -o ${EC2_HOME}/SageMaker/.theia/launch.json | |
echo '{"workbench.iconTheme": "theia-file-icons","terminal.integrated.inheritEnv": true}' > ${EC2_HOME}/.theia/settings.json | |
## CONFIGURE JUPYTER PROXY TO MAP TO THE THEIA IDE | |
JUPYTER_ENV=/home/ec2-user/anaconda3/envs/JupyterSystemEnv | |
source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv | |
cat >>${JUPYTER_ENV}/etc/jupyter/jupyter_notebook_config.py <<EOC | |
c.ServerProxy.servers = { | |
'theia': { | |
'command': ['yarn', '--cwd', '/home/ec2-user/theia', 'start', '/home/ec2-user/SageMaker', '--port', '{port}'], | |
'environment': {'PATH': '${THEIA_PATH}'}, | |
'absolute_url': False, | |
'timeout': 30 | |
} | |
} | |
EOC | |
pip install jupyter-server-proxy pylint autopep8 | |
jupyter serverextension enable --py --sys-prefix jupyter_server_proxy | |
source /home/ec2-user/anaconda3/bin/deactivate | |
EOP | |
## RESTART THE JUPYTER SERVER | |
initctl restart jupyter-server --no-wait |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"version": "0.2.0", | |
"configurations": [ | |
{ | |
"name": "Python: Current File", | |
"type": "python", | |
"request": "launch", | |
"program": "${file}", | |
"console": "internalConsole" | |
} | |
], | |
"configurationAttributes": { | |
"launch": { | |
"properties": { | |
"module": { | |
"type": "string", | |
"description": "Name of the module to be debugged.", | |
"default": "" | |
}, | |
"program": { | |
"type": "string", | |
"description": "Absolute path to the program.", | |
"default": "${file}" | |
}, | |
"pythonPath": { | |
"type": "string", | |
"description": "Path (fully qualified) to python executable. Defaults to the value in settings.json", | |
"default": "${config:python.pythonPath}" | |
}, | |
"args": { | |
"type": "array", | |
"description": "Command line arguments passed to the program", | |
"default": [], | |
"items": { | |
"type": "string" | |
} | |
}, | |
"stopOnEntry": { | |
"type": "boolean", | |
"description": "Automatically stop after launch.", | |
"default": false | |
}, | |
"showReturnValue": { | |
"type": "boolean", | |
"description": "Show return value of functions when stepping.", | |
"default": false | |
}, | |
"console": { | |
"enum": [ | |
"none", | |
"integratedTerminal", | |
"externalTerminal" | |
], | |
"description": "Where to launch the debug target: internal console, integrated terminal, or external terminal.", | |
"default": "integratedTerminal" | |
}, | |
"cwd": { | |
"type": "string", | |
"description": "Absolute path to the working directory of the program being debugged. Default is the root directory of the file (leave empty).", | |
"default": "${workspaceFolder}" | |
}, | |
"env": { | |
"type": "object", | |
"description": "Environment variables defined as a key value pair. Property ends up being the Environment Variable and the value of the property ends up being the value of the Env Variable.", | |
"default": {} | |
}, | |
"envFile": { | |
"type": "string", | |
"description": "Absolute path to a file containing environment variable definitions.", | |
"default": "${workspaceFolder}/.env" | |
}, | |
"port": { | |
"type": "number", | |
"description": "Debug port (default is 0, resulting in the use of a dynamic port).", | |
"default": 0 | |
}, | |
"host": { | |
"type": "string", | |
"description": "IP address of the of the local debug server (default is localhost).", | |
"default": "localhost" | |
}, | |
"logToFile": { | |
"type": "boolean", | |
"description": "Enable logging of debugger events to a log file.", | |
"default": false | |
}, | |
"redirectOutput": { | |
"type": "boolean", | |
"description": "Redirect output.", | |
"default": true | |
}, | |
"debugStdLib": { | |
"type": "boolean", | |
"description": "Debug standard library code.", | |
"default": false | |
}, | |
"gevent": { | |
"type": "boolean", | |
"description": "Enable debugging of gevent monkey-patched code.", | |
"default": false | |
}, | |
"django": { | |
"type": "boolean", | |
"description": "Django debugging.", | |
"default": false | |
}, | |
"jinja": { | |
"enum": [ | |
true, | |
false, | |
null | |
], | |
"description": "Jinja template debugging (e.g. Flask).", | |
"default": null | |
}, | |
"sudo": { | |
"type": "boolean", | |
"description": "Running debug program under elevated permissions (on Unix).", | |
"default": false | |
}, | |
"pyramid": { | |
"type": "boolean", | |
"description": "Whether debugging Pyramid applications", | |
"default": false | |
}, | |
"subProcess": { | |
"type": "boolean", | |
"description": "Whether to enable Sub Process debugging", | |
"default": false | |
} | |
} | |
}, | |
"attach": { | |
"required": [ | |
"port" | |
], | |
"properties": { | |
"port": { | |
"type": "number", | |
"description": "Debug port to attach", | |
"default": 0 | |
}, | |
"host": { | |
"type": "string", | |
"description": "IP Address of the of remote server (default is localhost or use 127.0.0.1).", | |
"default": "localhost" | |
}, | |
"pathMappings": { | |
"type": "array", | |
"label": "Path mappings.", | |
"items": { | |
"type": "object", | |
"label": "Path mapping", | |
"required": [ | |
"localRoot", | |
"remoteRoot" | |
], | |
"properties": { | |
"localRoot": { | |
"type": "string", | |
"label": "Local source root.", | |
"default": "${workspaceFolder}" | |
}, | |
"remoteRoot": { | |
"type": "string", | |
"label": "Remote source root.", | |
"default": "" | |
} | |
} | |
}, | |
"default": [] | |
}, | |
"logToFile": { | |
"type": "boolean", | |
"description": "Enable logging of debugger events to a log file.", | |
"default": false | |
}, | |
"redirectOutput": { | |
"type": "boolean", | |
"description": "Redirect output.", | |
"default": true | |
}, | |
"debugStdLib": { | |
"type": "boolean", | |
"description": "Debug standard library code.", | |
"default": false | |
}, | |
"django": { | |
"type": "boolean", | |
"description": "Django debugging.", | |
"default": false | |
}, | |
"jinja": { | |
"enum": [ | |
true, | |
false, | |
null | |
], | |
"description": "Jinja template debugging (e.g. Flask).", | |
"default": null | |
}, | |
"subProcess": { | |
"type": "boolean", | |
"description": "Whether to enable Sub Process debugging", | |
"default": false | |
} | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"private": true, | |
"theia": { | |
"frontend": { | |
"config": { | |
"applicationName": "Theia IDE", | |
"preferences": { | |
"files.enableTrash": false | |
} | |
} | |
} | |
}, | |
"dependencies": { | |
"@theia/callhierarchy": "1.1.0", | |
"@theia/debug": "1.1.0", | |
"@theia/editor-preview": "1.1.0", | |
"@theia/file-search": "1.1.0", | |
"@theia/getting-started": "1.1.0", | |
"@theia/git": "1.1.0", | |
"@theia/json": "1.1.0", | |
"@theia/markers": "1.1.0", | |
"@theia/messages": "1.1.0", | |
"@theia/mini-browser": "1.1.0", | |
"@theia/monaco": "1.1.0", | |
"@theia/navigator": "1.1.0", | |
"@theia/outline-view": "1.1.0", | |
"@theia/plugin-ext-vscode": "1.1.0", | |
"@theia/preferences": "1.1.0", | |
"@theia/preview": "1.1.0", | |
"@theia/search-in-workspace": "1.1.0", | |
"@theia/terminal": "1.1.0", | |
"@theia/vsx-registry": "1.1.0", | |
"@theia/debug": "1.1.0" | |
}, | |
"resolutions": { | |
"vscode-json-languageserver": "1.2.2", | |
"vscode-languageserver-protocol": "3.15.0-next.9", | |
"vscode-languageserver-types": "3.15.0-next.5", | |
"**/vscode-json-languageserver/**/vscode-languageserver": "6.0.0-next.1", | |
"**/**/moment": "2.24.0" | |
}, | |
"devDependencies": { | |
"@theia/cli": "latest" | |
}, | |
"scripts": { | |
"prepare": "yarn run clean && yarn build && yarn run download:plugins", | |
"clean": "theia clean", | |
"build": "theia build", | |
"start": "theia start --plugins=local-dir:plugins", | |
"download:plugins": "theia download:plugins", | |
"postinstall": "download-debug-adapters" | |
}, | |
"theiaPluginsDir": "plugins", | |
"theiaPlugins": { | |
"vscode-builtin-bat": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/bat-1.39.1-prel.vsix", | |
"vscode-builtin-clojure": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/clojure-1.39.1-prel.vsix", | |
"vscode-builtin-coffeescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/coffeescript-1.39.1-prel.vsix", | |
"vscode-builtin-configuration-editing": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/configuration-editing-1.39.1-prel.vsix", | |
"vscode-builtin-cpp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/cpp-1.39.1-prel.vsix", | |
"vscode-builtin-css": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/css-1.39.1-prel.vsix", | |
"vscode-builtin-debug-auto-launch": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/debug-auto-launch-1.39.1-prel.vsix", | |
"vscode-builtin-docker": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/docker-1.39.1-prel.vsix", | |
"vscode-builtin-emmet": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/emmet-1.39.1-prel.vsix", | |
"vscode-builtin-go": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/go-1.39.1-prel.vsix", | |
"vscode-builtin-hlsl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/hlsl-1.39.1-prel.vsix", | |
"vscode-builtin-html": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/html-1.39.1-prel.vsix", | |
"vscode-builtin-ini": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ini-1.39.1-prel.vsix", | |
"vscode-builtin-jake": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/jake-1.39.1-prel.vsix", | |
"vscode-builtin-java": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/java-1.39.1-prel.vsix", | |
"vscode-builtin-javascript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/javascript-1.39.1-prel.vsix", | |
"vscode-builtin-json": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/json-1.39.1-prel.vsix", | |
"vscode-builtin-less": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/less-1.39.1-prel.vsix", | |
"vscode-builtin-log": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/log-1.39.1-prel.vsix", | |
"vscode-builtin-make": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/make-1.39.1-prel.vsix", | |
"vscode-builtin-markdown": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/markdown-1.39.1-prel.vsix", | |
"vscode-builtin-merge-conflicts": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/merge-conflict-1.39.1-prel.vsix", | |
"vscode-builtin-npm": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/npm-1.39.1-prel.vsix", | |
"vscode-builtin-node-debug": "https://github.com/theia-ide/vscode-node-debug/releases/download/v1.35.3/node-debug-1.35.3.vsix", | |
"vscode-builtin-node-debug2": "https://github.com/theia-ide/vscode-node-debug2/releases/download/v1.33.0/node-debug2-1.33.0.vsix", | |
"vscode-builtin-pug": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/pug-1.39.1-prel.vsix", | |
"vscode-builtin-python": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/python-1.39.1-prel.vsix", | |
"vscode-builtin-r": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/r-1.39.1-prel.vsix", | |
"vscode-builtin-razor": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/razor-1.39.1-prel.vsix", | |
"vscode-builtin-scss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/scss-1.39.1-prel.vsix", | |
"vscode-builtin-shaderlab": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shaderlab-1.39.1-prel.vsix", | |
"vscode-builtin-shellscript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shellscript-1.39.1-prel.vsix", | |
"vscode-builtin-sql": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/sql-1.39.1-prel.vsix", | |
"vscode-builtin-theme-abyss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-abyss-1.39.1-prel.vsix", | |
"vscode-builtin-theme-defaults": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-defaults-1.39.1-prel.vsix", | |
"vscode-builtin-theme-kimbie-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-kimbie-dark-1.39.1-prel.vsix", | |
"vscode-builtin-theme-monokai": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-1.39.1-prel.vsix", | |
"vscode-builtin-theme-dimmed": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-dimmed-1.39.1-prel.vsix", | |
"vscode-builtin-theme-quietlight": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-quietlight-1.39.1-prel.vsix", | |
"vscode-builtin-theme-red": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-red-1.39.1-prel.vsix", | |
"vscode-builtin-theme-solarized-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-solarized-dark-1.39.1-prel.vsix", | |
"vscode-builtin-theme-tomorrow-night-blue": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-tomorrow-night-blue-1.39.1-prel.vsix", | |
"vscode-builtin-typescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-1.39.1-prel.vsix", | |
"vscode-builtin-typescript-language-features": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-language-features-1.39.1-prel.vsix", | |
"vscode-builtin-vb": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vb-1.39.1-prel.vsix", | |
"vscode-builtin-icon-theme-seti": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vscode-theme-seti-1.39.1-prel.vsix", | |
"vscode-builtin-xml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/xml-1.39.1-prel.vsix", | |
"vscode-builtin-yaml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/yaml-1.39.1-prel.vsix", | |
"vscode-editorconfig": "https://github.com/theia-ide/editorconfig-vscode/releases/download/v0.14.4/EditorConfig-0.14.4.vsix", | |
"vscode-python": "https://github.com/microsoft/vscode-python/releases/download/2020.1.58038/ms-python-release.vsix" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment