[SEBA-880]Ensure Redfish importer Makefile conforms to typical targets
Change-Id: Ida21793667fdaff57d252abe42127980124378e1
diff --git a/Dockerfile b/Dockerfile
index 3482c47..dc26b04 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -16,29 +16,31 @@
# docker build -t 10.90.0.101:30500/opencord/kafka-topic-exporter:latest .
FROM golang:1.12 AS build-env
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
+RUN /bin/true | cat
RUN mkdir /app
-ADD . /app/
+COPY . /app/
WORKDIR /app
ENV PROTOC_VERSION 3.6.1
ENV PROTOC_SHA256SUM 6003de742ea3fcf703cfec1cd4a3380fd143081a2eb0e559065563496af27807
-RUN apt-get update && apt-get install -y \
- git \
- gcc \
- curl \
- unzip
+RUN apt-get update && apt-get install --no-install-recommends -y \
+ git=1:2.20.1-2 \
+ gcc=4:8.3.0-1 \
+ curl=7.64.0-4 \
+ unzip=6.0-23+deb10u1
RUN curl -L -o /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip https://github.com/google/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip
RUN mkdir /tmp/protoc3
-RUN echo "$PROTOC_SHA256SUM /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip" | sha256sum -c - \
+RUN echo "$PROTOC_SHA256SUM /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip" | sha256sum -c - \
&& unzip /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip -d /tmp/protoc3 \
&& mv /tmp/protoc3/bin/* /usr/local/bin/ \
&& mv /tmp/protoc3/include/* /usr/local/include/
-RUN go get -u google.golang.org/grpc \
- && go get github.com/golang/protobuf/proto \
- && go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway \
- && go get -v github.com/golang/protobuf/protoc-gen-go \
- && go get github.com/Shopify/sarama \
- && go get github.com/Sirupsen/logrus\
- && protoc -I proto -I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:proto/ proto/*.proto
+RUN go get -u "google.golang.org/grpc" \
+ && go get "github.com/golang/protobuf/proto" \
+ && go get -v "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway" \
+ && go get -v "github.com/golang/protobuf/protoc-gen-go" \
+ && go get "github.com/Shopify/sarama" \
+ && go get "github.com/Sirupsen/logrus"\
+ && protoc -I proto -I"${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis" --go_out=plugins=grpc:proto/ proto/*.proto
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
FROM alpine:3.9.4
diff --git a/Makefile b/Makefile
index 6929a5f..1fe2b9f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# Copyright 2019-present Open Networking Foundation
+# Copyrigh/ 2019-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -32,7 +32,24 @@
DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
DOCKER_LABEL_BUILD_DATE ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
+help:
+ @echo "Usage: make [<target>]"
+ @echo "where available targets are:"
+ @echo
+ @echo "build : Build the docker images."
+ @echo " - If this is the first time you are building, choose 'make build' option."
+ @echo "clean : Remove files created by the build and tests"
+ @echo "docker-push : Push the docker images to an external repository"
+ @echo "lint-dockerfile : Perform static analysis on Dockerfiles"
+ @echo "lint-style : Verify code is properly gofmt-ed"
+ @echo "lint : Shorthand for lint-style & lint-sanity"
+ @echo "test : Generate reports for all go tests"
+ @echo
+
all: test
+build: docker-build
+
+
docker-build:
docker build $(DOCKER_BUILD_ARGS) \
-t ${DOCKER_IMAGENAME} \
@@ -45,6 +62,52 @@
docker-push:
docker push ${DOCKER_IMAGENAME}
+PATH:=$(GOPATH)/bin:$(PATH)
+HADOLINT=$(shell PATH=$(GOPATH):$(PATH) which hadolint)
+
+lint-dockerfile:
+ifeq (,$(shell PATH=$(GOPATH):$(PATH) which hadolint))
+ mkdir -p $(GOPATH)/bin
+ curl -o $(GOPATH)/bin/hadolint -sNSL https://github.com/hadolint/hadolint/releases/download/v1.17.1/hadolint-$(shell uname -s)-$(shell uname -m)
+ chmod 755 $(GOPATH)/bin/hadolint
+endif
+ @echo "Running Dockerfile lint check ..."
+ @hadolint $$(find . -name "Dockerfile")
+ @echo "Dockerfile lint check OK"
+
+lint-style:
+ifeq (,$(shell which gofmt))
+ go get -u github.com/golang/go/src/cmd/gofmt
+endif
+ @echo "Running style check..."
+ @gofmt_out="$$(gofmt -l $$(find . -name '*.go' -not -path './vendor/*'))" ;\
+ if [ ! -z "$$gofmt_out" ]; then \
+ echo "$$gofmt_out" ;\
+ echo "Style check failed on one or more files ^, run 'go fmt' to fix." ;\
+ exit 1 ;\
+ fi
+ @echo "Style check OK"
+
+
+lint: lint-style lint-dockerfile
+
+# Rules to automatically install golangci-lint
+GOLANGCI_LINT_TOOL?=$(shell which golangci-lint)
+ifeq (,$(GOLANGCI_LINT_TOOL))
+GOLANGCI_LINT_TOOL=$(GOPATH)/bin/golangci-lint
+golangci_lint_tool_install:
+ # Same version as installed by Jenkins ci-management
+ # Note that install using `go get` is not recommended as per https://github.com/golangci/golangci-lint
+ curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(GOPATH)/bin v1.17.0
+else
+golangci_lint_tool_install:
+endif
+
+sca: golangci_lint_tool_install
+ rm -rf ./sca-report
+ @mkdir -p ./sca-report
+ $(GOLANGCI_LINT_TOOL) run --out-format junit-xml ./... 2>&1 | tee ./sca-report/sca-report.xml
+
test: docker-build
clean: