faster tilt builds
parent
502c96b569
commit
b637b9ed84
|
|
@ -1,7 +1,11 @@
|
|||
.kubeconfig
|
||||
.vscode
|
||||
./src/.idea
|
||||
|
||||
|
||||
# build output
|
||||
.bin
|
||||
|
||||
# auto generated files
|
||||
*.pb.go
|
||||
*.pb.gw.go
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
|
|
|
|||
51
Tiltfile
51
Tiltfile
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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' ]
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue