This commit introduces a boilerplate inspired by https://github.com/numerique-gouv/impress. The code has been cleaned to remove unnecessary Impress logic and dependencies. Changes made: - Removed Minio, WebRTC, and create bucket from the stack. - Removed the Next.js frontend (it will be replaced by Vite). - Cleaned up impress-specific backend logics. The whole stack remains functional: - All tests pass. - Linter checks pass. - Agent Connexion sources are already set-up. Why clear out the code? To adhere to the KISS principle, we aim to maintain a minimalist codebase. Cloning Impress allowed us to quickly inherit its code quality tools and deployment configurations for staging, pre-production, and production environments. What’s broken? - The tsclient is not functional anymore. - Some make commands need to be fixed. - Helm sources are outdated. - Naming across the project sources are inconsistent (impress, visio, etc.) - CI is not configured properly. This list might be incomplete. Let's grind it.
69 lines
2.1 KiB
Plaintext
69 lines
2.1 KiB
Plaintext
load('ext://uibutton', 'cmd_button', 'bool_input', 'location')
|
|
load('ext://namespace', 'namespace_create', 'namespace_inject')
|
|
namespace_create('impress')
|
|
|
|
docker_build(
|
|
'localhost:5001/impress-backend:latest',
|
|
context='..',
|
|
dockerfile='../Dockerfile',
|
|
only=['./src/backend', './src/mail', './docker'],
|
|
target = 'backend-production',
|
|
live_update=[
|
|
sync('../src/backend', '/app'),
|
|
run(
|
|
'pip install -r /app/requirements.txt',
|
|
trigger=['./api/requirements.txt']
|
|
)
|
|
]
|
|
)
|
|
|
|
docker_build(
|
|
'localhost:5001/impress-y-webrtc-signaling:latest',
|
|
context='..',
|
|
dockerfile='../src/frontend/Dockerfile',
|
|
only=['./src/frontend/', './docker/', './dockerignore'],
|
|
target = 'y-webrtc-signaling',
|
|
live_update=[
|
|
sync('../src/frontend/apps/y-webrtc-signaling/src', '/home/frontend/apps/y-webrtc-signaling/src'),
|
|
]
|
|
)
|
|
|
|
docker_build(
|
|
'localhost:5001/impress-frontend:latest',
|
|
context='..',
|
|
dockerfile='../src/frontend/Dockerfile',
|
|
only=['./src/frontend', './docker', './dockerignore'],
|
|
target = 'impress',
|
|
live_update=[
|
|
sync('../src/frontend', '/home/frontend'),
|
|
]
|
|
)
|
|
|
|
k8s_yaml(local('cd ../src/helm && helmfile -n impress -e dev template .'))
|
|
|
|
migration = '''
|
|
set -eu
|
|
# get k8s pod name from tilt resource name
|
|
POD_NAME="$(tilt get kubernetesdiscovery impress-backend -ojsonpath='{.status.pods[0].name}')"
|
|
kubectl -n impress exec "$POD_NAME" -- python manage.py makemigrations
|
|
'''
|
|
cmd_button('Make migration',
|
|
argv=['sh', '-c', migration],
|
|
resource='impress-backend',
|
|
icon_name='developer_board',
|
|
text='Run makemigration',
|
|
)
|
|
|
|
pod_migrate = '''
|
|
set -eu
|
|
# get k8s pod name from tilt resource name
|
|
POD_NAME="$(tilt get kubernetesdiscovery impress-backend -ojsonpath='{.status.pods[0].name}')"
|
|
kubectl -n impress exec "$POD_NAME" -- python manage.py migrate --no-input
|
|
'''
|
|
cmd_button('Migrate db',
|
|
argv=['sh', '-c', pod_migrate],
|
|
resource='impress-backend',
|
|
icon_name='developer_board',
|
|
text='Run database migration',
|
|
)
|