[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: