forked from agent-substrate/substrate
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
133 lines (108 loc) · 3.87 KB
/
Copy pathMakefile
File metadata and controls
133 lines (108 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Default project ID, can be overridden
PROJECT_ID ?= $(shell echo $${USER}-gke-dev)
# Ko configuration
export KO_DOCKER_REPO := gcr.io/$(PROJECT_ID)/ate-images
# Go commands
GO := go
KO := hack/run-tool.sh ko
# Flags every ko image build gets, e.g. `make build-images KO_FLAGS=--push=false`.
# Empty by default, so ko runs on its own defaults and whatever .ko.yaml configures.
KO_FLAGS ?=
# Binaries
BINDIR := bin/
ATECTL := $(BINDIR)/kubectl-ate
ATESETUP := $(BINDIR)/ate-setup
# Version stamping. Override on the make command line to pin
# (e.g. `make VERSION=v0.5.0 build`).
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
VERSION_PKG := github.com/agent-substrate/substrate/internal/version
LDFLAGS := -X=$(VERSION_PKG).Version=$(VERSION)
# Every image the installer can deploy, defined once. These two sets together
# have to cover images.Components in cmd/ate-setup/internal/images: a package
# missing here has no image for a build from source, and one missing there has
# none for an install from a release.
CONTROL_PLANE_IMAGES := ./cmd/ateapi \
./cmd/atecontroller \
./cmd/atelet \
./cmd/atenet \
./cmd/podcertcontroller
WORKER_IMAGES := ./cmd/ateom-gvisor \
./cmd/ateom-microvm
DEMO_IMAGES := ./demos/counter \
./demos/egress \
./demos/multi-template/fspersist \
./demos/sandbox
ALL_IMAGES := $(CONTROL_PLANE_IMAGES) $(WORKER_IMAGES)
# Developer builds may leave components out, e.g. the microvm image, the one
# image built from a debian base rather than distroless static:
# make build-images SKIP_IMAGES=./cmd/ateom-microvm
# Overriding IMAGES or DEMOS on the command line builds exactly that set.
SKIP_IMAGES ?=
IMAGES := $(filter-out $(SKIP_IMAGES),$(ALL_IMAGES))
DEMOS := $(filter-out $(SKIP_IMAGES),$(DEMO_IMAGES))
.PHONY: all
all: build
.PHONY: build
build: build-images build-atectl build-ate-setup
.PHONY: build-images
build-images:
$(KO) build $(KO_FLAGS) \
--ldflags="$(LDFLAGS)" \
$(IMAGES)
.PHONY: build-atectl
build-atectl:
$(GO) build -ldflags "$(LDFLAGS)" -o $(ATECTL) ./cmd/kubectl-ate
# The cluster installer, a Go port of hack/install-ate.sh. Both work today; see
# cmd/ate-setup/commands.md for the flag-by-flag mapping between them.
.PHONY: build-ate-setup
build-ate-setup:
$(GO) build -ldflags "$(LDFLAGS)" -o $(ATESETUP) ./cmd/ate-setup
.PHONY: build-atenet
build-atenet:
$(GO) build -ldflags "$(LDFLAGS)" -o $(BINDIR)/atenet ./cmd/atenet
.PHONY: build-demos
build-demos:
$(KO) build $(KO_FLAGS) \
--ldflags="$(LDFLAGS)" \
$(DEMOS)
.PHONY: test
test:
$(GO) test -race ./...
.PHONY: e2e
e2e: build build-demos
hack/run-e2e.sh
.PHONY: fmt verify-fmt
# Prints the Go ldflags (used for scripts to do version stamping).
ldflags:
@for flag in $(LDFLAGS); do \
echo $$flag; \
done
# Formats all Go files in the project
fmt:
@./hack/update/gofmt.sh
# Fails if any Go files are not formatted properly
verify-fmt:
@./hack/verify/gofmt.sh
.PHONY: lint
# Runs golangci-lint and fails on any reported issues.
lint:
@./hack/verify/golangci-lint.sh
.PHONY: verify
verify: test
bash hack/verify-all.sh
.PHONY: clean
clean:
rm -rf $(BINDIR)