38dfddbab3
This PR will break cluster create apart from the other steps in integration tests. It will allow us to run the cluster create, then use it for parallel e2e builds in different cloud environments. Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
318 lines
8.5 KiB
Makefile
318 lines
8.5 KiB
Makefile
TOOLS ?= autonomy/tools:b473afb
|
|
|
|
# TODO(andrewrynhard): Move this logic to a shell script.
|
|
BUILDKIT_VERSION ?= v0.6.0
|
|
KUBECTL_VERSION ?= v1.14.1
|
|
BUILDKIT_IMAGE ?= moby/buildkit:$(BUILDKIT_VERSION)
|
|
BUILDKIT_HOST ?= tcp://0.0.0.0:1234
|
|
BUILDKIT_CONTAINER_NAME ?= talos-buildkit
|
|
BUILDKIT_CONTAINER_STOPPED := $(shell docker ps --filter name=$(BUILDKIT_CONTAINER_NAME) --filter status=exited --format='{{.Names}}' 2>/dev/null)
|
|
BUILDKIT_CONTAINER_RUNNING := $(shell docker ps --filter name=$(BUILDKIT_CONTAINER_NAME) --filter status=running --format='{{.Names}}' 2>/dev/null)
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
BUILDCTL_ARCHIVE := https://github.com/moby/buildkit/releases/download/$(BUILDKIT_VERSION)/buildkit-$(BUILDKIT_VERSION).linux-amd64.tar.gz
|
|
BUILDKIT_CACHE ?= -v $(HOME)/.buildkit:/var/lib/buildkit
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
BUILDCTL_ARCHIVE := https://github.com/moby/buildkit/releases/download/$(BUILDKIT_VERSION)/buildkit-$(BUILDKIT_VERSION).darwin-amd64.tar.gz
|
|
BUILDKIT_CACHE ?=
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Linux)
|
|
KUBECTL_ARCHIVE := https://storage.googleapis.com/kubernetes-release/release/$(KUBECTL_VERSION)/bin/linux/amd64/kubectl
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
KUBECTL_ARCHIVE := https://storage.googleapis.com/kubernetes-release/release/$(KUBECTL_VERSION)/bin/darwin/amd64/kubectl
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Linux)
|
|
GITMETA := https://github.com/talos-systems/gitmeta/releases/download/v0.1.0-alpha.2/gitmeta-linux-amd64
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
GITMETA := https://github.com/talos-systems/gitmeta/releases/download/v0.1.0-alpha.2/gitmeta-darwin-amd64
|
|
endif
|
|
|
|
BINDIR ?= ./bin
|
|
CONFORM_VERSION ?= 57c9dbd
|
|
|
|
SHA ?= $(shell $(BINDIR)/gitmeta git sha)
|
|
TAG ?= $(shell $(BINDIR)/gitmeta image tag)
|
|
|
|
COMMON_ARGS = --progress=plain
|
|
COMMON_ARGS += --frontend=dockerfile.v0
|
|
COMMON_ARGS += --allow security.insecure
|
|
COMMON_ARGS += --local context=.
|
|
COMMON_ARGS += --local dockerfile=.
|
|
COMMON_ARGS += --opt build-arg:TOOLS=$(TOOLS)
|
|
COMMON_ARGS += --opt build-arg:SHA=$(SHA)
|
|
COMMON_ARGS += --opt build-arg:TAG=$(TAG)
|
|
|
|
DOCKER_ARGS ?=
|
|
# to allow tests to run containerd
|
|
DOCKER_TEST_ARGS = --security-opt seccomp:unconfined --privileged -v /var/lib/containerd/ -v /tmp/
|
|
|
|
TESTPKGS ?= ./...
|
|
|
|
all: ci rootfs initramfs kernel osctl installer talos
|
|
|
|
.PHONY: ci
|
|
ci: builddeps buildkitd
|
|
|
|
.PHONY: builddeps
|
|
builddeps: gitmeta buildctl
|
|
|
|
gitmeta: $(BINDIR)/gitmeta
|
|
|
|
$(BINDIR)/gitmeta:
|
|
@mkdir -p $(BINDIR)
|
|
@curl -L $(GITMETA) -o $(BINDIR)/gitmeta
|
|
@chmod +x $(BINDIR)/gitmeta
|
|
|
|
buildctl: $(BINDIR)/buildctl
|
|
|
|
$(BINDIR)/buildctl:
|
|
@mkdir -p $(BINDIR)
|
|
@curl -L $(BUILDCTL_ARCHIVE) | tar -zxf - -C $(BINDIR) --strip-components 1 bin/buildctl
|
|
|
|
kubectl: $(BINDIR)/kubectl
|
|
|
|
$(BINDIR)/kubectl:
|
|
@mkdir -p $(BINDIR)
|
|
@curl -L -o $(BINDIR)/kubectl $(KUBECTL_ARCHIVE)
|
|
@chmod +x $(BINDIR)/kubectl
|
|
|
|
.PHONY: buildkitd
|
|
buildkitd:
|
|
ifeq (tcp://0.0.0.0:1234,$(findstring tcp://0.0.0.0:1234,$(BUILDKIT_HOST)))
|
|
ifeq ($(BUILDKIT_CONTAINER_STOPPED),$(BUILDKIT_CONTAINER_NAME))
|
|
@echo "Removing exited talos-buildkit container"
|
|
@docker rm $(BUILDKIT_CONTAINER_NAME)
|
|
endif
|
|
ifneq ($(BUILDKIT_CONTAINER_RUNNING),$(BUILDKIT_CONTAINER_NAME))
|
|
@echo "Starting talos-buildkit container"
|
|
@docker run \
|
|
--name $(BUILDKIT_CONTAINER_NAME) \
|
|
-d \
|
|
--privileged \
|
|
-p 1234:1234 \
|
|
$(BUILDKIT_CACHE) \
|
|
$(BUILDKIT_IMAGE) \
|
|
--addr $(BUILDKIT_HOST) \
|
|
--allow-insecure-entitlement security.insecure
|
|
@echo "Wait for buildkitd to become available"
|
|
@sleep 5
|
|
endif
|
|
endif
|
|
|
|
.PHONY: osctl
|
|
osctl: osctl-linux osctl-darwin
|
|
|
|
base: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=build/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: kernel
|
|
kernel: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=local,dest=build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
@-rm -rf ./build/modules
|
|
|
|
.PHONY: initramfs
|
|
initramfs: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=local,dest=build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: rootfs
|
|
rootfs: buildkitd osd trustd proxyd ntpd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: installer
|
|
installer: buildkitd
|
|
@mkdir -p build
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=build/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
@docker load < build/$@.tar
|
|
|
|
.PHONY: generate
|
|
generate: buildkitd
|
|
$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=local,dest=./ \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: talos-gce
|
|
talos-gce:
|
|
@docker run --rm -v /dev:/dev -v $(PWD)/build:/out --privileged $(DOCKER_ARGS) autonomy/installer:$(TAG) install -n disk -r -p googlecloud -u none
|
|
@tar -C $(PWD)/build -czf $(PWD)/build/$@.tar.gz disk.raw
|
|
@rm -rf $(PWD)/build/disk.raw
|
|
|
|
.PHONY: talos-iso
|
|
talos-iso:
|
|
@docker run --rm -i -v $(PWD)/build:/out autonomy/installer:$(TAG) iso
|
|
|
|
.PHONY: talos-aws
|
|
talos-aws:
|
|
@docker run \
|
|
--rm \
|
|
-i \
|
|
-e AWS_ACCESS_KEY_ID=$(AWS_ACCESS_KEY_ID) \
|
|
-e AWS_SECRET_ACCESS_KEY=$(AWS_SECRET_ACCESS_KEY) \
|
|
-e AWS_DEFAULT_REGION=$(AWS_DEFAULT_REGION) \
|
|
autonomy/installer:$(TAG) ami -var regions=${AWS_PUBLISH_REGIONS} -var visibility=all
|
|
|
|
.PHONY: talos-azure
|
|
talos-azure:
|
|
@docker run --rm -v /dev:/dev -v $(PWD)/build:/out \
|
|
--privileged $(DOCKER_ARGS) \
|
|
autonomy/installer:$(TAG) \
|
|
install \
|
|
-n disk \
|
|
-r \
|
|
-p azure \
|
|
-u none \
|
|
-e rootdelay=300
|
|
@docker run --rm -v $(PWD)/build:/out $(DOCKER_ARGS) \
|
|
--entrypoint qemu-img \
|
|
autonomy/installer:$(TAG) \
|
|
convert \
|
|
-f raw \
|
|
-o subformat=fixed,force_size \
|
|
-O vpc /out/disk.raw /out/talos-azure.vhd
|
|
@tar -C $(PWD)/build -czf $(PWD)/build/$@.tar.gz talos-azure.vhd
|
|
@rm -rf $(PWD)/build/disk.raw $(PWD)/build/talos-azure.vhd
|
|
|
|
.PHONY: talos-raw
|
|
talos-raw:
|
|
@docker run --rm -v /dev:/dev -v $(PWD)/build:/out --privileged $(DOCKER_ARGS) autonomy/installer:$(TAG) install -n rootfs -r -b
|
|
|
|
.PHONY: talos
|
|
talos: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=build/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
@docker load < build/$@.tar
|
|
|
|
.PHONY: osctl-cluster-create
|
|
osctl-cluster-create:
|
|
@TAG=$(TAG) ./hack/test/$@.sh
|
|
|
|
.PHONY: basic-integration
|
|
basic-integration:
|
|
@TAG=$(TAG) ./hack/test/$@.sh
|
|
|
|
.PHONY: e2e
|
|
e2e-integration:
|
|
## TODO(rsmitty): Bump this k8s version back up once the bug is fixed where kubectl can't scale crds
|
|
@TAG=$(TAG) ./hack/test/$@.sh
|
|
|
|
.PHONY: test
|
|
test: buildkitd
|
|
@mkdir -p build
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--opt target=$@ \
|
|
--output type=local,dest=./ \
|
|
--opt build-arg:TESTPKGS=$(TESTPKGS) \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: lint
|
|
lint: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: osctl-linux
|
|
osctl-linux: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=local,dest=build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: osctl-darwin
|
|
osctl-darwin: buildkitd
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=local,dest=build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: machined
|
|
machined: buildkitd images
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: osd
|
|
osd: buildkitd images
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=images/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: trustd
|
|
trustd: buildkitd images
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=images/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: proxyd
|
|
proxyd: buildkitd images
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=images/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
.PHONY: ntpd
|
|
ntpd: buildkitd images
|
|
@$(BINDIR)/buildctl --addr $(BUILDKIT_HOST) \
|
|
build \
|
|
--output type=docker,dest=images/$@.tar,name=docker.io/autonomy/$@:$(TAG) \
|
|
--opt target=$@ \
|
|
$(COMMON_ARGS)
|
|
|
|
images:
|
|
@mkdir images
|
|
|
|
.PHONY: login
|
|
login:
|
|
@docker login --username "$(DOCKER_USERNAME)" --password "$(DOCKER_PASSWORD)"
|
|
|
|
.PHONY: push
|
|
push: gitmeta
|
|
@docker tag autonomy/installer:$(TAG) autonomy/installer:latest
|
|
@docker push autonomy/installer:$(TAG)
|
|
@docker push autonomy/installer:latest
|
|
@docker tag autonomy/talos:$(TAG) autonomy/talos:latest
|
|
@docker push autonomy/talos:$(TAG)
|
|
@docker push autonomy/talos:latest
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@-rm -rf build images vendor
|