Skip to content

Commit d4fae78

Browse files
authored
Merge pull request #15 from arthurbarr/master
Updates ready for MQ V9.0.4
2 parents 2b15520 + 7c91187 commit d4fae78

File tree

21 files changed

+349
-188
lines changed

21 files changed

+349
-188
lines changed

.dockerignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
11
charts
2-
cmd
32
downloads
4-
pkg
53
test
6-
vendor

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ services:
88
- docker
99

1010
before_install:
11+
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
12+
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
13+
- sudo apt-get update
14+
- sudo apt-get -y install docker-ce
1115
- curl https://glide.sh/get | sh
1216
- curl -LO https://github.com/golang/dep/releases/download/v0.3.0/dep-linux-amd64.zip
1317
- unzip dep-linux-amd64.zip

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Change log
2+
3+
## 9.0.4 (2017-11-01)
4+
* Updated to MQ version 9.0.4.0
5+
* Updated to Go version 9
6+
* Removed packages `curl`, `ca-certificates`, and their dependencies, which were only used at build time
7+
* Improved logging
8+
* Helm charts now work on Kubernetes V1.6
9+
* Production Helm chart now includes a default image repository and tag
10+
* Updated to use multi-stage Docker build, so that Go code is built inside a container
11+
12+
## 9.0.3 (2017-10-17)
13+
* Initial version

Dockerfile-devserver

Lines changed: 0 additions & 50 deletions
This file was deleted.

Dockerfile-server

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,41 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
# Build stage to build Go code
16+
FROM golang:1.9 as builder
17+
WORKDIR /go/src/github.com/ibm-messaging/mq-container/
18+
COPY cmd/ ./cmd
19+
COPY pkg/ ./pkg
20+
COPY vendor/ ./vendor
21+
RUN go build ./cmd/runmqserver/
22+
RUN go build ./cmd/chkmqready/
23+
RUN go build ./cmd/chkmqhealthy/
24+
25+
# Build stage to run Go unit tests
26+
FROM golang:1.9 as tester
27+
COPY pkg/ ./pkg
28+
RUN cd pkg/name && go test
29+
RUN cd pkg/linux/capabilities && go test
30+
31+
# Main build stage, to build MQ image
1532
FROM ubuntu:16.04
1633

17-
ARG IBM_PRODUCT_ID
18-
ARG IBM_PRODUCT_NAME
19-
ARG IBM_PRODUCT_VERSION
20-
2134
# The URL to download the MQ installer from in tar.gz format
2235
# This assumes an archive containing the MQ Debian (.deb) install packages
2336
ARG MQ_URL
2437

2538
# The MQ packages to install
2639
ARG MQ_PACKAGES="ibmmq-server ibmmq-java ibmmq-jre ibmmq-gskit ibmmq-msg-.* ibmmq-samples ibmmq-ams"
2740

28-
LABEL "ProductID"=$IBM_PRODUCT_ID \
29-
"ProductName"=$IBM_PRODUCT_NAME \
30-
"ProductVersion"=$IBM_PRODUCT_VERSION
31-
3241
COPY install-mq.sh /usr/local/bin/
42+
43+
# Install MQ. To avoid a "text file busy" error here, we sleep before installing.
3344
RUN chmod u+x /usr/local/bin/install-mq.sh \
34-
# To avoid a "text file busy" error here we sleep before installing.
35-
&& sleep 1 && install-mq.sh
45+
&& sleep 1 \
46+
&& install-mq.sh
3647

37-
COPY build/runmqserver /usr/local/bin/
38-
COPY build/chkmq* /usr/local/bin/
48+
COPY --from=builder /go/src/github.com/ibm-messaging/mq-container/runmqserver /usr/local/bin/
49+
COPY --from=builder /go/src/github.com/ibm-messaging/mq-container/chkmq* /usr/local/bin/
3950
COPY NOTICES.txt /opt/mqm/licenses/notices-container.txt
4051

