зеркало из https://github.com/microsoft/AzureTRE.git
296 строки
9.9 KiB
JSON
296 строки
9.9 KiB
JSON
{
|
|
"name": "AzureTRE",
|
|
// Uncomment when debugging using Jetbrains
|
|
// "features": {
|
|
// "ghcr.io/devcontainers/features/sshd:1": {
|
|
// "version": "latest"
|
|
// }
|
|
// },
|
|
"build": {
|
|
"context": "..",
|
|
"dockerfile": "Dockerfile",
|
|
"args": {
|
|
// To ensure that the group ID for the docker group in the container
|
|
// matches the group ID on the host, add this to your .bash_profile on the host
|
|
// export DOCKER_GROUP_ID=$(getent group docker | awk -F ":" '{ print $3 }')
|
|
"DOCKER_GROUP_ID": "${localEnv:DOCKER_GROUP_ID}",
|
|
"INTERACTIVE": "true"
|
|
}
|
|
},
|
|
"runArgs": [
|
|
"--network",
|
|
"host"
|
|
],
|
|
"mounts": [
|
|
// Keep command history
|
|
"type=volume,source=tre-bashhistory,target=/home/vscode/commandhistory",
|
|
// Mounts the login details from the host machine to azcli works in the container
|
|
"type=bind,source=${env:HOME}${env:USERPROFILE}/.azure,target=/home/vscode/.azure",
|
|
// Mount docker socket for docker builds
|
|
"type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock",
|
|
// Mounts the github cli login details from the host machine to the container (~/.config/gh/hosts.yml)
|
|
"type=bind,source=${env:HOME}${env:USERPROFILE}/.config,target=/home/vscode/.config",
|
|
],
|
|
"remoteUser": "vscode",
|
|
"containerEnv": {
|
|
"DOCKER_BUILDKIT": "1"
|
|
},
|
|
"remoteEnv": {
|
|
// this is used for SuperLinter
|
|
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
|
|
},
|
|
"customizations": {
|
|
"vscode": {
|
|
// Set *default* container specific settings.json values on container create.
|
|
"settings": {
|
|
"terminal.integrated.defaultProfile.linux": "bash",
|
|
"python.pythonPath": "/usr/local/bin/python",
|
|
"python.linting.enabled": true,
|
|
"python.linting.pylintEnabled": false,
|
|
"python.linting.flake8Enabled": true,
|
|
"python.formatting.provider": "black",
|
|
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
|
|
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
|
|
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
|
|
"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
|
|
"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
|
|
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
|
|
"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
|
|
"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
|
|
"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint",
|
|
"python.testing.unittestEnabled": false,
|
|
"python.testing.pytestEnabled": true,
|
|
"python.testing.pytestArgs": [
|
|
"--ignore=e2e_tests",
|
|
"-W ignore::DeprecationWarning"
|
|
],
|
|
"python.testing.cwd": "${workspaceFolder}",
|
|
"files.associations": {
|
|
"*.terraform": "terraform"
|
|
},
|
|
"launch": {
|
|
"configurations": [
|
|
{
|
|
"name": "TRE API",
|
|
"type": "python",
|
|
"module": "uvicorn",
|
|
"request": "launch",
|
|
"args": [
|
|
"main:app",
|
|
"--reload",
|
|
"--host",
|
|
"::",
|
|
"--port",
|
|
"8000"
|
|
],
|
|
"jinja": true,
|
|
"justMyCode": false,
|
|
"console": "integratedTerminal",
|
|
"preLaunchTask": "Copy_env_file_for_api_debug",
|
|
"cwd": "${workspaceFolder}/api_app",
|
|
"envFile": "${workspaceFolder}/api_app/.env",
|
|
"env": {
|
|
"OTEL_RESOURCE_ATTRIBUTES": "service.name=api,service.instance.id=local_debug,service.version=dev"
|
|
}
|
|
},
|
|
{
|
|
"name": "E2E Extended",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"extended",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "E2E Extended AAD",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"extended_aad",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "E2E Shared Services",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"shared_services",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "E2E Performance",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"performance",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "E2E Smoke",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"smoke",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "E2E Airlock",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"module": "pytest",
|
|
"justMyCode": true,
|
|
"cwd": "${workspaceFolder}/e2e_tests/",
|
|
"preLaunchTask": "Copy_env_file_for_e2e_debug",
|
|
"args": [
|
|
"-m",
|
|
"airlock",
|
|
"--verify",
|
|
"false"
|
|
]
|
|
},
|
|
{
|
|
"name": "Resource Processor",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"program": "vmss_porter/runner.py",
|
|
"console": "integratedTerminal",
|
|
"preLaunchTask": "Install_resource_processor_dependencies",
|
|
"cwd": "${workspaceFolder}/resource_processor",
|
|
"envFile": "${workspaceFolder}/core/private.env",
|
|
"env": {
|
|
"PYTHONPATH": ".",
|
|
"OTEL_RESOURCE_ATTRIBUTES": "service.name=resource_processor,service.instance.id=local_debug,service.version=dev"
|
|
},
|
|
"justMyCode": false
|
|
},
|
|
{
|
|
"name": "Debug Python file",
|
|
"type": "python",
|
|
"request": "launch",
|
|
"program": "${file}",
|
|
"console": "integratedTerminal",
|
|
"purpose": [
|
|
"debug-test"
|
|
]
|
|
},
|
|
{
|
|
"name": "Launch Edge (localhost)",
|
|
"type": "pwa-msedge",
|
|
"request": "launch",
|
|
"url": "http://localhost:3000",
|
|
"webRoot": "${workspaceFolder}/ui/app"
|
|
},
|
|
{
|
|
"name": "Launch Chrome (localhost)",
|
|
"type": "pwa-chrome",
|
|
"request": "launch",
|
|
"url": "http://localhost:3000",
|
|
"webRoot": "${workspaceFolder}/ui/app"
|
|
}
|
|
],
|
|
"compounds": []
|
|
},
|
|
"tasks": {
|
|
"version": "2.0.0",
|
|
"tasks": [
|
|
{
|
|
"label": "Copy_env_file_for_api_debug",
|
|
"command": "./.devcontainer/scripts/consolidate_env.sh ${workspaceFolder} ${workspaceFolder}/api_app/.env",
|
|
"type": "shell"
|
|
},
|
|
{
|
|
"label": "Copy_env_file_for_e2e_debug",
|
|
"command": "./.devcontainer/scripts/consolidate_env.sh ${workspaceFolder} ${workspaceFolder}/e2e_tests/.env",
|
|
"type": "shell"
|
|
},
|
|
{
|
|
"label": "Install_resource_processor_dependencies",
|
|
"command": "pip install -r ./resource_processor/vmss_porter/requirements.txt",
|
|
"type": "shell"
|
|
},
|
|
{
|
|
"label": "Unit_tests",
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"command": "pytest",
|
|
"args": [
|
|
"--ignore=e2e_tests"
|
|
]
|
|
},
|
|
{
|
|
"label": "Smoke_tests",
|
|
"group": "test",
|
|
"command": "python",
|
|
"options": {
|
|
"cwd": "${workspaceFolder}/e2e_tests/"
|
|
},
|
|
"args": [
|
|
"-m",
|
|
"pytest",
|
|
"-m",
|
|
"smoke"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
// Add the IDs of extensions you want installed when the container is created.
|
|
"extensions": [
|
|
"ms-python.python",
|
|
"ms-python.pylance",
|
|
"hashicorp.terraform",
|
|
"github.vscode-pull-request-github",
|
|
"getporter.porter-vscode",
|
|
"davidanson.vscode-markdownlint",
|
|
"editorconfig.editorconfig",
|
|
"mikestead.dotenv",
|
|
"humao.rest-client",
|
|
"timonwong.shellcheck",
|
|
"ms-azuretools.vscode-azurefunctions"
|
|
]
|
|
}
|
|
},
|
|
"forwardPorts": [
|
|
8000
|
|
],
|
|
// Run commands after the container is created.
|
|
"postCreateCommand": "./.devcontainer/scripts/post-create.sh"
|
|
}
|