Merge branch 'private-master' into UserExternal
This commit is contained in:
60
.travis.yml
60
.travis.yml
@@ -12,11 +12,10 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
# Temporarily removing dist tag as not supported by power build
|
dist: xenial
|
||||||
# dist: xenial
|
|
||||||
|
|
||||||
sudo: required
|
sudo: required
|
||||||
language: go
|
language: go
|
||||||
|
group: xeniallegacy
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- "1.13.15"
|
- "1.13.15"
|
||||||
@@ -24,6 +23,12 @@ go:
|
|||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- MAIN_BRANCH=private-master
|
||||||
|
- MQ_LTS_VERSION=9.2.0.1
|
||||||
|
- TAGCACHE_FILE=tagcache
|
||||||
|
|
||||||
go_import_path: "github.com/ibm-messaging/mq-container"
|
go_import_path: "github.com/ibm-messaging/mq-container"
|
||||||
|
|
||||||
# cache:
|
# cache:
|
||||||
@@ -39,6 +44,9 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_920_ARCHIVE_REPOSITORY_DEV_AMD64
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_920_ARCHIVE_REPOSITORY_DEV_AMD64
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
|
||||||
|
# CD Build
|
||||||
|
|
||||||
- stage: global-tag
|
- stage: global-tag
|
||||||
if: branch = private-master AND type != pull_request OR tag =~ ^release-candidate*
|
if: branch = private-master AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
name: "Generate Global Tag"
|
name: "Generate Global Tag"
|
||||||
@@ -80,6 +88,49 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
- PUSH_MANIFEST_ONLY=true
|
- PUSH_MANIFEST_ONLY=true
|
||||||
script: bash -e travis-build-scripts/run.sh
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
|
||||||
|
# LTS Build
|
||||||
|
|
||||||
|
- stage: global-tag
|
||||||
|
if: branch = private-master AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
|
name: "Generate Global Tag"
|
||||||
|
os: linux
|
||||||
|
env:
|
||||||
|
- LTS=true
|
||||||
|
- TAGCACHE_FILE=tagcache-lts
|
||||||
|
- MQ_VERSION=$MQ_LTS_VERSION
|
||||||
|
script: bash -e travis-build-scripts/global-tag.sh
|
||||||
|
- stage: build
|
||||||
|
if: branch = private-master OR tag =~ ^release-candidate*
|
||||||
|
name: "Multi-Arch AMD64 build"
|
||||||
|
os: linux
|
||||||
|
env:
|
||||||
|
- LTS=true
|
||||||
|
- TAGCACHE_FILE=tagcache-lts
|
||||||
|
- MQ_VERSION=$MQ_LTS_VERSION
|
||||||
|
- MQ_ARCHIVE_REPOSITORY=$MQ_9201_EUS_ARCHIVE_REPOSITORY_AMD64
|
||||||
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
- stage: build
|
||||||
|
if: branch = private-master OR tag =~ ^release-candidate*
|
||||||
|
name: "Multi-Arch S390X build"
|
||||||
|
os: linux-s390
|
||||||
|
env:
|
||||||
|
- LTS=true
|
||||||
|
- TAGCACHE_FILE=tagcache-lts
|
||||||
|
- MQ_VERSION=$MQ_LTS_VERSION
|
||||||
|
- TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
||||||
|
- MQ_ARCHIVE_REPOSITORY=$MQ_9201_EUS_ARCHIVE_REPOSITORY_S390X
|
||||||
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
- stage: push-manifest
|
||||||
|
if: branch = private-master AND type != pull_request OR tag =~ ^release-candidate*
|
||||||
|
name: "Push Manifest-list to registry"
|
||||||
|
env:
|
||||||
|
- LTS=true
|
||||||
|
- TAGCACHE_FILE=tagcache-lts
|
||||||
|
- MQ_VERSION=$MQ_LTS_VERSION
|
||||||
|
- PUSH_MANIFEST_ONLY=true
|
||||||
|
script: bash -e travis-build-scripts/run.sh
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- make install-build-deps
|
- make install-build-deps
|
||||||
- make install-credential-helper
|
- make install-credential-helper
|
||||||
@@ -91,6 +142,3 @@ before_script: echo nothing
|
|||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- make lint
|
- make lint
|
||||||
|
|
||||||
after_failure:
|
|
||||||
- ./travis-build-scripts/cleanup-cache.sh
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# Change log
|
# Change log
|
||||||
|
|
||||||
|
## 9.2.0.1-LTS (2020-12-04)
|
||||||
|
|
||||||
|
* Added support for MQ Long Term Support (production licensed only) in the mq-container
|
||||||
|
|
||||||
## 9.2.0.0 (2020-07-23)
|
## 9.2.0.0 (2020-07-23)
|
||||||
|
|
||||||
* Updated to [MQ version 9.2.0.0](https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.2.0/com.ibm.mq.pro.doc/q113110_.htm)
|
* Updated to [MQ version 9.2.0.0](https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.2.0/com.ibm.mq.pro.doc/q113110_.htm)
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ COPY pkg/ ./pkg
|
|||||||
COPY vendor/ ./vendor
|
COPY vendor/ ./vendor
|
||||||
ENV CGO_CFLAGS="-I/opt/mqm/inc/" \
|
ENV CGO_CFLAGS="-I/opt/mqm/inc/" \
|
||||||
CGO_LDFLAGS_ALLOW="-Wl,-rpath.*"
|
CGO_LDFLAGS_ALLOW="-Wl,-rpath.*"
|
||||||
|
ENV PATH="${PATH}:/opt/mqm/bin"
|
||||||
RUN go build -ldflags "-X \"main.ImageCreated=$(date --iso-8601=seconds)\" -X \"main.ImageRevision=$IMAGE_REVISION\" -X \"main.ImageSource=$IMAGE_SOURCE\" -X \"main.ImageTag=$IMAGE_TAG\"" ./cmd/runmqserver/
|
RUN go build -ldflags "-X \"main.ImageCreated=$(date --iso-8601=seconds)\" -X \"main.ImageRevision=$IMAGE_REVISION\" -X \"main.ImageSource=$IMAGE_SOURCE\" -X \"main.ImageTag=$IMAGE_TAG\"" ./cmd/runmqserver/
|
||||||
RUN go build ./cmd/chkmqready/
|
RUN go build ./cmd/chkmqready/
|
||||||
RUN go build ./cmd/chkmqhealthy/
|
RUN go build ./cmd/chkmqhealthy/
|
||||||
|
|||||||
47
Makefile
47
Makefile
@@ -45,8 +45,10 @@ TEST_OPTS_DOCKER ?=
|
|||||||
MQ_IMAGE_ADVANCEDSERVER ?=ibm-mqadvanced-server
|
MQ_IMAGE_ADVANCEDSERVER ?=ibm-mqadvanced-server
|
||||||
# MQ_IMAGE_DEVSERVER is the name of the built MQ Advanced for Developers image
|
# MQ_IMAGE_DEVSERVER is the name of the built MQ Advanced for Developers image
|
||||||
MQ_IMAGE_DEVSERVER ?=ibm-mqadvanced-server-dev
|
MQ_IMAGE_DEVSERVER ?=ibm-mqadvanced-server-dev
|
||||||
|
# MQ_MANIFEST_TAG is the tag to use for fat-manifest
|
||||||
|
MQ_MANIFEST_TAG ?= $(MQ_VERSION)$(LTS_TAG)
|
||||||
# MQ_TAG is the tag of the built MQ Advanced image & MQ Advanced for Developers image
|
# MQ_TAG is the tag of the built MQ Advanced image & MQ Advanced for Developers image
|
||||||
MQ_TAG ?=$(MQ_VERSION)-$(ARCH)
|
MQ_TAG ?= $(MQ_MANIFEST_TAG)-$(ARCH)
|
||||||
# COMMAND is the container command to run. "podman" or "docker"
|
# COMMAND is the container command to run. "podman" or "docker"
|
||||||
COMMAND ?=$(shell type -p podman 2>&1 >/dev/null && echo podman || echo docker)
|
COMMAND ?=$(shell type -p podman 2>&1 >/dev/null && echo podman || echo docker)
|
||||||
# MQ_DELIVERY_REGISTRY_HOSTNAME is a remote registry to push the MQ Image to (if required)
|
# MQ_DELIVERY_REGISTRY_HOSTNAME is a remote registry to push the MQ Image to (if required)
|
||||||
@@ -63,8 +65,8 @@ REGISTRY_USER ?=
|
|||||||
REGISTRY_PASS ?=
|
REGISTRY_PASS ?=
|
||||||
# ARCH is the platform architecture (e.g. amd64, ppc64le or s390x)
|
# ARCH is the platform architecture (e.g. amd64, ppc64le or s390x)
|
||||||
ARCH ?= $(if $(findstring x86_64,$(shell uname -m)),amd64,$(shell uname -m))
|
ARCH ?= $(if $(findstring x86_64,$(shell uname -m)),amd64,$(shell uname -m))
|
||||||
# Tag to use for fat-manifest
|
# LTS is a boolean value to enable/disable LTS container build
|
||||||
MQ_MANIFEST_TAG=$(MQ_VERSION)
|
LTS ?= false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Other variables
|
# Other variables
|
||||||
@@ -109,6 +111,22 @@ else ifeq "$(ARCH)" "s390x"
|
|||||||
MQ_ARCHIVE_ARCH=S390X
|
MQ_ARCHIVE_ARCH=S390X
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# LTS_TAG is the tag modifier for an LTS container build
|
||||||
|
LTS_TAG=
|
||||||
|
ifeq "$(LTS)" "true"
|
||||||
|
ifneq "$(LTS_TAG_OVERRIDE)" "$(EMPTY)"
|
||||||
|
LTS_TAG=$(LTS_TAG_OVERRIDE)
|
||||||
|
else
|
||||||
|
LTS_TAG=-lts
|
||||||
|
endif
|
||||||
|
MQ_ARCHIVE:=$(MQ_VERSION)-IBM-MQ-Advanced-Non-Install-Linux$(MQ_ARCHIVE_ARCH).tar.gz
|
||||||
|
MQ_DELIVERY_REGISTRY_NAMESPACE:=$(MQ_DELIVERY_REGISTRY_NAMESPACE)$(LTS_TAG)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(findstring release-candidate,$(TRAVIS_TAG)))
|
||||||
|
MQ_DELIVERY_REGISTRY_NAMESPACE=release-candidates
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq "$(MQ_DELIVERY_REGISTRY_NAMESPACE)" "$(EMPTY)"
|
ifneq "$(MQ_DELIVERY_REGISTRY_NAMESPACE)" "$(EMPTY)"
|
||||||
MQ_DELIVERY_REGISTRY_FULL_PATH=$(MQ_DELIVERY_REGISTRY_HOSTNAME)/$(MQ_DELIVERY_REGISTRY_NAMESPACE)
|
MQ_DELIVERY_REGISTRY_FULL_PATH=$(MQ_DELIVERY_REGISTRY_HOSTNAME)/$(MQ_DELIVERY_REGISTRY_NAMESPACE)
|
||||||
else
|
else
|
||||||
@@ -119,7 +137,7 @@ endif
|
|||||||
|
|
||||||
ifneq "$(RELEASE)" "$(EMPTY)"
|
ifneq "$(RELEASE)" "$(EMPTY)"
|
||||||
EXTRA_LABELS=--label release=$(RELEASE)
|
EXTRA_LABELS=--label release=$(RELEASE)
|
||||||
MQ_MANIFEST_TAG=$(MQ_VERSION)-$(RELEASE)-$(RELEASE_CANDIDATE)
|
MQ_MANIFEST_TAG=$(MQ_VERSION)-$(RELEASE)$(LTS_TAG)-$(RELEASE_CANDIDATE)
|
||||||
MQ_TAG=$(MQ_MANIFEST_TAG)-$(ARCH)
|
MQ_TAG=$(MQ_MANIFEST_TAG)-$(ARCH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -131,9 +149,10 @@ ifeq "$(GIT_COMMIT)" "$(EMPTY)"
|
|||||||
GIT_COMMIT=$(shell git rev-parse --short HEAD)
|
GIT_COMMIT=$(shell git rev-parse --short HEAD)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(shell [ ! -z $(TRAVIS) ] && [ "$(TRAVIS_PULL_REQUEST)" = "false" ] && [ "$(TRAVIS_BRANCH)" = "private-master" ] && echo true), true)
|
ifeq ($(shell [ ! -z $(TRAVIS) ] && [ "$(TRAVIS_PULL_REQUEST)" = "false" ] && [ "$(TRAVIS_BRANCH)" = "$(MAIN_BRANCH)" ] && echo true), true)
|
||||||
RELEASE_TAG=$(shell [ -z "$(RELEASE)" ] || echo "-$(RELEASE)-$(RELEASE_CANDIDATE)")
|
RELEASE_TAG=$(shell [ -z "$(RELEASE)" ] || echo "-$(RELEASE)")
|
||||||
MQ_MANIFEST_TAG=$(MQ_VERSION)$(RELEASE_TAG).$(TIMESTAMPFLAT).$(GIT_COMMIT)
|
RELEASE_CANDIDATE_TAG=$(shell [ -z "$(RELEASE_CANDIDATE)" ] || echo "-$(RELEASE_CANDIDATE)")
|
||||||
|
MQ_MANIFEST_TAG=$(MQ_VERSION)$(RELEASE_TAG)$(LTS_TAG).$(TIMESTAMPFLAT).$(GIT_COMMIT)$(RELEASE_CANDIDATE_TAG)
|
||||||
MQ_TAG=$(MQ_MANIFEST_TAG)-$(ARCH)
|
MQ_TAG=$(MQ_MANIFEST_TAG)-$(ARCH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -205,9 +224,9 @@ downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE)
|
|||||||
|
|
||||||
.PHONY: cache-mq-tag
|
.PHONY: cache-mq-tag
|
||||||
cache-mq-tag:
|
cache-mq-tag:
|
||||||
@$(shell printf "MQ_MANIFEST_TAG_CACHED=$(MQ_MANIFEST_TAG)\n" > $(PATH_TO_MQ_TAG_CACHE))
|
@printf "MQ_MANIFEST_TAG_CACHED=$(MQ_MANIFEST_TAG)\n" | tee $(PATH_TO_MQ_TAG_CACHE)
|
||||||
@$(shell printf "MQ_TAG_CACHED_amd64=$(MQ_MANIFEST_TAG)-amd64\n" >> $(PATH_TO_MQ_TAG_CACHE))
|
@printf "MQ_TAG_CACHED_amd64=$(MQ_MANIFEST_TAG)-amd64\n" | tee -a $(PATH_TO_MQ_TAG_CACHE)
|
||||||
@$(shell printf "MQ_TAG_CACHED_s390x=$(MQ_MANIFEST_TAG)-s390x\n" >> $(PATH_TO_MQ_TAG_CACHE))
|
@printf "MQ_TAG_CACHED_s390x=$(MQ_MANIFEST_TAG)-s390x\n" | tee -a $(PATH_TO_MQ_TAG_CACHE)
|
||||||
|
|
||||||
# Vendor Go dependencies for the Docker tests
|
# Vendor Go dependencies for the Docker tests
|
||||||
test/docker/vendor:
|
test/docker/vendor:
|
||||||
@@ -398,16 +417,20 @@ pull-devserver:
|
|||||||
.PHONY: push-manifest
|
.PHONY: push-manifest
|
||||||
push-manifest: build-skopeo-container
|
push-manifest: build-skopeo-container
|
||||||
$(info $(SPACER)$(shell printf $(TITLE)"** Determining the image digests **"$(END)))
|
$(info $(SPACER)$(shell printf $(TITLE)"** Determining the image digests **"$(END)))
|
||||||
|
ifneq "$(LTS)" "true"
|
||||||
$(eval MQ_IMAGE_DEVSERVER_AMD64_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux --override-arch s390x inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_DEVSERVER_AMD64) | jq -r .Digest))
|
$(eval MQ_IMAGE_DEVSERVER_AMD64_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux --override-arch s390x inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_DEVSERVER_AMD64) | jq -r .Digest))
|
||||||
$(eval MQ_IMAGE_DEVSERVER_S390X_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_DEVSERVER_S390X) | jq -r .Digest))
|
$(eval MQ_IMAGE_DEVSERVER_S390X_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_DEVSERVER_S390X) | jq -r .Digest))
|
||||||
$(eval MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_ADVANCEDSERVER_AMD64) | jq -r .Digest))
|
|
||||||
$(eval MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_ADVANCEDSERVER_S390X) | jq -r .Digest))
|
|
||||||
$(info $(shell printf "** Determined the built $(MQ_IMAGE_DEVSERVER_AMD64) has a digest of $(MQ_IMAGE_DEVSERVER_AMD64_DIGEST)**"$(END)))
|
$(info $(shell printf "** Determined the built $(MQ_IMAGE_DEVSERVER_AMD64) has a digest of $(MQ_IMAGE_DEVSERVER_AMD64_DIGEST)**"$(END)))
|
||||||
$(info $(shell printf "** Determined the built $(MQ_IMAGE_DEVSERVER_S390X) has a digest of $(MQ_IMAGE_DEVSERVER_S390X_DIGEST)**"$(END)))
|
$(info $(shell printf "** Determined the built $(MQ_IMAGE_DEVSERVER_S390X) has a digest of $(MQ_IMAGE_DEVSERVER_S390X_DIGEST)**"$(END)))
|
||||||
|
endif
|
||||||
|
$(eval MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_ADVANCEDSERVER_AMD64) | jq -r .Digest))
|
||||||
|
$(eval MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST=$(shell $(COMMAND) run skopeo:latest --override-os linux inspect --creds $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) docker://$(MQ_IMAGE_ADVANCEDSERVER_S390X) | jq -r .Digest))
|
||||||
$(info $(shell printf "** Determined the built $(MQ_IMAGE_ADVANCEDSERVER_AMD64) has a digest of $(MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST)**"$(END)))
|
$(info $(shell printf "** Determined the built $(MQ_IMAGE_ADVANCEDSERVER_AMD64) has a digest of $(MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST)**"$(END)))
|
||||||
$(info $(shell printf "** Determined the built $(MQ_IMAGE_ADVANCEDSERVER_S390X) has a digest of $(MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST)**"$(END)))
|
$(info $(shell printf "** Determined the built $(MQ_IMAGE_ADVANCEDSERVER_S390X) has a digest of $(MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST)**"$(END)))
|
||||||
|
ifneq "$(LTS)" "true"
|
||||||
$(info $(shell printf "** Calling script to create fat-manifest for $(MQ_IMAGE_DEVSERVER_MANIFEST)**"$(END)))
|
$(info $(shell printf "** Calling script to create fat-manifest for $(MQ_IMAGE_DEVSERVER_MANIFEST)**"$(END)))
|
||||||
echo $(shell ./travis-build-scripts/create-manifest-list.sh -r $(MQ_DELIVERY_REGISTRY_HOSTNAME) -n $(MQ_DELIVERY_REGISTRY_NAMESPACE) -i $(MQ_IMAGE_DEVSERVER) -t $(MQ_MANIFEST_TAG_CACHED) -u $(MQ_ARCHIVE_REPOSITORY_USER) -p $(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -d "$(MQ_IMAGE_DEVSERVER_AMD64_DIGEST) $(MQ_IMAGE_DEVSERVER_S390X_DIGEST)" $(END))
|
echo $(shell ./travis-build-scripts/create-manifest-list.sh -r $(MQ_DELIVERY_REGISTRY_HOSTNAME) -n $(MQ_DELIVERY_REGISTRY_NAMESPACE) -i $(MQ_IMAGE_DEVSERVER) -t $(MQ_MANIFEST_TAG_CACHED) -u $(MQ_ARCHIVE_REPOSITORY_USER) -p $(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -d "$(MQ_IMAGE_DEVSERVER_AMD64_DIGEST) $(MQ_IMAGE_DEVSERVER_S390X_DIGEST)" $(END))
|
||||||
|
endif
|
||||||
$(info $(shell printf "** Calling script to create fat-manifest for $(MQ_IMAGE_ADVANCEDSERVER_MANIFEST)**"$(END)))
|
$(info $(shell printf "** Calling script to create fat-manifest for $(MQ_IMAGE_ADVANCEDSERVER_MANIFEST)**"$(END)))
|
||||||
echo $(shell ./travis-build-scripts/create-manifest-list.sh -r $(MQ_DELIVERY_REGISTRY_HOSTNAME) -n $(MQ_DELIVERY_REGISTRY_NAMESPACE) -i $(MQ_IMAGE_ADVANCEDSERVER) -t $(MQ_MANIFEST_TAG_CACHED) -u $(MQ_ARCHIVE_REPOSITORY_USER) -p $(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -d "$(MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST) $(MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST)" $(END))
|
echo $(shell ./travis-build-scripts/create-manifest-list.sh -r $(MQ_DELIVERY_REGISTRY_HOSTNAME) -n $(MQ_DELIVERY_REGISTRY_NAMESPACE) -i $(MQ_IMAGE_ADVANCEDSERVER) -t $(MQ_MANIFEST_TAG_CACHED) -u $(MQ_ARCHIVE_REPOSITORY_USER) -p $(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -d "$(MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST) $(MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST)" $(END))
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ibm-messaging/mq-container/internal/command"
|
"github.com/ibm-messaging/mq-container/internal/command"
|
||||||
|
"github.com/ibm-messaging/mq-container/internal/mqversion"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -50,7 +51,7 @@ func logImageTag() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func logMQVersion() {
|
func logMQVersion() {
|
||||||
mqVersion, _, err := command.Run("dspmqver", "-b", "-f", "2")
|
mqVersion, err := mqversion.Get()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error Getting MQ version: %v", strings.TrimSuffix(string(mqVersion), "\n"))
|
log.Printf("Error Getting MQ version: %v", strings.TrimSuffix(string(mqVersion), "\n"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
###########################################################################################################################################################
|
###########################################################################################################################################################
|
||||||
|
|
||||||
# MQ_VERSION is the fully qualified MQ version number to build
|
# MQ_VERSION is the fully qualified MQ version number to build
|
||||||
MQ_VERSION=9.2.0.0
|
MQ_VERSION ?= 9.2.0.0
|
||||||
|
|
||||||
###########################################################################################################################################################
|
###########################################################################################################################################################
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ You will also need a [Red Hat Account](https://access.redhat.com) to be able to
|
|||||||
|
|
||||||
## Building a production image
|
## Building a production image
|
||||||
|
|
||||||
|
From MQ 9.2.X, the MQ container adds support for MQ Long Term Support (LTS) **production licensed** releases.
|
||||||
|
|
||||||
|
### MQ Continuous Delivery (CD)
|
||||||
|
|
||||||
This procedure works for building the MQ Continuous Delivery release, on `amd64`, `ppc64le` and `s390x` architectures.
|
This procedure works for building the MQ Continuous Delivery release, on `amd64`, `ppc64le` and `s390x` architectures.
|
||||||
|
|
||||||
1. Create a `downloads` directory in the root of this repository
|
1. Create a `downloads` directory in the root of this repository
|
||||||
@@ -20,7 +24,7 @@ This procedure works for building the MQ Continuous Delivery release, on `amd64`
|
|||||||
3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
||||||
4. Run `make build-advancedserver`
|
4. Run `make build-advancedserver`
|
||||||
|
|
||||||
> **Warning**: Note that from MQ 9.2.X, the MQ container build uses a 'No-Install' MQ Package, available under `IBM MQ V9.2.x Continuous Delivery Release components eAssembly, part no. CJ7CNML`
|
> **Warning**: Note that from MQ 9.2.X CD, the MQ container build uses a 'No-Install' MQ Package, available under `IBM MQ V9.2.x Continuous Delivery Release components eAssembly, part no. CJ7CNML`
|
||||||
|
|
||||||
If you have an MQ archive file with a different file name, you can specify a particular file (which must be in the `downloads` directory). You should also specify the MQ version, so that the resulting image is tagged correctly, for example:
|
If you have an MQ archive file with a different file name, you can specify a particular file (which must be in the `downloads` directory). You should also specify the MQ version, so that the resulting image is tagged correctly, for example:
|
||||||
|
|
||||||
@@ -28,6 +32,23 @@ If you have an MQ archive file with a different file name, you can specify a par
|
|||||||
MQ_ARCHIVE=mq-1.2.3.4.tar.gz MQ_VERSION=1.2.3.4 make build-advancedserver
|
MQ_ARCHIVE=mq-1.2.3.4.tar.gz MQ_VERSION=1.2.3.4 make build-advancedserver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### MQ Long Term Support (LTS)
|
||||||
|
|
||||||
|
This procedure works for building the MQ Long Term Support release, on `amd64`, `ppc64le` and `s390x` architectures.
|
||||||
|
|
||||||
|
1. Create a `downloads` directory in the root of this repository
|
||||||
|
2. Download MQ from [IBM Passport Advantage](https://www.ibm.com/software/passportadvantage/) or [IBM Fix Central](https://www.ibm.com/support/fixcentral), and place the downloaded file (for example, `9.2.0.1-IBM-MQ-Advanced-Non-Install-LinuxX86.tar.gz`) in the `downloads` directory
|
||||||
|
3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
||||||
|
4. Run `LTS=true make build-advancedserver`
|
||||||
|
|
||||||
|
> **Warning**: Note that from MQ 9.2 LTS, the MQ container build uses a 'No-Install' MQ Package, available under `IBM MQ V9.2 Long Term Support Release components eAssembly, part no. CXXXXXX`
|
||||||
|
|
||||||
|
If you have an MQ archive file with a different file name, you can specify a particular file (which must be in the `downloads` directory). You should also specify the MQ version, so that the resulting image is tagged correctly, for example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
MQ_ARCHIVE=mq-1.2.3.4.tar.gz MQ_VERSION=1.2.3.4 LTS=true make build-advancedserver
|
||||||
|
```
|
||||||
|
|
||||||
## Building a developer image
|
## Building a developer image
|
||||||
|
|
||||||
Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials.
|
||||||
|
|||||||
51
internal/mqversion/mqversion.go
Normal file
51
internal/mqversion/mqversion.go
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
© Copyright IBM Corporation 2020
|
||||||
|
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mqversion
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/ibm-messaging/mq-container/internal/command"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get will return the current MQ version
|
||||||
|
func Get() (string, error) {
|
||||||
|
mqVersion, _, err := command.Run("dspmqver", "-b", "-f", "2")
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Error Getting MQ version: %v", err)
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(mqVersion), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare returns an integer comparing two MQ version strings lexicographically. The result will be 0 if currentVersion==checkVersion, -1 if currentVersion < checkVersion, and +1 if currentVersion > checkVersion
|
||||||
|
func Compare(checkVersion string) (int, error) {
|
||||||
|
currentVersion, err := Get()
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
// trim any suffix from MQ version x.x.x.x
|
||||||
|
currentVersion = currentVersion[0:7]
|
||||||
|
if currentVersion < checkVersion {
|
||||||
|
return -1, nil
|
||||||
|
} else if currentVersion == checkVersion {
|
||||||
|
return 0, nil
|
||||||
|
} else if currentVersion > checkVersion {
|
||||||
|
return 1, nil
|
||||||
|
}
|
||||||
|
return 0, fmt.Errorf("Failed to compare MQ versions")
|
||||||
|
}
|
||||||
55
internal/mqversion/mqversion_test.go
Normal file
55
internal/mqversion/mqversion_test.go
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
© Copyright IBM Corporation 2020
|
||||||
|
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mqversion
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestCompareLower(t *testing.T) {
|
||||||
|
checkVersion := "9.9.9.9"
|
||||||
|
mqVersionCheck, err := Compare(checkVersion)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to compare MQ versions: %v", err)
|
||||||
|
}
|
||||||
|
if mqVersionCheck != -1 {
|
||||||
|
t.Errorf("MQ version compare result failed. Expected -1, Got %v", mqVersionCheck)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCompareHigher(t *testing.T) {
|
||||||
|
checkVersion := "1.1.1.1"
|
||||||
|
mqVersionCheck, err := Compare(checkVersion)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to compare MQ versions: %v", err)
|
||||||
|
}
|
||||||
|
if mqVersionCheck != 1 {
|
||||||
|
t.Errorf("MQ version compare result failed. Expected 1, Got %v", mqVersionCheck)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCompareEqual(t *testing.T) {
|
||||||
|
checkVersion, err := Get()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to get current MQ version: %v", err)
|
||||||
|
}
|
||||||
|
mqVersionCheck, err := Compare(checkVersion)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to compare MQ versions: %v", err)
|
||||||
|
}
|
||||||
|
if mqVersionCheck != 0 {
|
||||||
|
t.Errorf("MQ version compare result failed. Expected 0, Got %v", mqVersionCheck)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,19 +16,21 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" = "private-master" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
|
if [ "$TRAVIS_BRANCH" = "$MAIN_BRANCH" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
|
||||||
echo 'Retrieving global tagcache' && echo -en 'travis_fold:start:tag-cache-retrieve\\r'
|
echo 'Retrieving global tagcache' && echo -en 'travis_fold:start:tag-cache-retrieve\\r'
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache -l ./.tagcache --check
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --check
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache -l ./.tagcache --get
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --get
|
||||||
echo -en 'travis_fold:end:tag-cache-retrieve\\r'
|
echo -en 'travis_fold:end:tag-cache-retrieve\\r'
|
||||||
fi
|
fi
|
||||||
echo 'Building Developer JMS test image...' && echo -en 'travis_fold:start:build-devjmstest\\r'
|
if [ "$LTS" != true ] ; then
|
||||||
make build-devjmstest
|
echo 'Building Developer JMS test image...' && echo -en 'travis_fold:start:build-devjmstest\\r'
|
||||||
echo -en 'travis_fold:end:build-devjmstest\\r'
|
make build-devjmstest
|
||||||
echo 'Building Developer image...' && echo -en 'travis_fold:start:build-devserver\\r'
|
echo -en 'travis_fold:end:build-devjmstest\\r'
|
||||||
make build-devserver
|
echo 'Building Developer image...' && echo -en 'travis_fold:start:build-devserver\\r'
|
||||||
echo -en 'travis_fold:end:build-devserver\\r'
|
make build-devserver
|
||||||
if [ "$BUILD_ALL" = true ] ; then
|
echo -en 'travis_fold:end:build-devserver\\r'
|
||||||
|
fi
|
||||||
|
if [ "$BUILD_ALL" = true ] || [ "$LTS" = true ] ; then
|
||||||
if [[ "$ARCH" = "amd64" || "$ARCH" = "s390x" ]] ; then
|
if [[ "$ARCH" = "amd64" || "$ARCH" = "s390x" ]] ; then
|
||||||
echo 'Building Production image...' && echo -en 'travis_fold:start:build-advancedserver\\r'
|
echo 'Building Production image...' && echo -en 'travis_fold:start:build-advancedserver\\r'
|
||||||
make build-advancedserver
|
make build-advancedserver
|
||||||
|
|||||||
@@ -15,6 +15,5 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
echo 'Cleaning up remote cache' && echo -en 'travis_fold:start:cleanup\\r'
|
echo 'Cleaning up remote cache' && echo -en 'travis_fold:start:cleanup\\r'
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache --delete
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} --delete
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache --delete-namespace
|
|
||||||
echo -en 'travis_fold:end:cleanup\\r'
|
echo -en 'travis_fold:end:cleanup\\r'
|
||||||
|
|||||||
@@ -20,5 +20,5 @@ echo 'Cacheing MQ tag...' && echo -en 'travis_fold:start:build-cache-mq-tag\\r'
|
|||||||
make cache-mq-tag
|
make cache-mq-tag
|
||||||
echo -en 'travis_fold:end:cache-mq-tag\\r'
|
echo -en 'travis_fold:end:cache-mq-tag\\r'
|
||||||
echo 'Caching tagcache for future stages' && echo -en 'travis_fold:start:tag-cache\\r'
|
echo 'Caching tagcache for future stages' && echo -en 'travis_fold:start:tag-cache\\r'
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache -l ./.tagcache --upload
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --upload
|
||||||
echo -en 'travis_fold:end:tag-cache\\r'
|
echo -en 'travis_fold:end:tag-cache\\r'
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ if [ "$(uname -m)" = "x86_64" ] ; then export ARCH="amd64" ; else export ARCH=$(
|
|||||||
|
|
||||||
if [ "$PUSH_MANIFEST_ONLY" = true ] ; then
|
if [ "$PUSH_MANIFEST_ONLY" = true ] ; then
|
||||||
echo 'Retrieving remote tagcache' && echo -en 'travis_fold:start:retrieve-tag-cache\\r'
|
echo 'Retrieving remote tagcache' && echo -en 'travis_fold:start:retrieve-tag-cache\\r'
|
||||||
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/tagcache -l ./.tagcache --get
|
./travis-build-scripts/artifact-util.sh -c ${CACHE_PATH} -u ${REPOSITORY_USER} -p ${REPOSITORY_CREDENTIAL} -f cache/${TAGCACHE_FILE} -l ./.tagcache --get
|
||||||
echo -en 'travis_fold:end:retrieve-tag-cache\\r'
|
echo -en 'travis_fold:end:retrieve-tag-cache\\r'
|
||||||
make push-manifest
|
make push-manifest
|
||||||
./travis-build-scripts/cleanup-cache.sh
|
./travis-build-scripts/cleanup-cache.sh
|
||||||
@@ -42,3 +42,7 @@ if [ "$BUILD_ALL" = true ] ; then
|
|||||||
./travis-build-scripts/push.sh developer
|
./travis-build-scripts/push.sh developer
|
||||||
./travis-build-scripts/push.sh production
|
./travis-build-scripts/push.sh production
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$LTS" = true ] ; then
|
||||||
|
./travis-build-scripts/push.sh production
|
||||||
|
fi
|
||||||
|
|||||||
@@ -16,10 +16,12 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo 'Testing Developer image...' && echo -en 'travis_fold:start:test-devserver\\r'
|
if [ "$LTS" != true ] ; then
|
||||||
make test-devserver
|
echo 'Testing Developer image...' && echo -en 'travis_fold:start:test-devserver\\r'
|
||||||
echo -en 'travis_fold:end:test-devserver\\r'
|
make test-devserver
|
||||||
if [ "$BUILD_ALL" = true ] ; then
|
echo -en 'travis_fold:end:test-devserver\\r'
|
||||||
|
fi
|
||||||
|
if [ "$BUILD_ALL" = true ] || [ "$LTS" = true ] ; then
|
||||||
if [[ "$ARCH" = "amd64" || "$ARCH" = "s390x" ]] ; then
|
if [[ "$ARCH" = "amd64" || "$ARCH" = "s390x" ]] ; then
|
||||||
echo 'Testing Production image...' && echo -en 'travis_fold:start:test-advancedserver\\r'
|
echo 'Testing Production image...' && echo -en 'travis_fold:start:test-advancedserver\\r'
|
||||||
make test-advancedserver
|
make test-advancedserver
|
||||||
|
|||||||
Reference in New Issue
Block a user