4152
RUN chmod +x /usr/local/bin/runmqserver \

Makefile

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@
1313
# limitations under the License.
1414

1515
BUILD_SERVER_CONTAINER=build-server
16+
# Set architecture for Go code. Don't set GOOS globally, so that tests can be run locally
1617
export GOARCH ?= amd64
17-
# Don't set GOOS globally, so that tests can be run locally
1818
DOCKER_TAG_ARCH ?= x86_64
19+
# By default, all Docker client commands are run inside a Docker container.
20+
# This means that newer features of the client can be used, even with an older daemon.
21+
DOCKER ?= docker run --tty --interactive --rm --volume /var/run/docker.sock:/var/run/docker.sock --volume "$(CURDIR)":/var/src --workdir /var/src docker:stable docker
1922
DOCKER_TAG ?= latest-$(DOCKER_TAG_ARCH)
2023
DOCKER_REPO_DEVSERVER ?= mq-devserver
2124
DOCKER_REPO_ADVANCEDSERVER ?= mq-advancedserver
@@ -60,43 +63,28 @@ deps:
6063
cd test/docker && dep ensure -vendor-only
6164
cd test/kubernetes && dep ensure -vendor-only
6265

63-
build/runmqserver:
64-
mkdir -p build
65-
cd build; GOOS=linux go build ../cmd/runmqserver/
66-
67-
build/chkmqready:
68-
mkdir -p build
69-
cd build; GOOS=linux go build ../cmd/chkmqready/
70-
71-
build/chkmqhealthy:
72-
mkdir -p build
73-
cd build; GOOS=linux go build ../cmd/chkmqhealthy/
74-
75-
.PHONY: build
76-
build: build/runmqserver build/chkmqready build/chkmqhealthy
77-
7866
.PHONY: build-cov
7967
build-cov:
8068
mkdir -p build
8169
cd build; go test -c -covermode=count ../cmd/runmqserver
8270

8371
.PHONY: test-advancedserver
84-
test-advancedserver: build
72+
test-advancedserver:
8573
cd pkg/name && go test
8674
cd test/docker && TEST_IMAGE=$(DOCKER_FULL_ADVANCEDSERVER) go test $(TEST_OPTS_DOCKER)
8775

8876
.PHONY: test-devserver
89-
test-devserver: build
77+
test-devserver:
9078
$(info $(SPACER)$(shell printf $(TITLE)"Test $(DOCKER_FULL_DEVSERVER)"$(END)))
9179
cd pkg/name && go test
9280
cd test/docker && TEST_IMAGE=$(DOCKER_FULL_DEVSERVER) go test
9381

9482
.PHONY: test-kubernetes-devserver
95-
test-kubernetes-devserver: build
83+
test-kubernetes-devserver:
9684
$(call test-kubernetes,$(DOCKER_REPO_DEVSERVER),$(DOCKER_TAG),"../../charts/ibm-mqadvanced-server-dev")
9785

9886
.PHONY: test-kubernetes-advancedserver
99-
test-kubernetes-advancedserver: build
87+
test-kubernetes-advancedserver:
10088
$(call test-kubernetes,$(DOCKER_REPO_ADVANCEDSERVER),$(DOCKER_TAG),"../../charts/ibm-mqadvanced-server-prod")
10189

10290
define test-kubernetes
@@ -106,9 +94,9 @@ endef
10694

