deckhand/Makefile
Arun Kant 8eb74b0509 Adding opensuse image build for deckhand
Adding DISTRO parameter for makefile to invoke distribution specific
Dockerfile and build image accordingly.

Updated logic for existing jobs to have distro specific logic
for building and publishing images.

Added multiple distro specific document in operator section.

Change-Id: I415ab28b06ea17b21e76d28ccb3e284041c8072d
2019-05-30 17:22:57 +00:00

121 lines
3.5 KiB
Makefile

# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
#
# 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.
BUILD_DIR := $(shell mkdir -p build && mktemp -d -p build)
DOCKER_REGISTRY ?= quay.io
IMAGE_NAME ?= deckhand
IMAGE_PREFIX ?= airshipit
IMAGE_TAG ?= latest
DISTRO_BASE_IMAGE ?=
HELM := $(shell realpath $(BUILD_DIR))/helm
PROXY ?= http://proxy.foo.com:8000
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
USE_PROXY ?= false
PUSH_IMAGE ?= false
# use this variable for image labels added in internal build process
LABEL ?= org.airshipit.build=community
DISTRO ?= ubuntu_xenial
COMMIT ?= $(shell git rev-parse HEAD)
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO}
export
# Build Deckhand Docker image for this project
.PHONY: images
images: build_deckhand
# Create tgz of the chart
.PHONY: charts
charts: helm-init
$(HELM) dep up charts/deckhand
$(HELM) package charts/deckhand
# Initialize local helm config
.PHONY: helm-init
helm-init: helm-install
tools/helm_tk.sh $(HELM)
# Install helm binary
.PHONY: helm-install
helm-install:
tools/helm_install.sh $(HELM)
# Perform linting
.PHONY: lint
lint: pep8 helm_lint
# Dry run templating of chart
.PHONY: dry-run
dry-run: clean
tools/helm_tk.sh $(HELM)
$(HELM) template charts/deckhand
.PHONY: tests
tests:
tox
_BASE_IMAGE_ARG := $(if $(DISTRO_BASE_IMAGE),--build-arg FROM="${DISTRO_BASE_IMAGE}" ,)
# Make targets intended for use by the primary targets above.
.PHONY: build_deckhand
build_deckhand:
ifeq ($(USE_PROXY), true)
docker build --network host -t $(IMAGE) --label $(LABEL) \
--label "org.opencontainers.image.revision=$(COMMIT)" \
--label "org.opencontainers.image.created=$(shell date --rfc-3339=seconds --utc)" \
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \
$(_BASE_IMAGE_ARG) \
-f images/deckhand/Dockerfile.$(DISTRO) \
--build-arg http_proxy=$(PROXY) \
--build-arg https_proxy=$(PROXY) \
--build-arg HTTP_PROXY=$(PROXY) \
--build-arg HTTPS_PROXY=$(PROXY) \
--build-arg no_proxy=$(NO_PROXY) \
--build-arg NO_PROXY=$(NO_PROXY) .
else
docker build --network host -t $(IMAGE) --label $(LABEL) \
--label "org.opencontainers.image.revision=$(COMMIT)" \
--label "org.opencontainers.image.created=$(shell date --rfc-3339=seconds --utc)" \
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \
$(_BASE_IMAGE_ARG) \
-f images/deckhand/Dockerfile.$(DISTRO) .
endif
ifeq ($(PUSH_IMAGE), true)
docker push $(IMAGE)
endif
.PHONY: clean
clean:
rm -rf build
helm delete helm-template ||:
rm -rf doc/build
# Don't remove .placeholder from doc/source/_static/
rm -rf doc/api doc/source/_static/* doc/source/contributor/api
.PHONY: docs
docs: clean build_docs
.PHONY: build_docs
build_docs:
tox -e docs
.PHONY: pep8
pep8:
tox -e pep8
.PHONY: helm_lint
helm_lint: clean
tools/helm_tk.sh $(HELM)
$(HELM) lint charts/deckhand