|
1 |
| -# This loads a helper function that isn't part of core Tilt that simplifies restarting the process in the container |
2 |
| -# when files changes. |
3 |
| -load('ext://restart_process', 'docker_build_with_restart') |
| 1 | +if not os.path.exists('../tilt-support'): |
| 2 | + fail('Please clone https://github.com/operator-framework/tilt-support to ../tilt-support') |
4 | 3 |
|
5 |
| -# Treat the main binary as a local resource, so we can automatically rebuild it when any of the deps change. This |
6 |
| -# builds it locally, targeting linux, so it can run in a linux container. |
7 |
| -local_resource( |
8 |
| - 'manager_binary', |
9 |
| - cmd=''' |
10 |
| -mkdir -p .tiltbuild/bin |
11 |
| -CGO_ENABLED=0 GOOS=linux go build -o .tiltbuild/bin/manager ./cmd/manager |
12 |
| -''', |
13 |
| - deps=['api', 'cmd/manager', 'internal', 'pkg', 'go.mod', 'go.sum'] |
14 |
| -) |
| 4 | +load('../tilt-support/Tiltfile', 'deploy_repo') |
15 | 5 |
|
16 |
| -# Configure our image build. If the file in live_update.sync (.tiltbuild/bin/manager) changes, Tilt |
17 |
| -# copies it to the running container and restarts it. |
18 |
| -docker_build_with_restart( |
19 |
| - # This has to match an image in the k8s_yaml we call below, so Tilt knows to use this image for our Deployment, |
20 |
| - # instead of the actual image specified in the yaml. |
21 |
| - ref='quay.io/operator-framework/operator-controller:devel', |
22 |
| - # This is the `docker build` context, and because we're only copying in the binary we've already had Tilt build |
23 |
| - # locally, we set the context to the directory containing the binary. |
24 |
| - context='.tiltbuild/bin', |
25 |
| - # We use a slimmed-down Dockerfile that only has $binary in it. |
26 |
| - dockerfile_contents=''' |
27 |
| -FROM gcr.io/distroless/static:debug |
28 |
| -EXPOSE 8080 |
29 |
| -WORKDIR / |
30 |
| -COPY manager manager |
31 |
| -''', |
32 |
| - # The set of files Tilt should include in the build. In this case, it's just the binary we built above. |
33 |
| - only='manager', |
34 |
| - # If .tiltbuild/bin/manager changes, Tilt will copy it into the running container and restart the process. |
35 |
| - live_update=[ |
36 |
| - sync('.tiltbuild/bin/manager', '/manager'), |
37 |
| - ], |
38 |
| - # The command to run in the container. |
39 |
| - entrypoint="/manager", |
40 |
| -) |
| 6 | +config.define_string_list('repos', args=True) |
| 7 | +cfg = config.parse() |
| 8 | +repos = cfg.get('repos', ['operator-controller', 'rukpak', 'catalogd']) |
41 | 9 |
|
42 |
| -# Tell Tilt what to deploy by running kustomize and then doing some manipulation to make things work for Tilt. |
43 |
| -objects = decode_yaml_stream(kustomize('config/default')) |
44 |
| -for o in objects: |
45 |
| - # For Tilt's live_update functionality to work, we have to run the container as root. Remove any PSA labels to allow |
46 |
| - # this. |
47 |
| - if o['kind'] == 'Namespace' and 'labels' in o['metadata']: |
48 |
| - labels_to_delete = [label for label in o['metadata']['labels'] if label.startswith('pod-security.kubernetes.io')] |
49 |
| - for label in labels_to_delete: |
50 |
| - o['metadata']['labels'].pop(label) |
| 10 | +repo = { |
| 11 | + 'image': 'quay.io/operator-framework/operator-controller', |
| 12 | + 'yaml': 'config/default', |
| 13 | + 'binaries': { |
| 14 | + 'manager': 'operator-controller-controller-manager', |
| 15 | + }, |
| 16 | + 'starting_debug_port': 30000, |
| 17 | +} |
51 | 18 |
|
52 |
| - if o['kind'] != 'Deployment': |
53 |
| - # We only need to modify Deployments, so we can skip this |
54 |
| - continue |
55 |
| - |
56 |
| - # For Tilt's live_update functionality to work, we have to run the container as root. Otherwise, Tilt won't |
57 |
| - # be able to untar the updated binary in the container's file system (this is how live update |
58 |
| - # works). If there are any securityContexts, remove them. |
59 |
| - if "securityContext" in o['spec']['template']['spec']: |
60 |
| - o['spec']['template']['spec'].pop('securityContext') |
61 |
| - for c in o['spec']['template']['spec']['containers']: |
62 |
| - if "securityContext" in c: |
63 |
| - c.pop('securityContext') |
64 |
| - |
65 |
| -# Now apply all the yaml |
66 |
| -k8s_yaml(encode_yaml_stream(objects)) |
| 19 | +for r in repos: |
| 20 | + if r == 'operator-controller': |
| 21 | + deploy_repo('operator-controller', repo) |
| 22 | + else: |
| 23 | + include('../{}/Tiltfile'.format(r)) |
0 commit comments