10795
define docker-build-mq
10896
# Create a temporary network to use for the build
109-
docker network create build
97+
$(DOCKER) network create build
11098
# Start a web server to host the MQ downloadable (tar.gz) file
111-
docker run \
99+
$(DOCKER) run \
112100
--rm \
113101
--name $(BUILD_SERVER_CONTAINER) \
114102
--network build \
@@ -117,48 +105,58 @@ define docker-build-mq
117105
--detach \
118106
nginx:alpine
119107
# Build the new image
120-
docker build \
108+
$(DOCKER) build \
109+
--pull \
121110
--tag $1 \
122111
--file $2 \
123112
--network build \
124113
--build-arg MQ_URL=http://build:80/$3 \
125-
--build-arg IBM_PRODUCT_ID=$4 \
126-
--build-arg IBM_PRODUCT_NAME=$5 \
127-
--build-arg IBM_PRODUCT_VERSION=$6 \
114+
--label IBM_PRODUCT_ID=$4 \
115+
--label IBM_PRODUCT_NAME=$5 \
116+
--label IBM_PRODUCT_VERSION=$6 \
128117
.
129118
# Stop the web server (will also remove the container)
130-
docker kill $(BUILD_SERVER_CONTAINER)
119+
$(DOCKER) kill $(BUILD_SERVER_CONTAINER)
131120
# Delete the temporary network
132-
docker network rm build
121+
$(DOCKER) network rm build
133122
endef
134123

135-
.PHONY: build-advancedserver
136-
build-advancedserver: build downloads/CNJR7ML.tar.gz
124+
# .PHONY: build-advancedserver-903
125+
# build-advancedserver-903: build downloads/CNJR7ML.tar.gz
126+
# $(info $(SPACER)$(shell printf $(TITLE)"Build $(DOCKER_FULL_ADVANCEDSERVER)"$(END)))
127+
# $(call docker-build-mq,$(DOCKER_FULL_ADVANCEDSERVER),Dockerfile-server,CNJR7ML.tar.gz,"4486e8c4cc9146fd9b3ce1f14a2dfc5b","IBM MQ Advanced","9.0.3")
128+
# $(DOCKER) tag $(DOCKER_FULL_ADVANCEDSERVER) $(DOCKER_REPO_ADVANCEDSERVER):9.0.3-$(DOCKER_TAG_ARCH)
129+
130+
.PHONY: build-advancedserver-904
131+
build-advancedserver-904: downloads/CNLE4ML.tar.gz
137132
$(info $(SPACER)$(shell printf $(TITLE)"Build $(DOCKER_FULL_ADVANCEDSERVER)"$(END)))
138-
$(call docker-build-mq,$(DOCKER_FULL_ADVANCEDSERVER),Dockerfile-server,CNJR7ML.tar.gz,"4486e8c4cc9146fd9b3ce1f14a2dfc5b","IBM MQ Advanced","9.0.3")
139-
docker tag $(DOCKER_FULL_ADVANCEDSERVER) $(DOCKER_REPO_ADVANCEDSERVER):9.0.3-$(DOCKER_TAG_ARCH)
133+
$(call docker-build-mq,$(DOCKER_FULL_ADVANCEDSERVER),Dockerfile-server,CNLE4ML.tar.gz,"4486e8c4cc9146fd9b3ce1f14a2dfc5b","IBM MQ Advanced","9.0.4")
134+
$(DOCKER) tag $(DOCKER_FULL_ADVANCEDSERVER) $(DOCKER_REPO_ADVANCEDSERVER):9.0.4-$(DOCKER_TAG_ARCH)
135+
136+
.PHONY: build-advancedserver
137+
build-advancedserver: build-advancedserver-904
140138

141139
.PHONY: build-devserver
142-
build-devserver: build downloads/mqadv_dev903_ubuntu_x86-64.tar.gz
140+
build-devserver: downloads/mqadv_dev903_ubuntu_x86-64.tar.gz
143141
$(info $(shell printf $(TITLE)"Build $(DOCKER_FULL_DEVSERVER)"$(END)))
144142
$(call docker-build-mq,$(DOCKER_FULL_DEVSERVER),Dockerfile-server,mqadv_dev903_ubuntu_x86-64.tar.gz,"98102d16795c4263ad9ca075190a2d4d","IBM MQ Advanced for Developers (Non-Warranted)","9.0.3")
145-
docker tag $(DOCKER_FULL_DEVSERVER) $(DOCKER_REPO_DEVSERVER):9.0.3-$(DOCKER_TAG_ARCH)
143+
$(DOCKER) tag $(DOCKER_FULL_DEVSERVER) $(DOCKER_REPO_DEVSERVER):9.0.3-$(DOCKER_TAG_ARCH)
146144

