Pipeline changes for Entitled Registry (#38)
* Added makefile targets/variables to pull mq archive from remote * Updated makefile and travis build for multi arch dev/prod builds * Updated build deps to use arch specific dep * Removed glide for dependency management * Removed `MQ_SDK_ARCHIVE` download target * Make ARCH overridable in makefile * Only run golden path test on Power and Z builds * Only run gosec on amd64 build * Increased go to 1.12 in travis
This commit is contained in:
committed by
GitHub Enterprise
parent
c83aeb17c0
commit
1f4528d597
88
.travis.yml
88
.travis.yml
@@ -18,63 +18,73 @@ sudo: required
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- "1.11"
|
- "1.12"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
go_import_path: "github.com/ibm-messaging/mq-container"
|
go_import_path: "github.com/ibm-messaging/mq-container"
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- downloads
|
- downloads
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- RELEASE=""
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
- stage: build and test
|
- stage: build
|
||||||
|
name: "Basic build"
|
||||||
|
if: branch != private-master
|
||||||
|
os: linux
|
||||||
|
script: bash -e build-scripts/build.sh
|
||||||
|
- if: branch = private-master
|
||||||
|
name: "Multi-Arch ADM64 build"
|
||||||
|
os: linux
|
||||||
env:
|
env:
|
||||||
- BASE_IMAGE=ubuntu:16.04
|
- BUILD_ALL=true
|
||||||
- DOCKER_DOWNGRADE="echo nothing to be done"
|
- MQ_ARCHIVE_REPOSITORY=$MQ_ARCHIVE_REPOSITORY_AMD64
|
||||||
# TEMPORARY removal of Docker 1.12 test, due to errors from apt repository
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_ARCHIVE_REPOSITORY_DEV_AMD64
|
||||||
# - if: type IN (pull_request) OR tag IS present
|
script: bash -e build-scripts/build.sh
|
||||||
# env:
|
- if: branch = private-master
|
||||||
# - BASE_IMAGE=ubuntu:16.04
|
name: "Multi-Arch PPC64LE build"
|
||||||
# - DOCKER_DOWNGRADE="docker save -o images.tar mqadvanced-server-dev mq-dev-jms-test &&
|
os: linux-ppc64le
|
||||||
# sudo apt-get autoremove -y docker-ce &&
|
env:
|
||||||
# curl -fsSL \"https://apt.dockerproject.org/gpg\" | sudo apt-key add - &&
|
- BUILD_ALL=true
|
||||||
# sudo apt-add-repository \"deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main\" &&
|
- TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
||||||
# sudo apt-get update &&
|
- MQ_ARCHIVE_REPOSITORY=$MQ_ARCHIVE_REPOSITORY_PPC64LE
|
||||||
# sudo apt-get install docker-engine=1.12.6-0~ubuntu-$(lsb_release -cs) &&
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_ARCHIVE_REPOSITORY_DEV_PPC64LE
|
||||||
# docker load -q -i images.tar &&
|
script: bash -e build-scripts/build.sh
|
||||||
# export DOCKER_API_VERSION=\"1.24\""
|
- if: branch = private-master
|
||||||
|
name: "Multi-Arch S390X build"
|
||||||
|
os: linux-s390
|
||||||
|
env:
|
||||||
|
- BUILD_ALL=true
|
||||||
|
- TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
|
||||||
|
- MQ_ARCHIVE_REPOSITORY=$MQ_ARCHIVE_REPOSITORY_S390X
|
||||||
|
- MQ_ARCHIVE_REPOSITORY_DEV=$MQ_ARCHIVE_REPOSITORY_DEV_S390X
|
||||||
|
script: bash -e build-scripts/build.sh
|
||||||
|
# - stage: deploy
|
||||||
|
# name: "Pre-release deploy"
|
||||||
|
# if: tag =~ ^pre-release*
|
||||||
|
# deploy:
|
||||||
|
# provider: script
|
||||||
|
# script: bash -e build-scripts/release.sh staging
|
||||||
|
# - name: "Production release deploy"
|
||||||
|
# if: tag =~ ^release-production*
|
||||||
|
# deploy:
|
||||||
|
# provider: script
|
||||||
|
# script: bash -e build-scripts/release.sh production
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- ./install-build-deps-ubuntu.sh
|
- make install-build-deps
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- echo nothing
|
- echo nothing
|
||||||
|
|
||||||
before_script:
|
before_script: echo nothing
|
||||||
- echo 'Downloading Go dependencies...' && echo -en 'travis_fold:start:deps\\r'
|
|
||||||
- make deps
|
|
||||||
- echo -en 'travis_fold:end:deps\\r'
|
|
||||||
- echo 'Building Developer image...' && echo -en 'travis_fold:start:build-devserver\\r'
|
|
||||||
- make build-devserver
|
|
||||||
- echo -en 'travis_fold:end:build-devserver\\r'
|
|
||||||
- echo 'Building Developer JMS test image...' && echo -en 'travis_fold:start:build-devjmstest\\r'
|
|
||||||
- make build-devjmstest
|
|
||||||
- echo -en 'travis_fold:end:build-devjmstest\\r'
|
|
||||||
|
|
||||||
script:
|
|
||||||
- echo 'Downgrading Docker (if necessary)...' && echo -en 'travis_fold:start:docker-downgrade\\r'
|
|
||||||
- eval "$DOCKER_DOWNGRADE"
|
|
||||||
- echo -en 'travis_fold:end:docker-downgrade\\r'
|
|
||||||
- echo 'Testing Developer image...' && echo -en 'travis_fold:start:test-devserver\\r'
|
|
||||||
- make test-devserver
|
|
||||||
- echo -en 'travis_fold:end:test-devserver\\r'
|
|
||||||
- echo 'Running gosec scan...' && echo -en 'travis_fold:start:gosec-scan\\r'
|
|
||||||
- make gosec
|
|
||||||
- echo -en 'travis_fold:end:gosec-scan\\r'
|
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- make lint
|
- make lint
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ RUN go vet ./cmd/... ./internal/...
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
FROM $BASE_IMAGE:$BASE_TAG AS mq-server
|
FROM $BASE_IMAGE:$BASE_TAG AS mq-server
|
||||||
# The MQ packages to install - see install-mq.sh for default value
|
# The MQ packages to install - see install-mq.sh for default value
|
||||||
ARG MQ_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/mqadv_dev912_linux_x86-64.tar.gz"
|
ARG MQ_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/mqadv_dev913_linux_x86-64.tar.gz"
|
||||||
ARG MQ_PACKAGES="MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSeriesJRE*.rpm MQSeriesGSKit*.rpm MQSeriesMsg*.rpm MQSeriesSamples*.rpm MQSeriesWeb*.rpm MQSeriesAMS-*.rpm"
|
ARG MQ_PACKAGES="MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSeriesJRE*.rpm MQSeriesGSKit*.rpm MQSeriesMsg*.rpm MQSeriesSamples*.rpm MQSeriesWeb*.rpm MQSeriesAMS-*.rpm"
|
||||||
#ARG MQ_PACKAGES="ibmmq-server ibmmq-java ibmmq-jre ibmmq-gskit ibmmq-msg-.* ibmmq-samples ibmmq-web ibmmq-ams"
|
#ARG MQ_PACKAGES="ibmmq-server ibmmq-java ibmmq-jre ibmmq-gskit ibmmq-msg-.* ibmmq-samples ibmmq-web ibmmq-ams"
|
||||||
ARG MQM_UID=888
|
ARG MQM_UID=888
|
||||||
|
|||||||
97
Makefile
97
Makefile
@@ -16,9 +16,18 @@
|
|||||||
# Conditional variables - you can override the values of these variables from
|
# Conditional variables - you can override the values of these variables from
|
||||||
# the command line
|
# the command line
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
# RELEASE shows what release of the container code has been built
|
||||||
|
RELEASE ?=
|
||||||
# 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.1.3.0
|
MQ_VERSION ?= 9.1.3.0
|
||||||
# RELEASE shows what release of the container code has been built
|
# MQ_ARCHIVE_REPOSITORY is a remote repository from which to pull the MQ_ARCHIVE (if required)
|
||||||
|
MQ_ARCHIVE_REPOSITORY ?=
|
||||||
|
# MQ_ARCHIVE_REPOSITORY_DEV is a remote repository from which to pull the MQ_ARCHIVE_DEV (if required)
|
||||||
|
MQ_ARCHIVE_REPOSITORY_DEV ?=
|
||||||
|
# MQ_ARCHIVE_REPOSITORY_USER is the user for the remote repository (if required)
|
||||||
|
MQ_ARCHIVE_REPOSITORY_USER ?=
|
||||||
|
# MQ_ARCHIVE_REPOSITORY_CREDENTIAL is the password/API key for the remote repository (if required)
|
||||||
|
MQ_ARCHIVE_REPOSITORY_CREDENTIAL ?=
|
||||||
# MQ_ARCHIVE is the name of the file, under the downloads directory, from which MQ Advanced can
|
# 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
|
# be installed. The default value is derived from MQ_VERSION, BASE_IMAGE and architecture
|
||||||
# Does not apply to MQ Advanced for Developers.
|
# Does not apply to MQ Advanced for Developers.
|
||||||
@@ -42,10 +51,20 @@ MQ_PACKAGES ?=MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSer
|
|||||||
MQM_UID ?= 888
|
MQM_UID ?= 888
|
||||||
# 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 ?=
|
||||||
|
# MQ_DELIVERY_REGISTRY_NAMESPACE is the namespace/path on the delivery registry (if required)
|
||||||
|
MQ_DELIVERY_REGISTRY_NAMESPACE ?=
|
||||||
|
# MQ_DELIVERY_REGISTRY_USER is the user for the remote registry (if required)
|
||||||
|
MQ_DELIVERY_REGISTRY_USER ?=
|
||||||
|
# MQ_DELIVERY_REGISTRY_CREDENTIAL is the password/API key for the remote registry (if required)
|
||||||
|
MQ_DELIVERY_REGISTRY_CREDENTIAL ?=
|
||||||
# REGISTRY_USER is the username used to login to the Red Hat registry
|
# REGISTRY_USER is the username used to login to the Red Hat registry
|
||||||
REGISTRY_USER ?=
|
REGISTRY_USER ?=
|
||||||
# REGISTRY_PASS is the password used to login to the Red Hat registry
|
# REGISTRY_PASS is the password used to login to the Red Hat registry
|
||||||
REGISTRY_PASS ?=
|
REGISTRY_PASS ?=
|
||||||
|
# ARCH is the platform architecture (e.g. amd64, ppc64le or s390x)
|
||||||
|
ARCH ?= $(if $(findstring x86_64,$(shell uname -m)),amd64,$(shell uname -m))
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Other variables
|
# Other variables
|
||||||
@@ -53,8 +72,6 @@ REGISTRY_PASS ?=
|
|||||||
GO_PKG_DIRS = ./cmd ./internal ./test
|
GO_PKG_DIRS = ./cmd ./internal ./test
|
||||||
MQ_ARCHIVE_TYPE=LINUX
|
MQ_ARCHIVE_TYPE=LINUX
|
||||||
MQ_ARCHIVE_DEV_PLATFORM=linux
|
MQ_ARCHIVE_DEV_PLATFORM=linux
|
||||||
# ARCH is the platform architecture (e.g. amd64, ppc64le or s390x)
|
|
||||||
ARCH=$(if $(findstring x86_64,$(shell uname -m)),amd64,$(shell uname -m))
|
|
||||||
# BUILD_SERVER_CONTAINER is the name of the web server container used at build time
|
# BUILD_SERVER_CONTAINER is the name of the web server container used at build time
|
||||||
BUILD_SERVER_CONTAINER=build-server
|
BUILD_SERVER_CONTAINER=build-server
|
||||||
# NUM_CPU is the number of CPUs available to Docker. Used to control how many
|
# NUM_CPU is the number of CPUs available to Docker. Used to control how many
|
||||||
@@ -99,6 +116,20 @@ MQ_ARCHIVE_DEV_9.1.1.0=mqadv_dev911_$(MQ_ARCHIVE_DEV_PLATFORM)_$(MQ_DEV_ARCH).ta
|
|||||||
MQ_ARCHIVE_DEV_9.1.2.0=mqadv_dev912_$(MQ_ARCHIVE_DEV_PLATFORM)_$(MQ_DEV_ARCH).tar.gz
|
MQ_ARCHIVE_DEV_9.1.2.0=mqadv_dev912_$(MQ_ARCHIVE_DEV_PLATFORM)_$(MQ_DEV_ARCH).tar.gz
|
||||||
MQ_ARCHIVE_DEV_9.1.3.0=mqadv_dev913_$(MQ_ARCHIVE_DEV_PLATFORM)_$(MQ_DEV_ARCH).tar.gz
|
MQ_ARCHIVE_DEV_9.1.3.0=mqadv_dev913_$(MQ_ARCHIVE_DEV_PLATFORM)_$(MQ_DEV_ARCH).tar.gz
|
||||||
|
|
||||||
|
ifneq "$(RELEASE)" "$(EMPTY)"
|
||||||
|
MQ_IMAGE_FULL_RELEASE_NAME=ibm-mqadvanced-server:$(MQ_VERSION)-$(RELEASE)-$(ARCH)
|
||||||
|
MQ_IMAGE_DEV_FULL_RELEASE_NAME=ibm-mqadvanced-server-dev:$(MQ_VERSION)-$(RELEASE)-$(ARCH)
|
||||||
|
else
|
||||||
|
MQ_IMAGE_FULL_RELEASE_NAME=ibm-mqadvanced-server:$(MQ_VERSION)-$(ARCH)
|
||||||
|
MQ_IMAGE_DEV_FULL_RELEASE_NAME=ibm-mqadvanced-server-dev:$(MQ_VERSION)-$(ARCH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq "$(MQ_DELIVERY_REGISTRY_NAMESPACE)" "$(EMPTY)"
|
||||||
|
MQ_DELIVERY_REGISTRY_FULL_PATH=$(MQ_DELIVERY_REGISTRY_HOSTNAME)/$(MQ_DELIVERY_REGISTRY_NAMESPACE)
|
||||||
|
else
|
||||||
|
MQ_DELIVERY_REGISTRY_FULL_PATH=$(MQ_DELIVERY_REGISTRY_HOSTNAME)
|
||||||
|
endif
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Build targets
|
# Build targets
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -122,12 +153,18 @@ incubating: build-explorer
|
|||||||
downloads/$(MQ_ARCHIVE_DEV):
|
downloads/$(MQ_ARCHIVE_DEV):
|
||||||
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END)))
|
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(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_ARCHIVE_DEV)
|
ifneq "$(MQ_ARCHIVE_REPOSITORY_DEV)" "$(EMPTY)"
|
||||||
|
curl -u $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -X GET "$(MQ_ARCHIVE_REPOSITORY_DEV)" -o downloads/$(MQ_ARCHIVE_DEV)
|
||||||
|
else
|
||||||
|
curl -L https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_ARCHIVE_DEV) -o downloads/$(MQ_ARCHIVE_DEV)
|
||||||
|
endif
|
||||||
|
|
||||||
downloads/$(MQ_SDK_ARCHIVE):
|
downloads/$(MQ_ARCHIVE):
|
||||||
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END)))
|
$(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced "$(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)
|
ifneq "$(MQ_ARCHIVE_REPOSITORY)" "$(EMPTY)"
|
||||||
|
curl -u $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -X GET "$(MQ_ARCHIVE_REPOSITORY)" -o downloads/$(MQ_ARCHIVE)
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: downloads
|
.PHONY: downloads
|
||||||
downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE)
|
downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE)
|
||||||
@@ -156,7 +193,7 @@ build-devjmstest:
|
|||||||
test-devserver: test/docker/vendor
|
test-devserver: test/docker/vendor
|
||||||
$(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_DEVSERVER):$(MQ_TAG) on $(shell docker --version)"$(END)))
|
$(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_DEVSERVER):$(MQ_TAG) on $(shell docker --version)"$(END)))
|
||||||
docker inspect $(MQ_IMAGE_DEVSERVER):$(MQ_TAG)
|
docker inspect $(MQ_IMAGE_DEVSERVER):$(MQ_TAG)
|
||||||
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_DEVSERVER):$(MQ_TAG) EXPECTED_LICENSE=Developer DEV_JMS_IMAGE=$(DEV_JMS_IMAGE) IBMJRE=true go test -parallel $(NUM_CPU) -tags mqdev $(TEST_OPTS_DOCKER)
|
cd test/docker && TEST_IMAGE=$(MQ_IMAGE_DEVSERVER):$(MQ_TAG) EXPECTED_LICENSE=Developer DEV_JMS_IMAGE=$(DEV_JMS_IMAGE) IBMJRE=true go test -parallel $(NUM_CPU) -tags mqdev $(TEST_OPTS_DOCKER)
|
||||||
|
|
||||||
.PHONY: coverage
|
.PHONY: coverage
|
||||||
coverage:
|
coverage:
|
||||||
@@ -270,6 +307,7 @@ log-build-vars:
|
|||||||
@echo ARCH=$(ARCH)
|
@echo ARCH=$(ARCH)
|
||||||
@echo MQ_VERSION=$(MQ_VERSION)
|
@echo MQ_VERSION=$(MQ_VERSION)
|
||||||
@echo MQ_ARCHIVE=$(MQ_ARCHIVE)
|
@echo MQ_ARCHIVE=$(MQ_ARCHIVE)
|
||||||
|
@echo MQ_ARCHIVE_DEV=$(MQ_ARCHIVE_DEV)
|
||||||
@echo MQ_IMAGE_DEVSERVER=$(MQ_IMAGE_DEVSERVER)
|
@echo MQ_IMAGE_DEVSERVER=$(MQ_IMAGE_DEVSERVER)
|
||||||
@echo MQ_IMAGE_ADVANCEDSERVER=$(MQ_IMAGE_ADVANCEDSERVER)
|
@echo MQ_IMAGE_ADVANCEDSERVER=$(MQ_IMAGE_ADVANCEDSERVER)
|
||||||
@echo COMMAND=$(COMMAND)
|
@echo COMMAND=$(COMMAND)
|
||||||
@@ -284,15 +322,52 @@ log-build-env: log-build-vars
|
|||||||
|
|
||||||
include formatting.mk
|
include formatting.mk
|
||||||
|
|
||||||
|
.PHONY: pull-mq-archive
|
||||||
|
pull-mq-archive:
|
||||||
|
curl -u $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -X GET "$(MQ_ARCHIVE_REPOSITORY)" -o downloads/$(MQ_ARCHIVE)
|
||||||
|
|
||||||
|
.PHONY: pull-mq-archive-dev
|
||||||
|
pull-mq-archive-dev:
|
||||||
|
curl -u $(MQ_ARCHIVE_REPOSITORY_USER):$(MQ_ARCHIVE_REPOSITORY_CREDENTIAL) -X GET "$(MQ_ARCHIVE_REPOSITORY_DEV)" -o downloads/$(MQ_ARCHIVE_DEV)
|
||||||
|
|
||||||
|
.PHONY: push-advancedserver
|
||||||
|
push-advancedserver:
|
||||||
|
$(info $(SPACER)$(shell printf $(TITLE)"Push production image to $(MQ_DELIVERY_REGISTRY_FULL_PATH)"$(END)))
|
||||||
|
docker login $(MQ_DELIVERY_REGISTRY_HOSTNAME) -u $(MQ_DELIVERY_REGISTRY_USER) -p $(MQ_DELIVERY_REGISTRY_CREDENTIAL)
|
||||||
|
docker tag $(MQ_IMAGE_ADVANCEDSERVER)\:$(MQ_TAG) $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_FULL_RELEASE_NAME)
|
||||||
|
docker push $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_FULL_RELEASE_NAME)
|
||||||
|
|
||||||
|
.PHONY: push-devserver
|
||||||
|
push-devserver:
|
||||||
|
$(info $(SPACER)$(shell printf $(TITLE)"Push developer image to $(MQ_DELIVERY_REGISTRY_FULL_PATH)"$(END)))
|
||||||
|
echo $(ARCH)
|
||||||
|
docker login $(MQ_DELIVERY_REGISTRY_HOSTNAME) -u $(MQ_DELIVERY_REGISTRY_USER) -p $(MQ_DELIVERY_REGISTRY_CREDENTIAL)
|
||||||
|
docker tag $(MQ_IMAGE_DEVSERVER)\:$(MQ_TAG) $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_DEV_FULL_RELEASE_NAME)
|
||||||
|
docker push $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_DEV_FULL_RELEASE_NAME)
|
||||||
|
|
||||||
|
.PHONY: pull-advancedserver
|
||||||
|
pull-advancedserver:
|
||||||
|
$(info $(SPACER)$(shell printf $(TITLE)"Pull production image from $(MQ_DELIVERY_REGISTRY_FULL_PATH)"$(END)))
|
||||||
|
docker login $(MQ_DELIVERY_REGISTRY_HOSTNAME) -u $(MQ_DELIVERY_REGISTRY_USER) -p $(MQ_DELIVERY_REGISTRY_CREDENTIAL)
|
||||||
|
docker pull $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_FULL_RELEASE_NAME)
|
||||||
|
docker tag $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_FULL_RELEASE_NAME) $(MQ_IMAGE_FULL_RELEASE_NAME)
|
||||||
|
|
||||||
|
.PHONY: pull-devserver
|
||||||
|
pull-devserver:
|
||||||
|
$(info $(SPACER)$(shell printf $(TITLE)"Push developer image to $(MQ_DELIVERY_REGISTRY_FULL_PATH)"$(END)))
|
||||||
|
docker login $(MQ_DELIVERY_REGISTRY_HOSTNAME) -u $(MQ_DELIVERY_REGISTRY_USER) -p $(MQ_DELIVERY_REGISTRY_CREDENTIAL)
|
||||||
|
docker pull $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_DEV_FULL_RELEASE_NAME)
|
||||||
|
docker tag $(MQ_DELIVERY_REGISTRY_FULL_PATH)/$(MQ_IMAGE_DEV_FULL_RELEASE_NAME) $(MQ_IMAGE_DEV_FULL_RELEASE_NAME)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -rf ./coverage
|
rm -rf ./coverage
|
||||||
rm -rf ./build
|
rm -rf ./build
|
||||||
rm -rf ./deps
|
rm -rf ./deps
|
||||||
|
|
||||||
.PHONY: deps
|
.PHONY: install-build-deps
|
||||||
deps:
|
install-build-deps:
|
||||||
glide install --strip-vendor
|
ARCH=$(ARCH) ./install-build-deps.sh
|
||||||
|
|
||||||
.PHONY: build-cov
|
.PHONY: build-cov
|
||||||
build-cov:
|
build-cov:
|
||||||
|
|||||||
37
build-scripts/build.sh
Executable file
37
build-scripts/build.sh
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# © Copyright IBM Corporation 2019
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo 'Downgrading Docker (if necessary)...' && echo -en 'travis_fold:start:docker-downgrade\\r'
|
||||||
|
eval "$DOCKER_DOWNGRADE"
|
||||||
|
echo -en 'travis_fold:end:docker-downgrade\\r'
|
||||||
|
echo 'Building Developer JMS test image...' && echo -en 'travis_fold:start:build-devjmstest\\r'
|
||||||
|
make build-devjmstest
|
||||||
|
echo -en 'travis_fold:end:build-devjmstest\\r'
|
||||||
|
if [ "$BUILD_ALL" = true ] ; then
|
||||||
|
echo 'Building Developer image...' && echo -en 'travis_fold:start:build-devserver\\r'
|
||||||
|
make build-devserver
|
||||||
|
echo -en 'travis_fold:end:build-devserver\\r'
|
||||||
|
echo 'Building Production image...' && echo -en 'travis_fold:start:build-advancedserver\\r'
|
||||||
|
make build-advancedserver
|
||||||
|
echo -en 'travis_fold:end:build-advancedserver\\r'
|
||||||
|
else
|
||||||
|
echo 'Building Developer image...' && echo -en 'travis_fold:start:build-devserver\\r'
|
||||||
|
make build-devserver
|
||||||
|
echo -en 'travis_fold:end:build-devserver\\r'
|
||||||
|
fi
|
||||||
|
./build-scripts/test.sh
|
||||||
34
glide.yaml → build-scripts/push-dev.sh
Normal file → Executable file
34
glide.yaml → build-scripts/push-dev.sh
Normal file → Executable file
@@ -1,4 +1,6 @@
|
|||||||
# © Copyright IBM Corporation 2017, 2019
|
#!/bin/bash
|
||||||
|
|
||||||
|
# © Copyright IBM Corporation 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.
|
||||||
@@ -12,19 +14,17 @@
|
|||||||
# 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.
|
||||||
|
|
||||||
package: github.com/ibm-messaging/mq-container
|
set -e
|
||||||
license: Apache-2.0
|
|
||||||
excludeDirs:
|
if [ ! -z $1 ]; then
|
||||||
- build
|
export ARCH=$1
|
||||||
- coverage
|
fi
|
||||||
- test
|
|
||||||
import:
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
||||||
- package: golang.org/x/sys/unix
|
echo Not pushing as we are a pull request
|
||||||
- package: github.com/prometheus/client_golang
|
exit 0
|
||||||
version: 0.8.0
|
fi
|
||||||
- package: github.com/ibm-messaging/mq-golang
|
|
||||||
version: 2.0.0
|
echo 'Pushing Developer image...' && echo -en 'travis_fold:start:push-devserver\\r'
|
||||||
- package: github.com/genuinetools/amicontained
|
make push-devserver
|
||||||
version: 0.4.0
|
echo -en 'travis_fold:end:push-devserver\\r'
|
||||||
- package: software.sslmate.com/src/go-pkcs12
|
|
||||||
commit: 6e380ad96778cc63c6ea17649a9b74224bceafe9
|
|
||||||
30
build-scripts/push-prod.sh
Executable file
30
build-scripts/push-prod.sh
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# © Copyright IBM Corporation 2019
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -z $1 ]; then
|
||||||
|
export ARCH=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
|
||||||
|
echo Not pushing as we are a pull request
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'Pushing Production image...' && echo -en 'travis_fold:start:push-advancedserver\\r'
|
||||||
|
make push-advancedserver
|
||||||
|
echo -en 'travis_fold:end:push-advancedserver\\r'
|
||||||
96
build-scripts/release.sh
Executable file
96
build-scripts/release.sh
Executable file
@@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# © Copyright IBM Corporation 2019
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# staging or production
|
||||||
|
TYPE=""
|
||||||
|
MANIFEST_FILE=manifest-9.1.4.yaml
|
||||||
|
|
||||||
|
# set type of release
|
||||||
|
if [ ! -z $1 ]; then
|
||||||
|
case "$1" in
|
||||||
|
staging) TYPE=$1
|
||||||
|
;;
|
||||||
|
production) TYPE=$1
|
||||||
|
;;
|
||||||
|
*) echo "echo Release type ( staging | production ) must passed to release.sh"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "Release type ( staging | production ) must passed to release.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ TYPE = "staging" ]; then
|
||||||
|
# push developer image to pre-release registry
|
||||||
|
./build-scripts/push-dev.sh amd64
|
||||||
|
./build-scripts/push-dev.sh ppc64le
|
||||||
|
./build-scripts/push-dev.sh s390x
|
||||||
|
|
||||||
|
# staging registry
|
||||||
|
export MQ_DELIVERY_REGISTRY_HOSTNAME=$MQ_STAGING_REGISTRY
|
||||||
|
export MQ_DELIVERY_REGISTRY_USER=$MQ_STAGING_REGISTRY_USER
|
||||||
|
export MQ_DELIVERY_REGISTRY_CREDENTIAL=$MQ_STAGING_REGISTRY_CREDENTIAL
|
||||||
|
|
||||||
|
# push production image to staging registy
|
||||||
|
./build-scripts/push-prod.sh amd64
|
||||||
|
./build-scripts/push-prod.sh ppc64le
|
||||||
|
./build-scripts/push-prod.sh s390x
|
||||||
|
|
||||||
|
elif [ TYPE = "production" ]; then
|
||||||
|
# pull developer image from pre-release registry
|
||||||
|
make pull-devserver
|
||||||
|
# pull production image from staging
|
||||||
|
export MQ_DELIVERY_REGISTRY_HOSTNAME=$MQ_STAGING_REGISTRY
|
||||||
|
export MQ_DELIVERY_REGISTRY_USER=$MQ_STAGING_REGISTRY_USER
|
||||||
|
export MQ_DELIVERY_REGISTRY_CREDENTIAL=$MQ_STAGING_REGISTRY_CREDENTIAL
|
||||||
|
make pull-advancedserver
|
||||||
|
|
||||||
|
# release developer images with fat manifests
|
||||||
|
# dockerhub
|
||||||
|
export MQ_DELIVERY_REGISTRY_HOSTNAME=ibmcom
|
||||||
|
export MQ_DELIVERY_REGISTRY_NAMESPACE=mq
|
||||||
|
export MQ_DELIVERY_REGISTRY_USER=$MQ_DOCKERHUB_REGISTRY_USER
|
||||||
|
export MQ_DELIVERY_REGISTRY_CREDENTIAL=$MQ_DOCKERHUB_REGISTRY_CREDENTIAL
|
||||||
|
# UNCOMMENT WHEN FINISHED TESTING
|
||||||
|
# ./build-scripts/push-dev.sh amd64
|
||||||
|
# ./build-scripts/push-dev.sh ppc64le
|
||||||
|
# ./build-scripts/push-dev.sh s390x
|
||||||
|
|
||||||
|
docker login --username $MQ_DOCKERHUB_REGISTRY_USER --password $MQ_DOCKERHUB_REGISTRY_CREDENTIAL
|
||||||
|
# ./manifest-tool-linux-amd64 push from-spec manifests/dockerhub/$MANIFEST_FILE
|
||||||
|
# ./manifest-tool-linux-amd64 push from-spec manifests/dockerhub/manifest-latest.yaml
|
||||||
|
|
||||||
|
# dockerstore
|
||||||
|
export MQ_DELIVERY_REGISTRY_HOSTNAME=ibmcorp
|
||||||
|
export MQ_DELIVERY_REGISTRY_NAMESPACE=""
|
||||||
|
# ./build-scripts/push-dev.sh amd64
|
||||||
|
# ./build-scripts/push-dev.sh ppc64le
|
||||||
|
# ./build-scripts/push-dev.sh s390x
|
||||||
|
|
||||||
|
# docker login --username $MQ_DOCKERHUB_REGISTRY_USER --password $MQ_DOCKERHUB_REGISTRY_CREDENTIAL
|
||||||
|
# ./manifest-tool-linux-amd64 push from-spec manifests/dockerstore/$MANIFEST_FILE
|
||||||
|
|
||||||
|
# release production image
|
||||||
|
export MQ_DELIVERY_REGISTRY_HOSTNAME=$MQ_PRODUCTION_REGISTRY
|
||||||
|
export MQ_DELIVERY_REGISTRY_USER=$MQ_PRODUCTION_REGISTRY_USER
|
||||||
|
export MQ_DELIVERY_REGISTRY_CREDENTIAL=$MQ_PRODUCTION_REGISTRY_CREDENTIAL
|
||||||
|
# ./build-scripts/push-prod.sh amd64
|
||||||
|
# ./build-scripts/push-prod.sh ppc64le
|
||||||
|
# ./build-scripts/push-prod.sh s390x
|
||||||
|
fi
|
||||||
37
build-scripts/test.sh
Executable file
37
build-scripts/test.sh
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# © Copyright IBM Corporation 2019
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo 'Testing Developer image...' && echo -en 'travis_fold:start:test-devserver\\r'
|
||||||
|
make test-devserver
|
||||||
|
echo -en 'travis_fold:end:test-devserver\\r'
|
||||||
|
if [ "$BUILD_ALL" = true ] ; then
|
||||||
|
echo 'Testing Production image...' && echo -en 'travis_fold:start:test-advancedserver\\r'
|
||||||
|
make test-advancedserver
|
||||||
|
echo -en 'travis_fold:end:test-advancedserver\\r'
|
||||||
|
fi
|
||||||
|
echo 'Running gosec scan...' && echo -en 'travis_fold:start:gosec-scan\\r'
|
||||||
|
if [ "$ARCH" = "amd64" ] ; then
|
||||||
|
make gosec
|
||||||
|
else
|
||||||
|
echo "Gosec not available on ppc64le/s390x...skipping gosec scan"
|
||||||
|
fi
|
||||||
|
echo -en 'travis_fold:end:gosec-scan\\r'
|
||||||
|
if [ "$BUILD_ALL" = true ] ; then
|
||||||
|
./build-scripts/push-dev.sh
|
||||||
|
./build-scripts/push-prod.sh
|
||||||
|
fi
|
||||||
57
glide.lock
generated
57
glide.lock
generated
@@ -1,57 +0,0 @@
|
|||||||
hash: 6ebd5fb1c39729378c7256da6f312e9699bff1ddff9941d3c8c1ba785e22acfd
|
|
||||||
updated: 2019-05-21T10:38:01.227081+01:00
|
|
||||||
imports:
|
|
||||||
- name: github.com/beorn7/perks
|
|
||||||
version: 3a771d992973f24aa725d07868b467d1ddfceafb
|
|
||||||
subpackages:
|
|
||||||
- quantile
|
|
||||||
- name: github.com/genuinetools/amicontained
|
|
||||||
version: fcae88544f0212fbb1e20699c41566655b68679b
|
|
||||||
subpackages:
|
|
||||||
- container
|
|
||||||
- name: github.com/golang/protobuf
|
|
||||||
version: 70b3af33377e7aa25ae42977bed93cc6b90f0373
|
|
||||||
subpackages:
|
|
||||||
- proto
|
|
||||||
- name: github.com/ibm-messaging/mq-golang
|
|
||||||
version: 1b2a2ad95ba3c555944be28097d392c27bda4071
|
|
||||||
subpackages:
|
|
||||||
- ibmmq
|
|
||||||
- mqmetric
|
|
||||||
- name: github.com/matttproud/golang_protobuf_extensions
|
|
||||||
version: c12348ce28de40eed0136aa2b644d0ee0650e56c
|
|
||||||
subpackages:
|
|
||||||
- pbutil
|
|
||||||
- name: github.com/prometheus/client_golang
|
|
||||||
version: c5b7fccd204277076155f10851dad72b76a49317
|
|
||||||
subpackages:
|
|
||||||
- prometheus
|
|
||||||
- name: github.com/prometheus/client_model
|
|
||||||
version: 5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f
|
|
||||||
subpackages:
|
|
||||||
- go
|
|
||||||
- name: github.com/prometheus/common
|
|
||||||
version: 7600349dcfe1abd18d72d3a1770870d9800a7801
|
|
||||||
subpackages:
|
|
||||||
- expfmt
|
|
||||||
- internal/bitbucket.org/ww/goautoneg
|
|
||||||
- model
|
|
||||||
- name: github.com/prometheus/procfs
|
|
||||||
version: ae68e2d4c00fed4943b5f6698d504a5fe083da8a
|
|
||||||
subpackages:
|
|
||||||
- internal/util
|
|
||||||
- nfs
|
|
||||||
- xfs
|
|
||||||
- name: github.com/syndtr/gocapability
|
|
||||||
version: 33e07d32887e1e06b7c025f27ce52f62c7990bc0
|
|
||||||
subpackages:
|
|
||||||
- capability
|
|
||||||
- name: golang.org/x/sys
|
|
||||||
version: 1b2967e3c290b7c545b3db0deeda16e9be4f98a2
|
|
||||||
subpackages:
|
|
||||||
- unix
|
|
||||||
- name: software.sslmate.com/src/go-pkcs12
|
|
||||||
version: 6e380ad96778cc63c6ea17649a9b74224bceafe9
|
|
||||||
subpackages:
|
|
||||||
- internal/rc2
|
|
||||||
testImports: []
|
|
||||||
@@ -19,9 +19,8 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
curl https://glide.sh/get | sh
|
sudo curl -Lo /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.1/dep-linux-$ARCH
|
||||||
sudo curl -Lo /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64
|
|
||||||
sudo chmod +x /usr/local/bin/dep
|
sudo chmod +x /usr/local/bin/dep
|
||||||
|
|
||||||
go get -u golang.org/x/lint/golint
|
go get -u golang.org/x/lint/golint
|
||||||
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin 2.0.0
|
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin 2.0.0 || echo "Gosec not installed. Platform may not be supported."
|
||||||
@@ -380,6 +380,78 @@ func runContainerOneShotWithVolume(t *testing.T, cli *client.Client, bind string
|
|||||||
return rc, out
|
return rc, out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func startMultiVolumeQueueManager(t *testing.T, cli *client.Client, dataVol bool, qmsharedlogs string, qmshareddata string, env []string) (error, string, string) {
|
||||||
|
id := strconv.FormatInt(time.Now().UnixNano(), 10)
|
||||||
|
qmdata := createVolume(t, cli, id)
|
||||||
|
containerConfig := container.Config{
|
||||||
|
Image: imageName(),
|
||||||
|
Env: env,
|
||||||
|
}
|
||||||
|
var hostConfig container.HostConfig
|
||||||
|
|
||||||
|
if !dataVol {
|
||||||
|
hostConfig = container.HostConfig{}
|
||||||
|
} else if qmsharedlogs == "" && qmshareddata == "" {
|
||||||
|
hostConfig = getHostConfig(t, 1, "", "", qmdata.Name)
|
||||||
|
} else if qmsharedlogs == "" {
|
||||||
|
hostConfig = getHostConfig(t, 2, "", qmshareddata, qmdata.Name)
|
||||||
|
} else if qmshareddata == "" {
|
||||||
|
hostConfig = getHostConfig(t, 3, qmsharedlogs, "", qmdata.Name)
|
||||||
|
} else {
|
||||||
|
hostConfig = getHostConfig(t, 4, qmsharedlogs, qmshareddata, qmdata.Name)
|
||||||
|
}
|
||||||
|
networkingConfig := network.NetworkingConfig{}
|
||||||
|
qm, err := cli.ContainerCreate(context.Background(), &containerConfig, &hostConfig, &networkingConfig, t.Name()+id)
|
||||||
|
if err != nil {
|
||||||
|
return err, "", ""
|
||||||
|
}
|
||||||
|
startContainer(t, cli, qm.ID)
|
||||||
|
|
||||||
|
return nil, qm.ID, qmdata.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func getHostConfig(t *testing.T, mounts int, qmsharedlogs string, qmshareddata string, qmdata string) container.HostConfig {
|
||||||
|
|
||||||
|
var hostConfig container.HostConfig
|
||||||
|
|
||||||
|
switch mounts {
|
||||||
|
case 1:
|
||||||
|
hostConfig = container.HostConfig{
|
||||||
|
Binds: []string{
|
||||||
|
coverageBind(t),
|
||||||
|
qmdata + ":/mnt/mqm",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
hostConfig = container.HostConfig{
|
||||||
|
Binds: []string{
|
||||||
|
coverageBind(t),
|
||||||
|
qmdata + ":/mnt/mqm",
|
||||||
|
qmshareddata + ":/mnt/mqm-data",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
hostConfig = container.HostConfig{
|
||||||
|
Binds: []string{
|
||||||
|
coverageBind(t),
|
||||||
|
qmdata + ":/mnt/mqm",
|
||||||
|
qmsharedlogs + ":/mnt/mqm-log",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
hostConfig = container.HostConfig{
|
||||||
|
Binds: []string{
|
||||||
|
coverageBind(t),
|
||||||
|
qmdata + ":/mnt/mqm",
|
||||||
|
qmsharedlogs + ":/mnt/mqm-log",
|
||||||
|
qmshareddata + ":/mnt/mqm-data",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return hostConfig
|
||||||
|
}
|
||||||
|
|
||||||
func startContainer(t *testing.T, cli *client.Client, ID string) {
|
func startContainer(t *testing.T, cli *client.Client, ID string) {
|
||||||
t.Logf("Starting container: %v", ID)
|
t.Logf("Starting container: %v", ID)
|
||||||
startOptions := types.ContainerStartOptions{}
|
startOptions := types.ContainerStartOptions{}
|
||||||
|
|||||||
@@ -19,13 +19,10 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/container"
|
|
||||||
"github.com/docker/docker/api/types/network"
|
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -65,78 +62,6 @@ func singleMultiInstanceQueueManager(t *testing.T, cli *client.Client, qmsharedl
|
|||||||
qmsChannel <- QMChan{QMId: qmId, QMData: qmData}
|
qmsChannel <- QMChan{QMId: qmId, QMData: qmData}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHostConfig(t *testing.T, mounts int, qmsharedlogs string, qmshareddata string, qmdata string) container.HostConfig {
|
|
||||||
|
|
||||||
var hostConfig container.HostConfig
|
|
||||||
|
|
||||||
switch mounts {
|
|
||||||
case 1:
|
|
||||||
hostConfig = container.HostConfig{
|
|
||||||
Binds: []string{
|
|
||||||
coverageBind(t),
|
|
||||||
qmdata + ":/mnt/mqm",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
hostConfig = container.HostConfig{
|
|
||||||
Binds: []string{
|
|
||||||
coverageBind(t),
|
|
||||||
qmdata + ":/mnt/mqm",
|
|
||||||
qmshareddata + ":/mnt/mqm-data",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
hostConfig = container.HostConfig{
|
|
||||||
Binds: []string{
|
|
||||||
coverageBind(t),
|
|
||||||
qmdata + ":/mnt/mqm",
|
|
||||||
qmsharedlogs + ":/mnt/mqm-log",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
hostConfig = container.HostConfig{
|
|
||||||
Binds: []string{
|
|
||||||
coverageBind(t),
|
|
||||||
qmdata + ":/mnt/mqm",
|
|
||||||
qmsharedlogs + ":/mnt/mqm-log",
|
|
||||||
qmshareddata + ":/mnt/mqm-data",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return hostConfig
|
|
||||||
}
|
|
||||||
|
|
||||||
func startMultiVolumeQueueManager(t *testing.T, cli *client.Client, dataVol bool, qmsharedlogs string, qmshareddata string, env []string) (error, string, string) {
|
|
||||||
id := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
||||||
qmdata := createVolume(t, cli, id)
|
|
||||||
containerConfig := container.Config{
|
|
||||||
Image: imageName(),
|
|
||||||
Env: env,
|
|
||||||
}
|
|
||||||
var hostConfig container.HostConfig
|
|
||||||
|
|
||||||
if !dataVol {
|
|
||||||
hostConfig = container.HostConfig{}
|
|
||||||
} else if qmsharedlogs == "" && qmshareddata == "" {
|
|
||||||
hostConfig = getHostConfig(t, 1, "", "", qmdata.Name)
|
|
||||||
} else if qmsharedlogs == "" {
|
|
||||||
hostConfig = getHostConfig(t, 2, "", qmshareddata, qmdata.Name)
|
|
||||||
} else if qmshareddata == "" {
|
|
||||||
hostConfig = getHostConfig(t, 3, qmsharedlogs, "", qmdata.Name)
|
|
||||||
} else {
|
|
||||||
hostConfig = getHostConfig(t, 4, qmsharedlogs, qmshareddata, qmdata.Name)
|
|
||||||
}
|
|
||||||
networkingConfig := network.NetworkingConfig{}
|
|
||||||
qm, err := cli.ContainerCreate(context.Background(), &containerConfig, &hostConfig, &networkingConfig, t.Name()+id)
|
|
||||||
if err != nil {
|
|
||||||
return err, "", ""
|
|
||||||
}
|
|
||||||
startContainer(t, cli, qm.ID)
|
|
||||||
|
|
||||||
return nil, qm.ID, qmdata.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
func getActiveStandbyQueueManager(t *testing.T, cli *client.Client, qm1aId string, qm1bId string) (error, string, string) {
|
func getActiveStandbyQueueManager(t *testing.T, cli *client.Client, qm1aId string, qm1bId string) (error, string, string) {
|
||||||
qm1aStatus := getQueueManagerStatus(t, cli, qm1aId, "QM1")
|
qm1aStatus := getQueueManagerStatus(t, cli, qm1aId, "QM1")
|
||||||
qm1bStatus := getQueueManagerStatus(t, cli, qm1bId, "QM1")
|
qm1bStatus := getQueueManagerStatus(t, cli, qm1bId, "QM1")
|
||||||
|
|||||||
Reference in New Issue
Block a user