Merge pull request #267 from arthurbarr/master

RHEL build uses redist client and RHEL minimal
This commit is contained in:
Rob Parker
2019-01-25 13:49:46 +00:00
committed by GitHub
5 changed files with 47 additions and 52 deletions

View File

@@ -1,4 +1,4 @@
# © Copyright IBM Corporation 2018 # © Copyright IBM Corporation 2018, 2019
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@@ -27,8 +27,8 @@ 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 # MQ_ARCHIVE_DEV is the name of the file, under the downloads directory, from which MQ Advanced
# for Developers can be installed # for Developers can be installed
MQ_ARCHIVE_DEV ?= $(MQ_ARCHIVE_DEV_$(MQ_VERSION)) 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 specifies the archive to use for the MQ redistributable client, which is used for building the golang programs.
MQ_SDK_ARCHIVE ?= $(MQ_ARCHIVE_DEV_$(MQ_VERSION)) MQ_SDK_ARCHIVE ?= $(MQ_VERSION)-IBM-MQC-Redist-LinuxX64.tar.gz
# Options to `go test` for the Docker tests # Options to `go test` for the Docker tests
TEST_OPTS_DOCKER ?= TEST_OPTS_DOCKER ?=
# MQ_IMAGE_ADVANCEDSERVER is the name and tag of the built MQ Advanced image # MQ_IMAGE_ADVANCEDSERVER is the name and tag of the built MQ Advanced image
@@ -78,7 +78,7 @@ endif
# Archive names for IBM MQ Advanced for Developers # 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.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 MQ_ARCHIVE_DEV_9.1.0.0=mqadv_dev910_linux_$(MQ_DEV_ARCH).tar.gz
MQ_ARCHIVE_DEV_9.1.1.0=mqadv_dev910_linux_$(MQ_DEV_ARCH).tar.gz MQ_ARCHIVE_DEV_9.1.1.0=mqadv_dev911_linux_$(MQ_DEV_ARCH).tar.gz
############################################################################### ###############################################################################
# Build targets # Build targets
@@ -113,9 +113,9 @@ downloads/$(MQ_ARCHIVE_DEV):
cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_ARCHIVE_DEV) cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_ARCHIVE_DEV)
downloads/$(MQ_SDK_ARCHIVE): downloads/$(MQ_SDK_ARCHIVE):
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END))) $(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced redistributable client "$(MQ_VERSION)$(END)))
mkdir -p downloads mkdir -p downloads
cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_SDK_ARCHIVE) cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/$(MQ_SDK_ARCHIVE)
.PHONY: downloads .PHONY: downloads
downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE) downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE)
@@ -133,7 +133,7 @@ check-prereqs:
yum list | grep yum-utils || (echo "Missing required package yum-utils" && exit 1) yum list | grep yum-utils || (echo "Missing required package yum-utils" && exit 1)
.PHONY: check-test-prereqs .PHONY: check-test-prereqs
check-prereqs: check-test-prereqs:
$(info $(SPACER)$(shell printf $(TITLE)"Checking for prereqs"$(END))) $(info $(SPACER)$(shell printf $(TITLE)"Checking for prereqs"$(END)))
which buildah || (echo "Missing required program buildah" && exit 1) which buildah || (echo "Missing required program buildah" && exit 1)
which docker || (echo "Missing required program docker" && exit 1) which docker || (echo "Missing required program docker" && exit 1)
@@ -155,14 +155,12 @@ test-devserver: check-test-prereqs test/docker/vendor
.PHONY: build-advancedserver .PHONY: build-advancedserver
build-advancedserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE)
build-advancedserver: check-prereqs downloads/$(MQ_ARCHIVE) build-go-programs-ex build-advancedserver: check-prereqs downloads/$(MQ_ARCHIVE) build-go-programs-ex
$(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_ADVANCEDSERVER)"$(END))) $(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_ADVANCEDSERVER)"$(END)))
sudo mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_ADVANCEDSERVER)" "$(MQ_VERSION)" "$(MQDEV)" sudo mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_ADVANCEDSERVER)" "$(MQ_VERSION)" "$(MQDEV)"
.PHONY: build-devserver .PHONY: build-devserver
build-devserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE_DEV)
build-devserver: MQDEV=TRUE 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: 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-ex build-devserver: check-prereqs downloads/$(MQ_ARCHIVE_DEV) build-go-programs-ex

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- mode: sh -*- # -*- mode: sh -*-
# © Copyright IBM Corporation 2018 # © Copyright IBM Corporation 2018, 2019
# #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,11 @@
# Builds and tests the golang programs used by the MQ image. # Builds and tests the golang programs used by the MQ image.
set -e set -ex
cd $GOPATH/src/github.com/ibm-messaging/mq-container/ # Handle a GOPATH with multiple entries (just choose the first one)
IFS=':' read -ra DIR <<< "$GOPATH"
cd ${DIR[0]}/src/github.com/ibm-messaging/mq-container/
# Build and test the Go code # Build and test the Go code
mkdir -p build mkdir -p build

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- mode: sh -*- # -*- mode: sh -*-
# © Copyright IBM Corporation 2018 # © Copyright IBM Corporation 2018, 2019
# #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,11 +35,11 @@ IMAGE_REVISION=${IMAGE_REVISION:="Not Applicable"}
IMAGE_SOURCE=${IMAGE_SOURCE:="Not Applicable"} IMAGE_SOURCE=${IMAGE_SOURCE:="Not Applicable"}
podman run \ podman run \
--volume ${PWD}:/go/src/github.com/ibm-messaging/mq-container/ \ --volume ${PWD}:/opt/app-root/src/go/src/github.com/ibm-messaging/mq-container/ \
--env GOPATH=/go \
--env IMAGE_REVISION="$IMAGE_REVISION" \ --env IMAGE_REVISION="$IMAGE_REVISION" \
--env IMAGE_SOURCE="$IMAGE_SOURCE" \ --env IMAGE_SOURCE="$IMAGE_SOURCE" \
--env MQDEV=${dev} \ --env MQDEV=${dev} \
--user $(id -u) \
--rm \ --rm \
${tag} \ ${tag} \
bash -c "cd /go/src/github.com/ibm-messaging/mq-container/ && ./mq-advanced-server-rhel/go-build.sh" bash -c "cd /opt/app-root/src/go/src/github.com/ibm-messaging/mq-container/ && ./mq-advanced-server-rhel/go-build.sh"

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- mode: sh -*- # -*- mode: sh -*-
# © Copyright IBM Corporation 2018 # © Copyright IBM Corporation 2018, 2019
# #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,13 +17,13 @@
# Build a RHEL image, using the buildah tool # Build a RHEL image, using the buildah tool
# Usage # Usage
# mq-buildah.sh ARCHIVEFILE PACKAGES # mq-buildah.sh ARCHIVE-NAME PACKAGES
set -x set -x
set -e set -e
function usage { function usage {
echo "Usage: $0 ARCHIVENAME PACKAGES TAG VERSION MQDevFlag" echo "Usage: $0 ARCHIVE-NAME PACKAGES TAG VERSION MQDevFlag"
exit 20 exit 20
} }
@@ -36,7 +36,8 @@ fi
# Setup MQ server working container # Setup MQ server working container
############################################################################### ###############################################################################
readonly ctr_mq=$(buildah from rhel7) # Use RHEL 7 minimal container (which doesn't include things like Python or Yum)
readonly ctr_mq=$(buildah from rhel7-minimal)
if [ -z "$ctr_mq" ] if [ -z "$ctr_mq" ]
then then
echo "ERROR: ctr_mq is empty. Check above output for errors" echo "ERROR: ctr_mq is empty. Check above output for errors"
@@ -60,13 +61,10 @@ readonly mqdev=$5
# Install MQ server # Install MQ server
############################################################################### ###############################################################################
groupadd --root ${mnt_mq} --system --gid 888 mqm # Use the Yum repositories configured on the host
useradd --root ${mnt_mq} --system --uid 888 --gid mqm mqm cp /etc/yum.repos.d/* ${mnt_mq}/etc/yum.repos.d/
usermod --root ${mnt_mq} -aG root mqm
usermod --root ${mnt_mq} -aG mqm root
# Install the packages required by MQ # Install the packages required by MQ
buildah run $ctr_mq -- yum install -y --setopt install_weak_deps=false --setopt=tsflags=nodocs --setopt=override_install_langs=en_US.utf8 \ yum install -y --installroot=${mnt_mq} --setopt install_weak_deps=false --setopt=tsflags=nodocs --setopt=override_install_langs=en_US.utf8 \
bash \ bash \
bc \ bc \
coreutils \ coreutils \
@@ -78,12 +76,20 @@ buildah run $ctr_mq -- yum install -y --setopt install_weak_deps=false --setopt=
passwd \ passwd \
procps-ng \ procps-ng \
sed \ sed \
shadow-utils \
tar \ tar \
util-linux util-linux \
which
groupadd --root ${mnt_mq} --system --gid 888 mqm
useradd --root ${mnt_mq} --system --uid 888 --gid mqm mqm
usermod --root ${mnt_mq} -aG root mqm
usermod --root ${mnt_mq} -aG mqm root
# Clean up cached files # Clean up cached files
buildah run $ctr_mq -- yum clean all yum clean --installroot=${mnt_mq} all
rm -rf ${mnt_mq}/var/cache/yum/* rm -rf ${mnt_mq}/var/cache/yum/*
rm -rf ${mnt_mq}/etc/yum.repos.d/*
# Install MQ server packages into the MQ builder image # Install MQ server packages into the MQ builder image
./mq-advanced-server-rhel/install-mq-rhel.sh ${ctr_mq} "${mnt_mq}" "${archive}" "${packages}" ./mq-advanced-server-rhel/install-mq-rhel.sh ${ctr_mq} "${mnt_mq}" "${archive}" "${packages}"

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- mode: sh -*- # -*- mode: sh -*-
# © Copyright IBM Corporation 2018 # © Copyright IBM Corporation 2018, 2019
# #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
set -ex set -ex
function usage { function usage {
echo "Usage: $0 ARCHIVENAME TAG" echo "Usage: $0 REDIST-ARCHIVE-NAME TAG"
exit 20 exit 20
} }
@@ -29,41 +29,30 @@ if [ "$#" -ne 2 ]; then
usage usage
fi fi
readonly mq_archive=downloads/$1 readonly mq_redist_archive=downloads/$1
readonly tag=$2 readonly tag=$2
# Use plain RHEL 7 container # Use Red Hat's Go toolset image as the base
# Note: Red Hat's devtools/go-toolset-7-rhel7 image doesn't allow use of 'root' readonly ctr_mq=$(buildah from devtools/go-toolset-7-rhel7)
# user required for installing the MQ SDK
readonly ctr_mq=$(buildah from rhel7)
if [ -z "$ctr_mq" ] if [ -z "$ctr_mq" ]
then then
echo "ERROR: ctr_mq is empty. Check above output for errors" echo "ERROR: ctr_mq is empty. Check above output for errors"
exit 50 exit 50
fi fi
readonly mnt_mq=$(buildah mount $ctr_mq) readonly mnt_mq_go=$(buildah mount $ctr_mq)
if [ -z "$mnt_mq" ] if [ -z "$mnt_mq_go" ]
then then
echo "ERROR: mnt_mq is empty. Check above output for errors" echo "ERROR: mnt_mq_go is empty. Check above output for errors"
exit 50 exit 50
fi fi
# Add mqm user # Install the MQ redistributable client (including header files) into the Go builder image
sudo groupadd --root $mnt_mq --system --gid 888 mqm mkdir -p ${mnt_mq_go}/opt/mqm
sudo useradd --root $mnt_mq --system --uid 888 --gid mqm mqm tar -xzf ${mq_redist_archive} -C ${mnt_mq_go}/opt/mqm
sudo usermod --root $mnt_mq -aG root mqm
sudo usermod --root $mnt_mq -aG mqm root
# Enable Yum repository for "optional" RPMs, which is needed for "golang"
buildah run ${ctr_mq} -- yum-config-manager --enable rhel-7-server-optional-rpms
# Install Go compiler
buildah run ${ctr_mq} -- yum install -y golang git gcc
# Install the MQ SDK into the Go builder image
./mq-advanced-server-rhel/install-mq-rhel.sh ${ctr_mq} "${mnt_mq}" "${mq_archive}" "MQSeriesRuntime-*.rpm MQSeriesSDK-*.rpm MQSeriesSamples*.rpm"
# Clean up Yum files # Clean up Yum files
buildah run ${ctr_mq} -- yum clean all --releasever 7 rm -rf ${mnt_mq_go}/etc/yum.repos.d/*
rm -rf ${mnt_mq}/var/cache/yum/*
buildah unmount ${ctr_mq} buildah unmount ${ctr_mq}
# Set environment variables for MQ/Go compilation # Set environment variables for MQ/Go compilation
buildah config \ buildah config \