147145
# .PHONY: build-server
148146
# build-server: build downloads/CNJR7ML.tar.gz
149147
# $(call docker-build-mq,mq-server:latest-$(DOCKER_TAG_ARCH),Dockerfile-server,"79afd716d55b4f149a87bec52c9dc1aa","IBM MQ","9.0.3")
150-
# docker tag mq-server:latest-$(DOCKER_TAG_ARCH) mq-server:9.0.3-$(DOCKER_TAG_ARCH)
148+
# $(DOCKER) tag mq-server:latest-$(DOCKER_TAG_ARCH) mq-server:9.0.3-$(DOCKER_TAG_ARCH)
151149

152150
.PHONY: build-advancedserver-cover
153151
build-advancedserver-cover: build-advanced-server build-cov
154-
docker build -t mq-advancedserver:cover -f Dockerfile-server.cover .
152+
$(DOCKER) build -t mq-advancedserver:cover -f Dockerfile-server.cover .
155153

156154
# .PHONY: build-web
157155
# build-web: build downloads/CNJR7ML.tar.gz
158156
# $(call docker-build-mq,mq-web:latest-$(DOCKER_TAG_ARCH),Dockerfile-mq-web)
159157

160158
.PHONY: build-explorer
161-
build-explorer: build downloads/mqadv_dev903_ubuntu_x86-64.tar.gz
159+
build-explorer: downloads/mqadv_dev903_ubuntu_x86-64.tar.gz
162160
$(call docker-build-mq,mq-explorer:latest-$(DOCKER_TAG_ARCH),incubating/mq-explorer/Dockerfile-mq-explorer,mqadv_dev903_ubuntu_x86-64.tar.gz,"98102d16795c4263ad9ca075190a2d4d","IBM MQ Advanced for Developers (Non-Warranted)","9.0.3")
163161

164162
include formatting.mk

charts/ibm-mqadvanced-server-dev/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
apiVersion: v1
1616
description: IBM MQ queue manager
1717
name: ibm-mqadvanced-server-dev
18-
version: 1.0.1
18+
version: 1.0.2
1919
icon: https://developer.ibm.com/messaging/wp-content/uploads/sites/18/2017/07/IBM-MQ-Square-200.png
2020
tillerVersion: ">=2.4.0"

charts/ibm-mqadvanced-server-dev/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This chart deploys a single IBM MQ Advanced for Developers server (queue manager
1010

1111
## Prerequisites
1212

13-
- Kubernetes 1.7 or greater, with beta APIs enabled
13+
- Kubernetes 1.6 or greater, with beta APIs enabled
1414
- If persistence is enabled (see [configuration](#configuration)), then you either need to create a PersistentVolume, or specify a Storage Class if classes are defined in your cluster.
1515

1616
## Installing the Chart

charts/ibm-mqadvanced-server-dev/templates/stateful-set.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ metadata:
2424
spec:
2525
serviceName: {{ .Values.service.name }}
2626
replicas: 1
27+
{{- if and (ge (.Capabilities.KubeVersion.Major | int) 1) (ge (.Capabilities.KubeVersion.Minor | int) 7) }}
2728
updateStrategy:
2829
type: RollingUpdate
30+
{{- end }}
2931
template:
3032
metadata:
3133
labels:

charts/ibm-mqadvanced-server-prod/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
apiVersion: v1
1616
description: IBM MQ queue manager
1717
name: ibm-mqadvanced-server-prod
18-
version: 1.0.1
18+
version: 1.0.2
1919
icon: https://developer.ibm.com/messaging/wp-content/uploads/sites/18/2017/07/IBM-MQ-Square-200.png
2020
tillerVersion: ">=2.4.0"

0 commit comments

Comments
 (0)