163 lines
7.9 KiB
Plaintext
163 lines
7.9 KiB
Plaintext
# © Copyright IBM Corporation 2018
|
|
#
|
|
# 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.
|
|
|
|
###############################################################################
|
|
# Conditional variables - you can override the values of these variables from
|
|
# the command line
|
|
###############################################################################
|
|
# BASE_IMAGE is the base image to use for MQ, for example "ubuntu" or "rhel"
|
|
BASE_IMAGE ?= rhel
|
|
# MQ_VERSION is the fully qualified MQ version number to build
|
|
MQ_VERSION ?= 9.1.0.0
|
|
# MQ_ARCHIVE is the name of the file, under the downloads directory, from which MQ Advanced can
|
|
# be installed. The default value is derived from MQ_VERSION, BASE_IMAGE and architecture
|
|
# Does not apply to MQ Advanced for Developers.
|
|
MQ_ARCHIVE ?= IBM_MQ_$(MQ_VERSION)_LINUX_$(MQ_ARCHIVE_ARCH).tar.gz
|
|
# MQ_ARCHIVE_DEV is the name of the file, under the downloads directory, from which MQ Advanced
|
|
# for Developers can be installed
|
|
MQ_ARCHIVE_DEV ?= $(MQ_ARCHIVE_DEV_$(MQ_VERSION))
|
|
# MQ_SDK_ARCHIVE specifies the archive to use for building the golang programs. Defaults vary on developer or advanced.
|
|
MQ_SDK_ARCHIVE ?= $(MQ_ARCHIVE_DEV_$(MQ_VERSION))
|
|
# Options to `go test` for the Docker tests
|
|
TEST_OPTS_DOCKER ?=
|
|
# MQ_IMAGE_ADVANCEDSERVER is the name and tag of the built MQ Advanced image
|
|
MQ_IMAGE_ADVANCEDSERVER ?=mqadvanced-server:$(MQ_VERSION)-$(ARCH)-$(BASE_IMAGE_TAG)
|
|
# MQ_IMAGE_DEVSERVER is the name and tag of the built MQ Advanced for Developers image
|
|
MQ_IMAGE_DEVSERVER ?=mqadvanced-server-dev:$(MQ_VERSION)-$(ARCH)-$(BASE_IMAGE_TAG)
|
|
# MQ_IMAGE_SDK is the name and tag of the built MQ Advanced for Developers SDK image
|
|
MQ_IMAGE_SDK ?=mq-sdk:$(MQ_VERSION)-$(ARCH)-$(BASE_IMAGE_TAG)
|
|
# MQ_IMAGE_GOLANG_SDK is the name and tag of the built MQ Advanced for Developers SDK image, plus Go tools
|
|
MQ_IMAGE_GOLANG_SDK ?=mq-golang-sdk:$(MQ_VERSION)-$(ARCH)-$(BASE_IMAGE_TAG)
|
|
# MQ_PACKAGES specifies the MQ packages to install. Defaults vary on base image.
|
|
MQ_PACKAGES ?= MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSeriesJRE*.rpm MQSeriesGSKit*.rpm MQSeriesMsg*.rpm MQSeriesSamples*.rpm MQSeriesAMS-*.rpm
|
|
|
|
###############################################################################
|
|
# Other variables
|
|
###############################################################################
|
|
# ARCH is the platform architecture (e.g. x86_64, ppc64le or s390x)
|
|
ARCH = $(shell uname -m)
|
|
# BASE_IMAGE_TAG is a normalized version of BASE_IMAGE, suitable for use in a Docker tag
|
|
BASE_IMAGE_TAG=$(subst /,-,$(subst :,-,$(BASE_IMAGE)))
|
|
MQ_IMAGE_DEVSERVER_BASE=mqadvanced-server-dev-base:$(MQ_VERSION)-$(ARCH)-$(BASE_IMAGE_TAG)
|
|
# Docker image name to use for JMS tests
|
|
DEV_JMS_IMAGE=mq-dev-jms-test:latest
|
|
# Variables for versioning
|
|
IMAGE_REVISION=$(shell git rev-parse HEAD)
|
|
IMAGE_SOURCE=$(shell git config --get remote.origin.url)
|
|
MQDEV=
|
|
|
|
|
|
ifneq (,$(findstring Microsoft,$(shell uname -r)))
|
|
DOWNLOADS_DIR=$(patsubst /mnt/c%,C:%,$(realpath ./downloads/))
|
|
else
|
|
DOWNLOADS_DIR=$(realpath ./downloads/)
|
|
endif
|
|
|
|
# Try to figure out which archive to use from the architecture
|
|
ifeq "$(ARCH)" "x86_64"
|
|
MQ_ARCHIVE_ARCH=X86-64
|
|
MQ_DEV_ARCH=x86-64
|
|
else ifeq "$(ARCH)" "ppc64le"
|
|
MQ_ARCHIVE_ARCH=LE_POWER
|
|
MQ_DEV_ARCH=ppcle
|
|
else ifeq "$(ARCH)" "s390x"
|
|
MQ_ARCHIVE_ARCH=SYSTEM_Z
|
|
MQ_DEV_ARCH=s390x
|
|
endif
|
|
# Archive names for IBM MQ Advanced for Developers
|
|
MQ_ARCHIVE_DEV_9.0.5.0=mqadv_dev905_linux_x86-64.tar.gz
|
|
MQ_ARCHIVE_DEV_9.1.0.0=mqadv_dev910_linux_$(MQ_DEV_ARCH).tar.gz
|
|
|
|
###############################################################################
|
|
# Build targets
|
|
###############################################################################
|
|
|
|
# Vendor Go dependencies for the Docker tests
|
|
test/docker/vendor:
|
|
cd test/docker && dep ensure -vendor-only
|
|
|
|
downloads/$(MQ_ARCHIVE_DEV):
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END)))
|
|
mkdir -p downloads
|
|
cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_ARCHIVE_DEV)
|
|
|
|
.PHONY: downloads
|
|
downloads: downloads/$(MQ_ARCHIVE_DEV)
|
|
|
|
.PHONY: check-prereqs
|
|
check-prereqs:
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Checking for prereqs"$(END)))
|
|
which buildah || (echo "Missing required program buildah" && exit 1)
|
|
which podman || (echo "Missing required program podman" && exit 1)
|
|
yum list | grep yum-utils || (echo "Missing required package yum-utils" && exit 1)
|
|
|
|
.PHONY: check-test-prereqs
|
|
check-prereqs:
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Checking for prereqs"$(END)))
|
|
which buildah || (echo "Missing required program buildah" && exit 1)
|
|
which docker || (echo "Missing required program docker" && exit 1)
|
|
|
|
.PHONY: test-advancedserver
|
|
test-advancedserver: check-test-prereqs test/docker/vendor
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_ADVANCEDSERVER) on $(shell docker --version)"$(END)))
|
|
buildah push $(MQ_IMAGE_ADVANCEDSERVER) docker-daemon:$(MQ_IMAGE_ADVANCEDSERVER)
|
|
docker tag docker.io/$(MQ_IMAGE_ADVANCEDSERVER) $(MQ_IMAGE_ADVANCEDSERVER)
|
|
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER) EXPECTED_LICENSE=Production go test $(TEST_OPTS_DOCKER)
|
|
|
|
|
|
.PHONY: test-devserver
|
|
test-devserver: check-test-prereqs test/docker/vendor
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_DEVSERVER) on $(shell docker --version)"$(END)))
|
|
buildah push $(MQ_IMAGE_DEVSERVER) docker-daemon:$(MQ_IMAGE_DEVSERVER)
|
|
docker tag docker.io/$(MQ_IMAGE_DEVSERVER) $(MQ_IMAGE_DEVSERVER)
|
|
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_DEVSERVER) EXPECTED_LICENSE=Developer DEV_JMS_IMAGE=$(DEV_JMS_IMAGE) go test -tags mqdev $(TEST_OPTS_DOCKER)
|
|
|
|
|
|
.PHONY: build-advancedserver
|
|
build-advancedserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE)
|
|
build-advancedserver: check-prereqs downloads/$(MQ_ARCHIVE) build-go-programs
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_ADVANCEDSERVER)"$(END)))
|
|
mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_ADVANCEDSERVER)" "$(MQ_VERSION)" "$(MQDEV)"
|
|
|
|
|
|
.PHONY: build-devserver
|
|
build-devserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE_DEV)
|
|
build-devserver: MQDEV=TRUE
|
|
build-devserver: MQ_PACKAGES=MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSeriesJRE*.rpm MQSeriesGSKit*.rpm MQSeriesMsg*.rpm MQSeriesSamples*.rpm MQSeriesAMS-*.rpm MQSeriesWeb-*.rpm
|
|
build-devserver: check-prereqs downloads/$(MQ_ARCHIVE_DEV) build-go-programs
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_DEVSERVER)"$(END)))
|
|
mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE_DEV)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_VERSION)" "$(MQDEV)"
|
|
mq-advanced-server-rhel/mqdev-buildah.sh "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_IMAGE_DEVSERVER)" "$(MQ_VERSION)"
|
|
|
|
|
|
.PHONY: build-mqgolang-sdk
|
|
build-mqgolang-sdk: check-prereqs downloads/$(MQ_SDK_ARCHIVE)
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Build mq-golang SDK"$(END)))
|
|
mq-advanced-server-rhel/mq-golang-sdk-buildah.sh "$(MQ_SDK_ARCHIVE)" "$(MQ_IMAGE_GOLANG_SDK)"
|
|
|
|
|
|
.PHONY: build-go-programs
|
|
build-go-programs: check-prereqs build-mqgolang-sdk
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Build go programs"$(END)))
|
|
IMAGE_REVISION=$(IMAGE_REVISION) IMAGE_SOURCE=$(IMAGE_SOURCE) mq-advanced-server-rhel/go-buildah.sh "$(MQ_IMAGE_GOLANG_SDK)" "$(MQDEV)"
|
|
|
|
.PHONY: build-devjmstest
|
|
build-devjmstest: check-test-prereqs
|
|
$(info $(SPACER)$(shell printf $(TITLE)"Build JMS tests for developer config"$(END)))
|
|
cd test/messaging && ./buildah.sh $(DEV_JMS_IMAGE)
|
|
buildah push $(DEV_JMS_IMAGE) docker-daemon:$(DEV_JMS_IMAGE)
|
|
docker tag docker.io/$(DEV_JMS_IMAGE) $(DEV_JMS_IMAGE)
|
|
|
|
include formatting.mk
|