barretthousen/Tiltfile

183 lines
4.9 KiB
Plaintext

print("""
-----------------------------------------------------------------
✨ Starting up Barretthousen stack
-----------------------------------------------------------------
""".strip())
load('ext://helm_resource', 'helm_resource', 'helm_repo')
load('ext://deployment', 'deployment_create')
load('ext://restart_process', 'docker_build_with_restart')
helm_repo('bitnami', 'https://charts.bitnami.com/bitnami', labels=["9-repos"])
helm_repo('traefik', 'https://traefik.github.io/charts', labels=["9-repos"])
helm_repo('grafana', 'https://grafana.github.io/helm-charts', labels=["9-repos"])
helm_resource(
'ingress',
'traefik/traefik',
namespace='barretthousen-local',
flags=[
'--set', 'logs.access.enabled=true'
],
port_forwards=[
port_forward(8000, 8000, name='Barretthousen'),
port_forward(9000, 9000, name='Traefik', link_path='/dashboard/#/')
],
resource_deps=['traefik'],
labels=["1-ingress"]
)
k8s_resource(
workload='ingress',
labels='1-ingress',
links=[
link(url='http://admin.localhost:8000', name='Admin Panel'),
]
)
helm_resource(
'postgres',
'bitnami/postgresql',
namespace='barretthousen-local',
flags=[
'--set', 'fullnameOverride=bh-db',
'--set', 'auth.enablePostgresUser=true',
'--set', 'auth.postgresPassword=bh-admin',
'--set', 'auth.database=bh',
],
port_forwards=[
port_forward(5432, 5432, name='BH DB')],
resource_deps=['bitnami'],
labels=["9-data"])
k8s_yaml(
kustomize("./env/local")
)
def bh_backend_service(service="", port_forwards=[], migrateDB=False, devMode=True, labels=['2-services'], deps=['postgres']):
local_resource(
'{}-go-compile'.format(service),
'CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -gcflags "all=-N -l" -o .bin/{}-debug ./src/{}'.format(service, service),
deps=['./src/{}'.format(service), './src/lib'],
resource_deps=deps,
labels=['3-compilation']
)
entry_cmd = [
'/go/bin/dlv',
'--headless',
'--listen=0.0.0.0:2345',
'--api-version=2',
'--log',
'--accept-multiclient',
'--log-output=rpc',
'exec',
'/opt/{}-debug'.format(service),
'--continue'
]
if migrateDB:
entry_cmd += ['--', '-migrate']
docker_build_with_restart(
ref="barretthousen/service-{}".format(service),
dockerfile="./src/Dockerfile.dev-backend",
context=".",
entrypoint=entry_cmd,
build_args={
"service": service
},
trigger = [
'./.bin/{}-debug'.format(service)
],
only = [
'./.bin/{}-debug'.format(service),
'./src/runner',
'./src/catalog',
'./src/proxy-admin',
'./src/proxy-client',
'./src/lib'
],
live_update=[
sync('./.bin', '/opt'),
sync('./src', '/go/src')
]
)
k8s_resource(
workload='{}-local'.format(service),
port_forwards=port_forwards,
labels=labels,
resource_deps=deps,
)
bh_backend_service(service="runner", migrateDB=True, port_forwards=[
port_forward(2345, name='Delve port')
])
bh_backend_service(service="catalog", migrateDB=True, port_forwards=[
port_forward(2346, 2345, name='Delve port')
])
bh_backend_service(service="proxy-admin", port_forwards=[
port_forward(8082, 80, name="HTTP API @ localhost:8082")
], deps=['ingress'])
bh_backend_service(service="proxy-client", port_forwards=[
port_forward(8081, 80, name="HTTP API @ localhost:8081")
], deps=['ingress'])
docker_build(
ref='barretthousen/service-web-client',
context='./src/web-client',
dockerfile='./src/web-client/Dockerfile.frontend',
target='development'
)
k8s_resource(
workload='web-client-local',
port_forwards=['8080:80'],
labels=['2-services'],
resource_deps=['ingress']
)
k8s_resource(
workload='runner-sync-local',
labels='2-services'
)
# local_resource(
# 'web-client',
# dir='./src/web-client',
# cmd='npm i',
# serve_dir='./src/web-client',
# serve_cmd='npm run dev',
# ignore=['./src/web-client/src'],
# deps=[
# './src/web-client/package.json',
# './src/web-client/svelte.config.js',
# './src/web-client/vite.config.ts'
# ],
# readiness_probe=probe(10, 2, 10, 1, 3, http_get=http_get_action(8080, 'localhost', 'http')),
# links=[
# link(url='http://localhost:8080', name='Web Client')
# ],
# labels=['2-services']
# )
# helm_resource(
# 'loki-stack',
# 'grafana/loki-stack',
# resource_deps=['grafana'],
# flags=[
# '--set', 'fluent-bit.enabled=false',
# '--set', 'promtail.enabled=false',
# '--set', 'loki.enabled=false',
# ],
# port_forwards=["3000:80"],
# labels=["9-monitoring"])