2024-01-09 15:30:36 +01:00
|
|
|
load('ext://uibutton', 'cmd_button', 'bool_input', 'location')
|
|
|
|
|
load('ext://namespace', 'namespace_create', 'namespace_inject')
|
2024-07-02 19:36:09 +02:00
|
|
|
namespace_create('meet')
|
2025-02-22 16:10:10 +01:00
|
|
|
|
2025-06-26 19:17:25 +02:00
|
|
|
DEV_ENV = os.getenv('DEV_ENV', 'dev')
|
|
|
|
|
|
|
|
|
|
if DEV_ENV == 'dev-dinum':
|
|
|
|
|
update_settings(suppress_unused_image_warnings=["localhost:5001/meet-frontend-generic:latest"])
|
|
|
|
|
|
|
|
|
|
if DEV_ENV == 'dev-keycloak':
|
|
|
|
|
update_settings(suppress_unused_image_warnings=["localhost:5001/meet-frontend-dinum:latest"])
|
|
|
|
|
|
|
|
|
|
|
2025-02-22 16:10:10 +01:00
|
|
|
def clean_old_images(image_name):
|
|
|
|
|
local('docker images -q %s | tail -n +2 | xargs -r docker rmi' % image_name)
|
|
|
|
|
|
2024-01-09 15:30:36 +01:00
|
|
|
docker_build(
|
2024-07-01 18:32:29 +02:00
|
|
|
'localhost:5001/meet-backend:latest',
|
2024-01-09 15:30:36 +01:00
|
|
|
context='..',
|
|
|
|
|
dockerfile='../Dockerfile',
|
2026-02-19 15:51:14 +01:00
|
|
|
build_args={'DOCKER_USER': '1001:127'},
|
2024-01-09 15:30:36 +01:00
|
|
|
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']
|
|
|
|
|
)
|
|
|
|
|
]
|
|
|
|
|
)
|
2025-02-22 16:10:10 +01:00
|
|
|
clean_old_images('localhost:5001/meet-backend')
|
2024-01-09 15:30:36 +01:00
|
|
|
|
|
|
|
|
docker_build(
|
2025-06-26 19:17:25 +02:00
|
|
|
'localhost:5001/meet-frontend-dinum:latest',
|
|
|
|
|
context='..',
|
2026-02-19 15:51:14 +01:00
|
|
|
build_args={'DOCKER_USER': '1001:127'},
|
2025-06-26 19:17:25 +02:00
|
|
|
dockerfile='../docker/dinum-frontend/Dockerfile',
|
|
|
|
|
only=['./src/frontend', './docker', './.dockerignore'],
|
|
|
|
|
target = 'frontend-production',
|
|
|
|
|
live_update=[
|
|
|
|
|
sync('../src/frontend', '/home/frontend'),
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
clean_old_images('localhost:5001/meet-frontend-dinum')
|
|
|
|
|
|
|
|
|
|
docker_build(
|
|
|
|
|
'localhost:5001/meet-frontend-generic:latest',
|
2024-01-09 15:30:36 +01:00
|
|
|
context='..',
|
|
|
|
|
dockerfile='../src/frontend/Dockerfile',
|
2024-07-02 19:36:09 +02:00
|
|
|
only=['./src/frontend', './docker', './.dockerignore'],
|
|
|
|
|
target = 'meet-dev',
|
2024-01-09 15:30:36 +01:00
|
|
|
live_update=[
|
|
|
|
|
sync('../src/frontend', '/home/frontend'),
|
|
|
|
|
]
|
|
|
|
|
)
|
2025-06-26 19:17:25 +02:00
|
|
|
clean_old_images('localhost:5001/meet-frontend-generic')
|
2024-01-09 15:30:36 +01:00
|
|
|
|
2024-11-25 16:01:09 +01:00
|
|
|
docker_build(
|
|
|
|
|
'localhost:5001/meet-summary:latest',
|
|
|
|
|
context='../src/summary',
|
2026-02-19 15:51:14 +01:00
|
|
|
build_args={'DOCKER_USER': '1001:127'},
|
2024-11-25 16:01:09 +01:00
|
|
|
dockerfile='../src/summary/Dockerfile',
|
2025-08-23 01:09:00 +02:00
|
|
|
only=['.'],
|
2024-11-25 16:01:09 +01:00
|
|
|
target = 'production',
|
|
|
|
|
live_update=[
|
2025-08-23 01:09:00 +02:00
|
|
|
sync('../src/summary', '/app'),
|
2024-11-25 16:01:09 +01:00
|
|
|
]
|
|
|
|
|
)
|
2025-02-22 16:10:10 +01:00
|
|
|
clean_old_images('localhost:5001/meet-summary')
|
2024-11-25 16:01:09 +01:00
|
|
|
|
2025-06-20 18:17:28 +02:00
|
|
|
docker_build(
|
|
|
|
|
'localhost:5001/meet-agents:latest',
|
|
|
|
|
context='../src/agents',
|
2026-02-19 15:51:14 +01:00
|
|
|
build_args={'DOCKER_USER': '1001:127'},
|
2025-06-20 18:17:28 +02:00
|
|
|
dockerfile='../src/agents/Dockerfile',
|
2026-02-19 15:26:08 +01:00
|
|
|
only=['.'],
|
2025-06-20 18:17:28 +02:00
|
|
|
target = 'production',
|
|
|
|
|
live_update=[
|
|
|
|
|
sync('../src/agents', '/app'),
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
clean_old_images('localhost:5001/meet-agents')
|
|
|
|
|
|
2025-03-06 11:23:02 +01:00
|
|
|
# Copy the mkcert root CA certificate to our Docker build context
|
|
|
|
|
# This is necessary because we need to inject the certificate into our LiveKit container
|
|
|
|
|
local_resource(
|
|
|
|
|
'copy-root-ca',
|
2025-05-15 17:06:25 +02:00
|
|
|
cmd='cp -f "$(mkcert -CAROOT)/rootCA.pem" ../docker/livekit/rootCA.pem',
|
2025-03-06 11:23:02 +01:00
|
|
|
deps=[], # No dependencies needed
|
|
|
|
|
)
|
|
|
|
|
# Build a custom LiveKit Docker image that includes our root CA certificate
|
|
|
|
|
# This allows LiveKit to trust our local development certificates
|
|
|
|
|
docker_build(
|
|
|
|
|
'localhost:5001/meet-livekit:latest',
|
|
|
|
|
context='../docker/livekit',
|
|
|
|
|
dockerfile='./../docker/livekit/Dockerfile',
|
|
|
|
|
only=['.'],
|
|
|
|
|
)
|
|
|
|
|
clean_old_images('localhost:5001/meet-livekit')
|
|
|
|
|
|
2024-12-06 12:18:51 +01:00
|
|
|
k8s_yaml(local('cd ../src/helm && helmfile -n meet -e ${DEV_ENV:-dev} template .'))
|
2024-01-09 15:30:36 +01:00
|
|
|
|
2025-08-01 18:04:56 +02:00
|
|
|
k8s_resource('minio-bucket', resource_deps=['minio'])
|
|
|
|
|
k8s_resource('meet-backend', resource_deps=['postgresql', 'minio', 'redis', 'livekit-livekit-server'])
|
|
|
|
|
k8s_resource('meet-backend-migrate', resource_deps=['meet-backend'])
|
|
|
|
|
k8s_resource('livekit-livekit-server-test-connection', resource_deps=['livekit-livekit-server'])
|
|
|
|
|
k8s_resource('keycloak', resource_deps=['kc-postgresql'])
|
|
|
|
|
k8s_resource('meet-backend-createsuperuser', resource_deps=['meet-backend-migrate'])
|
|
|
|
|
|
2024-01-09 15:30:36 +01:00
|
|
|
migration = '''
|
|
|
|
|
set -eu
|
|
|
|
|
# get k8s pod name from tilt resource name
|
2024-07-01 18:32:29 +02:00
|
|
|
POD_NAME="$(tilt get kubernetesdiscovery meet-backend -ojsonpath='{.status.pods[0].name}')"
|
2024-07-02 19:36:09 +02:00
|
|
|
kubectl -n meet exec "$POD_NAME" -- python manage.py makemigrations
|
2024-01-09 15:30:36 +01:00
|
|
|
'''
|
|
|
|
|
cmd_button('Make migration',
|
|
|
|
|
argv=['sh', '-c', migration],
|
2024-07-01 18:32:29 +02:00
|
|
|
resource='meet-backend',
|
2024-01-09 15:30:36 +01:00
|
|
|
icon_name='developer_board',
|
|
|
|
|
text='Run makemigration',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
pod_migrate = '''
|
|
|
|
|
set -eu
|
|
|
|
|
# get k8s pod name from tilt resource name
|
2024-07-01 18:32:29 +02:00
|
|
|
POD_NAME="$(tilt get kubernetesdiscovery meet-backend -ojsonpath='{.status.pods[0].name}')"
|
2024-07-02 19:36:09 +02:00
|
|
|
kubectl -n meet exec "$POD_NAME" -- python manage.py migrate --no-input
|
2024-01-09 15:30:36 +01:00
|
|
|
'''
|
|
|
|
|
cmd_button('Migrate db',
|
|
|
|
|
argv=['sh', '-c', pod_migrate],
|
2024-07-01 18:32:29 +02:00
|
|
|
resource='meet-backend',
|
2024-01-09 15:30:36 +01:00
|
|
|
icon_name='developer_board',
|
|
|
|
|
text='Run database migration',
|
|
|
|
|
)
|