Build Go code in Docker

This commit is contained in:
Arthur Barr
2017-10-30 15:46:47 +00:00
parent 721c2e616e
commit a8bb8084b3
3 changed files with 22 additions and 24 deletions

View File

@@ -1,6 +1,3 @@
charts
cmd
downloads
pkg
test
vendor

View File

@@ -12,6 +12,22 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# Build stage to build Go code
FROM golang:1.9 as builder
WORKDIR /go/src/github.com/ibm-messaging/mq-container/
COPY cmd/ ./cmd
COPY pkg/ ./pkg
COPY vendor/ ./vendor
RUN GOOS=linux go build ./cmd/runmqserver/
RUN GOOS=linux go build ./cmd/chkmqready/
RUN GOOS=linux go build ./cmd/chkmqhealthy/
# Build stage to run Go unit tests
FROM golang:1.9 as tester
COPY pkg/ ./pkg
RUN cd pkg/name && GOOS=linux go test
# Main build stage, to build MQ image
FROM ubuntu:16.04
# The URL to download the MQ installer from in tar.gz format
@@ -28,8 +44,8 @@ RUN chmod u+x /usr/local/bin/install-mq.sh \
&& sleep 1 \
&& install-mq.sh
COPY build/runmqserver /usr/local/bin/
COPY build/chkmq* /usr/local/bin/
COPY --from=builder /go/src/github.com/ibm-messaging/mq-container/runmqserver /usr/local/bin/
COPY --from=builder /go/src/github.com/ibm-messaging/mq-container/chkmq* /usr/local/bin/
COPY NOTICES.txt /opt/mqm/licenses/notices-container.txt
RUN chmod +x /usr/local/bin/runmqserver \

View File

@@ -63,43 +63,28 @@ deps:
cd test/docker && dep ensure -vendor-only
cd test/kubernetes && dep ensure -vendor-only
build/runmqserver:
mkdir -p build
cd build; GOOS=linux go build ../cmd/runmqserver/
build/chkmqready:
mkdir -p build
cd build; GOOS=linux go build ../cmd/chkmqready/
build/chkmqhealthy:
mkdir -p build
cd build; GOOS=linux go build ../cmd/chkmqhealthy/
.PHONY: build
build: build/runmqserver build/chkmqready build/chkmqhealthy
.PHONY: build-cov
build-cov:
mkdir -p build
cd build; go test -c -covermode=count ../cmd/runmqserver
.PHONY: test-advancedserver
test-advancedserver: build
test-advancedserver:
cd pkg/name && go test
cd test/docker && TEST_IMAGE=$(DOCKER_FULL_ADVANCEDSERVER) go test $(TEST_OPTS_DOCKER)
.PHONY: test-devserver
test-devserver: build
test-devserver:
$(info $(SPACER)$(shell printf $(TITLE)"Test $(DOCKER_FULL_DEVSERVER)"$(END)))
cd pkg/name && go test
cd test/docker && TEST_IMAGE=$(DOCKER_FULL_DEVSERVER) go test
.PHONY: test-kubernetes-devserver
test-kubernetes-devserver: build
test-kubernetes-devserver:
$(call test-kubernetes,$(DOCKER_REPO_DEVSERVER),$(DOCKER_TAG),"../../charts/ibm-mqadvanced-server-dev")
.PHONY: test-kubernetes-advancedserver
test-kubernetes-advancedserver: build
test-kubernetes-advancedserver:
$(call test-kubernetes,$(DOCKER_REPO_ADVANCEDSERVER),$(DOCKER_TAG),"../../charts/ibm-mqadvanced-server-prod")
define test-kubernetes