123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- .PHONY: test e2e-test cover gofmt gofmt-fix header-check clean tar.gz docker-push release docker-push-all flannel-git
- REGISTRY?=quay.io/coreos/flannel
- QEMU_VERSION=v3.0.0
- TAG?=$(shell git describe --tags --dirty)
- ARCH?=amd64
- ifeq ($(ARCH),amd64)
- CGO_ENABLED=1
- else
- CGO_ENABLED=0
- endif
- GO_VERSION=1.10.3
- K8S_VERSION=v1.6.6
- GOARM=7
- TEST_PACKAGES?=pkg/ip subnet subnet/etcdv2 network backend
- TEST_PACKAGES_EXPANDED=$(TEST_PACKAGES:%=github.com/coreos/flannel/%)
- PACKAGES?=$(TEST_PACKAGES) network
- PACKAGES_EXPANDED=$(PACKAGES:%=github.com/coreos/flannel/%)
- clean:
- rm -f dist/flanneld*
- rm -f dist/*.aci
- rm -f dist/*.docker
- rm -f dist/*.tar.gz
- rm -f dist/qemu-*
- dist/flanneld: $(shell find . -type f -name '*.go')
- go build -o dist/flanneld \
- -ldflags '-s -w -X github.com/coreos/flannel/version.Version=$(TAG) -extldflags "-static"'
- dist/flanneld.exe: $(shell find . -type f -name '*.go')
- CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows go build -o dist/flanneld.exe \
- -ldflags '-s -w -X github.com/coreos/flannel/version.Version=$(TAG) -extldflags "-static"'
- dist/flanneld-$(ARCH): dist/qemu-$(ARCH)-static
-
- docker run -e CGO_ENABLED=$(CGO_ENABLED) -e GOARCH=$(ARCH) \
- -u $(shell id -u):$(shell id -g) \
- -v $(CURDIR)/dist/qemu-$(ARCH)-static:/usr/bin/qemu-$(ARCH)-static \
- -v $(CURDIR):/go/src/github.com/coreos/flannel:ro \
- -v $(CURDIR)/dist:/go/src/github.com/coreos/flannel/dist \
- golang:$(GO_VERSION) /bin/bash -c '\
- cd /go/src/github.com/coreos/flannel && \
- make -e dist/flanneld && \
- mv dist/flanneld dist/flanneld-$(ARCH)'
- image: dist/flanneld-$(TAG)-$(ARCH).docker
- dist/flanneld-$(TAG)-$(ARCH).docker: dist/flanneld-$(ARCH)
- docker build -f Dockerfile.$(ARCH) -t $(REGISTRY):$(TAG)-$(ARCH) .
- docker save -o dist/flanneld-$(TAG)-$(ARCH).docker $(REGISTRY):$(TAG)-$(ARCH)
- ifeq ($(ARCH),amd64)
- docker build -f Dockerfile.$(ARCH) -t $(REGISTRY):$(TAG) .
- endif
- test: header-check gofmt verify-glide
-
-
-
- docker run --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --rm -v $(shell pwd):/go/src/github.com/coreos/flannel golang:1.8.3 go test -v -cover $(TEST_PACKAGES_EXPANDED)
-
- cd dist; ./mk-docker-opts_tests.sh
-
- make e2e-test
- e2e-test: bash_unit dist/flanneld-e2e-$(TAG)-$(ARCH).docker
- $(MAKE) -C images/iperf3 ARCH=$(ARCH)
- FLANNEL_DOCKER_IMAGE=$(REGISTRY):$(TAG)-$(ARCH) ./bash_unit dist/functional-test.sh
- FLANNEL_DOCKER_IMAGE=$(REGISTRY):$(TAG)-$(ARCH) ./bash_unit dist/functional-test-k8s.sh
- cover:
-
- go test -coverprofile cover.out $(PACKAGES_EXPANDED)
- go tool cover -html=cover.out
- header-check:
- ./header-check.sh
- gofmt:
- bash -c '! gofmt -d $(PACKAGES) 2>&1 | read'
- verify-glide:
- $(if $(shell which glide),,$(error "glide not found in PATH"))
- bash -c '! glide list 2>&1 | grep "ERROR"'
- gofmt-fix:
- gofmt -w $(PACKAGES)
- bash_unit:
- wget https://raw.githubusercontent.com/pgrange/bash_unit/v1.6.0/bash_unit
- chmod +x bash_unit
- dist/flanneld-e2e-$(TAG)-$(ARCH).docker:
- ifneq ($(ARCH),amd64)
- $(MAKE) dist/qemu-$(ARCH)-static
- endif
-
- docker run -e GOARM=$(GOARM) \
- -u $(shell id -u):$(shell id -g) \
- -v $(CURDIR):/go/src/github.com/coreos/flannel:ro \
- -v $(CURDIR)/dist:/go/src/github.com/coreos/flannel/dist \
- golang:1.8.3 /bin/bash -c '\
- cd /go/src/github.com/coreos/flannel && \
- CGO_ENABLED=1 make -e dist/flanneld && \
- mv dist/flanneld dist/flanneld-$(ARCH)'
- docker build -f Dockerfile.$(ARCH) -t $(REGISTRY):$(TAG)-$(ARCH) .
- release: tar.gz dist/qemu-s390x-static dist/qemu-ppc64le-static dist/qemu-aarch64-static dist/qemu-arm-static #release-tests
- ARCH=amd64 make dist/flanneld-$(TAG)-amd64.docker
- ARCH=arm make dist/flanneld-$(TAG)-arm.docker
- ARCH=arm64 make dist/flanneld-$(TAG)-arm64.docker
- ARCH=ppc64le make dist/flanneld-$(TAG)-ppc64le.docker
- ARCH=s390x make dist/flanneld-$(TAG)-s390x.docker
- @echo "Everything should be built for $(TAG)"
- @echo "Add all flanneld-* and *.tar.gz files from dist/ to the Github release"
- @echo "Use make docker-push-all to push the images to a registry"
- dist/qemu-%-static:
- if [ "$(@F)" = "qemu-amd64-static" ]; then \
- wget -O dist/qemu-amd64-static https://github.com/multiarch/qemu-user-static/releases/download/$(QEMU_VERSION)/qemu-x86_64-static; \
- elif [ "$(@F)" = "qemu-arm64-static" ]; then \
- wget -O dist/qemu-arm64-static https://github.com/multiarch/qemu-user-static/releases/download/$(QEMU_VERSION)/qemu-aarch64-static; \
- else \
- wget -O dist/$(@F) https://github.com/multiarch/qemu-user-static/releases/download/$(QEMU_VERSION)/$(@F); \
- fi
- tar.gz:
- ARCH=amd64 make dist/flanneld-amd64
- tar --transform='flags=r;s|-amd64||' -zcvf dist/flannel-$(TAG)-linux-amd64.tar.gz -C dist flanneld-amd64 mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-linux-amd64.tar.gz
- ARCH=amd64 make dist/flanneld.exe
- tar --transform='flags=r;s|-amd64||' -zcvf dist/flannel-$(TAG)-windows-amd64.tar.gz -C dist flanneld.exe mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-windows-amd64.tar.gz
- ARCH=ppc64le make dist/flanneld-ppc64le
- tar --transform='flags=r;s|-ppc64le||' -zcvf dist/flannel-$(TAG)-linux-ppc64le.tar.gz -C dist flanneld-ppc64le mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-linux-ppc64le.tar.gz
- ARCH=arm make dist/flanneld-arm
- tar --transform='flags=r;s|-arm||' -zcvf dist/flannel-$(TAG)-linux-arm.tar.gz -C dist flanneld-arm mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-linux-arm.tar.gz
- ARCH=arm64 make dist/flanneld-arm64
- tar --transform='flags=r;s|-arm64||' -zcvf dist/flannel-$(TAG)-linux-arm64.tar.gz -C dist flanneld-arm64 mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-linux-arm64.tar.gz
- ARCH=s390x make dist/flanneld-s390x
- tar --transform='flags=r;s|-s390x||' -zcvf dist/flannel-$(TAG)-linux-s390x.tar.gz -C dist flanneld-s390x mk-docker-opts.sh ../README.md
- tar -tvf dist/flannel-$(TAG)-linux-s390x.tar.gz
- release-tests: bash_unit
-
- ETCD_IMG="quay.io/coreos/etcd:latest" ./bash_unit dist/functional-test.sh
- ETCD_IMG="quay.io/coreos/etcd:v3.2.7" ./bash_unit dist/functional-test.sh
- ETCD_IMG="quay.io/coreos/etcd:v3.1.10" ./bash_unit dist/functional-test.sh
- ETCD_IMG="quay.io/coreos/etcd:v3.0.17" ./bash_unit dist/functional-test.sh
-
- ETCD_IMG="quay.io/coreos/etcd:v2.3.8" ETCD_LOCATION=" " ./bash_unit dist/functional-test.sh
-
-
- K8S_VERSION="1.7.6" ./bash_unit dist/functional-test-k8s.sh
- K8S_VERSION="1.6.10" ./bash_unit dist/functional-test-k8s.sh
-
-
-
- docker-push: dist/flanneld-$(TAG)-$(ARCH).docker
- docker push $(REGISTRY):$(TAG)-$(ARCH)
- ifeq ($(ARCH),amd64)
- docker push $(REGISTRY):$(TAG)
- endif
- docker-push-all:
- ARCH=amd64 make docker-push
- ARCH=arm make docker-push
- ARCH=arm64 make docker-push
- ARCH=ppc64le make docker-push
- ARCH=s390x make docker-push
- flannel-git:
- ARCH=amd64 REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG)-amd64.docker docker-push
- docker build -f Dockerfile.amd64 -t quay.io/coreos/flannel-git .
- docker push quay.io/coreos/flannel-git
- ARCH=arm REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG)-arm.docker docker-push
- ARCH=arm64 REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG)-arm64.docker docker-push
- ARCH=ppc64le REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG)-ppc64le.docker docker-push
- ARCH=s390x REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG)-s390x.docker docker-push
- update-glide:
-
- glide update --strip-vendor
-
- glide vc --only-code --no-tests
- install:
-
-
- CGO_ENABLED=1 go install -v github.com/coreos/flannel
- minikube-start:
- minikube start --network-plugin cni
- minikube-build-image:
- CGO_ENABLED=1 go build -v -o dist/flanneld-amd64
-
- sh -c 'eval $$(minikube docker-env) && docker build -f Dockerfile.amd64 -t flannel/minikube .'
- minikube-deploy-flannel:
- kubectl apply -f Documentation/minikube.yml
- minikube-remove-flannel:
- kubectl delete -f Documentation/minikube.yml
- minikube-restart-pod:
-
- kubectl delete pods -l app=flannel --grace-period=0
- kubernetes-logs:
- kubectl logs `kubectl get po -l app=flannel -o=custom-columns=NAME:metadata.name --no-headers=true` -c kube-flannel -f
- LOCAL_IP_ENV?=$(shell ip route get 8.8.8.8 | head -1 | awk '{print $$7}')
- run-etcd: stop-etcd
- docker run --detach \
- -p 2379:2379 \
- --name flannel-etcd quay.io/coreos/etcd \
- etcd \
- --advertise-client-urls "http://$(LOCAL_IP_ENV):2379,http://127.0.0.1:2379,http://$(LOCAL_IP_ENV):4001,http://127.0.0.1:4001" \
- --listen-client-urls "http://0.0.0.0:2379,http://0.0.0.0:4001"
- stop-etcd:
- @-docker rm -f flannel-etcd
- run-k8s-apiserver: stop-k8s-apiserver
- docker run --detach --net=host \
- --name calico-k8s-apiserver \
- gcr.io/google_containers/hyperkube-amd64:$(K8S_VERSION) \
- /hyperkube apiserver --etcd-servers=http://$(LOCAL_IP_ENV):2379 \
- --service-cluster-ip-range=10.101.0.0/16
- stop-k8s-apiserver:
- @-docker rm -f calico-k8s-apiserver
- run-local-kube-flannel-with-prereqs: run-etcd run-k8s-apiserver dist/flanneld
- while ! kubectl apply -f dist/fake-node.yaml; do sleep 1; done
- $(MAKE) run-local-kube-flannel
- run-local-kube-flannel:
-
- sudo NODE_NAME=test dist/flanneld --kube-subnet-mgr --kube-api-url http://127.0.0.1:8080
|