faster tilt builds

pull/3/head
Adam Veldhousen 2023-05-11 19:18:12 -05:00
parent 502c96b569
commit b637b9ed84
Signed by: adam
GPG Key ID: 6DB29003C6DD1E4B
6 changed files with 70 additions and 48 deletions

4
.gitignore vendored
View File

@ -1,7 +1,11 @@
.kubeconfig
.vscode
./src/.idea
# build output
.bin
# auto generated files
*.pb.go
*.pb.gw.go

View File

@ -65,5 +65,9 @@ Monolithic postgres datbabase tying it all together
Install `asdf` and run `hack/asdf_plugin_setup`
```sh
make setup
make setup # install asdf stuff and build tooling
make gen # generate protobufs and sql boilerplate
make dev # spin up a k8s cluster, build and deploy servicces w/ hot reloading
```

View File

@ -6,7 +6,7 @@ print("""
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"])
@ -17,7 +17,10 @@ helm_resource(
'ingress',
'traefik/traefik',
resource_deps=['traefik'],
port_forwards=['8000:8000', '8443:8443', '9000:9000'],
port_forwards=[
port_forward(8000, 8000, name='Barretthousen'),
port_forward(9000, 9000, name='Traefik', link_path='/dashboard/#/')
],
labels=["1-ingress"]
)
@ -31,27 +34,34 @@ helm_resource(
'--set', 'auth.postgresPassword=bh-admin',
'--set', 'auth.database=bh',
],
port_forwards=["5432:5432"],
port_forwards=[
port_forward(5432, 5432, name='BH DB')],
labels=["9-data"])
def bh_service(service="", port_forwards=[], devMode=True, labels=['2-services'], deps=['postgres']):
# local_resource(
# "{}-go-compile".format(service),
# 'CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o .bin/{}-debug'.format(service)
# )
docker_build(
local_resource(
'{}-go-compile'.format(service),
'CGO_ENABELD=0 GOOS=linux GOARCH=amd64 go build -gcflags=\'-N -l\' -o .bin/{}-debug ./src/{}'.format(service, service),
deps=['./src/{}'.format(service), './src/lib'],
resource_deps=deps
)
docker_build_with_restart(
ref="barretthousen/service-{}".format(service),
dockerfile="./src/Dockerfile.service",
context="./src",
target="development" if devMode else "production",
dockerfile="./src/Dockerfile.dev-service",
context=".",
entrypoint=['/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', '--' ],
build_args={
"service": service
},
ignore=[
"{}/internal/data/postgres/migrations".format(service),
"{}/internal/data/postgres/queries.sql".format(service)
only = [
'./.bin/{}-debug'.format(service),
'./src/Dockerfile.dev-service'
],
live_update=[
sync('./.bin', '/opt')
]
)
@ -59,7 +69,7 @@ def bh_service(service="", port_forwards=[], devMode=True, labels=['2-services']
workload='local-{}'.format(service),
port_forwards=port_forwards,
labels=labels,
resource_deps=deps
resource_deps=deps,
)
@ -68,12 +78,21 @@ bh_service(service="catalog", port_forwards=["5002:5001", "2346:2345"])
bh_service(service="runner", port_forwards=[5001, 2345])
# bh_service(service="proxy-web", port_forwards=["8081:80"], deps=['ingress', 'local-catalog'])
bh_service(service="proxy-admin", port_forwards=["8082:80"], deps=['ingress'])
bh_service(service="proxy-admin", port_forwards=[
port_forward(8082, 80, name="HTTP API @ localhost:8082")
], deps=['ingress'])
k8s_yaml(
kustomize("./env/local")
)
k8s_resource(
workload='ingress',
labels='1-ingress',
links=[
link(url='http://admin.bh.localhost:8000', name='Admin Panel'),
]
)
# helm_resource(
# 'loki-stack',

View File

@ -7,17 +7,5 @@ spec:
spec:
containers:
- name: runner
command:
- /go/bin/dlv
args:
- --headless
- --listen=0.0.0.0:2345
- --api-version=2
- --log
- --accept-multiclient
#- --log-output=rpc,dap
- exec
- /opt/runner
- --continue
ports:
- containerPort: 2345

View File

@ -0,0 +1,19 @@
FROM golang:1.19-alpine as builder
RUN go install github.com/go-delve/delve/cmd/dlv@latest
FROM alpine as development
ARG service
COPY bin/${service}-debug /opt/${service}-debug
COPY --from=builder /go/bin/dlv /go/bin/dlv
ENV SERVICE=${service}
EXPOSE 2345
ENTRYPOINT ['/go/bin/dlv']
CMD [ '--headless', '--listen=0.0.0.0:2345', '--api-version=2', '--log', '--accept-multiclient', '--log-output=rpc', 'exec', '/opt/${SERVICE}-debug', '--continue' ]

View File

@ -2,31 +2,19 @@ FROM golang:1.19-alpine as builder
ARG service
RUN go install github.com/go-delve/delve/cmd/dlv@latest
RUN go install github.com/bufbuild/buf/cmd/buf@v1.17.0
RUN go install github.com/kyleconroy/sqlc/cmd/sqlc@latest
COPY . /go/src
WORKDIR /go/src/${service}
RUN /go/bin/sqlc generate -f /go/src/sqlc.yaml
RUN /go/bin/buf mod update /go/src/src \
&& /go/bin/buf generate
RUN go mod tidy \
&& CGO_ENABLED=0 go build -v -o /opt/${service} /go/src/${service} \
&& CGO_ENABLED=0 go build -gcflags='-N -l' -v -o /opt/${service}-debug /go/src/${service}
FROM alpine as development
ARG service
EXPOSE 2345
COPY --from=builder /opt/${service}-debug /opt/${service}
COPY --from=builder /go/bin/dlv /go/bin/dlv
ENV SERVICE=${service}
ENTRYPOINT ['/go/bin/dlv']
CMD [ '--headless', '--listen=0.0.0.0:2345', '--api-version=2', '--log', '--accept-multiclient', '--log-output=rpc', 'exec', '/opt/${SERVICE}', '--continue' ]
&& CGO_ENABLED=0 go build -v -o /opt/${service} /go/src/${service}
FROM alpine as production