Convert Gateway to Github Actions

Signed-off-by: Alistair Hey <alistair@heyal.co.uk>
This commit is contained in:
Alistair Hey
2020-11-14 06:25:22 +00:00
committed by Alex Ellis
parent 4ced7cacd0
commit a5583074e0
11 changed files with 180 additions and 336 deletions

View File

@ -1,50 +1,55 @@
FROM teamserverless/license-check:0.3.6 as license-check
FROM --platform=${BUILDPLATFORM:-linux/amd64} teamserverless/license-check:0.3.6 as license-check
FROM golang:1.13 as build
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.13 as build
ENV GO111MODULE=off
ENV CGO_ENABLED=0
ARG TARGETPLATFORM
ARG BUILDPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG GIT_COMMIT_SHA
ARG GIT_COMMIT_MESSAGE
ARG VERSION='dev'
ARG ARCH="x86_64"
ARG GOOS=linux
ARG GOARM
COPY --from=license-check /license-check /usr/bin/
WORKDIR /go/src/github.com/openfaas/faas/gateway
COPY vendor vendor
COPY gateway/vendor vendor
COPY handlers handlers
COPY metrics metrics
COPY requests requests
COPY tests tests
COPY gateway/handlers handlers
COPY gateway/metrics metrics
COPY gateway/requests requests
COPY gateway/tests tests
COPY gateway/types types
COPY gateway/queue queue
COPY gateway/plugin plugin
COPY gateway/version version
COPY gateway/scaling scaling
COPY gateway/pkg pkg
COPY gateway/main.go .
COPY .git .
RUN license-check -path ./ --verbose=false "Alex Ellis" "OpenFaaS Authors" "OpenFaaS Author(s)"
COPY types types
COPY queue queue
COPY plugin plugin
COPY version version
COPY scaling scaling
COPY pkg pkg
COPY main.go .
# Run a gofmt and exclude all vendored code.
RUN license-check -path ./ --verbose=false "Alex Ellis" "OpenFaaS Authors" "OpenFaaS Author(s)" \
&& test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))" \
&& CGO_ENABLED=${CGO_ENABLED} go test $(go list ./... | grep -v integration | grep -v /vendor/ | grep -v /template/) -cover \
&& GOARM=${GOARM} CGO_ENABLED=${CGO_ENABLED} GOOS=linux go build --ldflags "-s -w \
-X github.com/openfaas/faas/gateway/version.GitCommitSHA=${GIT_COMMIT_SHA}\
-X \"github.com/openfaas/faas/gateway/version.GitCommitMessage=${GIT_COMMIT_MESSAGE}\"\
-X \"github.com/openfaas/faas/gateway/version.Version=${VERSION}\" \
-X github.com/openfaas/faas/gateway/types.Arch=${ARCH}"\
RUN test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))"
RUN CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go test $(go list ./... | grep -v integration | grep -v /vendor/ | grep -v /template/) -cover
RUN GIT_COMMIT_MESSAGE=$(git log -1 --pretty=%B 2>&1 | head -n 1) \
GIT_COMMIT_SHA=$(git rev-list -1 HEAD) \
VERSION=$(git describe --all --exact-match `git rev-parse HEAD` | grep tags | sed 's/tags\///' || echo dev) \
CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build --ldflags "-s -w \
-X github.com/openfaas/faas/gateway/version.GitCommitSHA=${GIT_COMMIT_SHA} \
-X github.com/openfaas/faas/gateway/version.GitCommitMessage=${GIT_COMMIT_MESSAGE} \
-X github.com/openfaas/faas/gateway/version.Version=${VERSION} \
-X github.com/openfaas/faas/gateway/types.Arch=${TARGETARCH}" \
-a -installsuffix cgo -o gateway .
FROM alpine:3.11
ARG ARCH="x86_64"
FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:3.12 as ship
LABEL org.label-schema.license="MIT" \
org.label-schema.vcs-url="https://github.com/openfaas/faas" \
@ -65,8 +70,8 @@ ENV http_proxy ""
ENV https_proxy ""
COPY --from=build /go/src/github.com/openfaas/faas/gateway/gateway .
COPY assets assets
RUN sed -ie s/x86_64/${ARCH}/g assets/script/funcstore.js && \
COPY gateway/assets assets
RUN sed -ie s/x86_64/${GOARCH}/g assets/script/funcstore.js && \
rm assets/script/funcstore.jse
RUN chown -R app:app ./

View File

@ -1,71 +0,0 @@
FROM teamserverless/license-check:0.3.6 as license-check
FROM golang:1.13 as build
ENV GO111MODULE=off
ENV CGO_ENABLED=0
ARG GIT_COMMIT_SHA
ARG GIT_COMMIT_MESSAGE
ARG VERSION='dev'
COPY --from=license-check /license-check /usr/bin/
WORKDIR /go/src/github.com/openfaas/faas/gateway
COPY vendor vendor
COPY handlers handlers
COPY metrics metrics
COPY requests requests
COPY tests tests
COPY types types
COPY queue queue
COPY plugin plugin
COPY version version
COPY scaling scaling
COPY pkg pkg
COPY main.go .
# Run a gofmt and exclude all vendored code.
RUN license-check -path ./ --verbose=false "Alex Ellis" "OpenFaaS Project" "OpenFaaS Authors" "OpenFaaS Author(s)" \
&& test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))" \
&& go test $(go list ./... | grep -v integration | grep -v /vendor/ | grep -v /template/) -cover \
&& CGO_ENABLED=0 GOOS=linux go build --ldflags "-s -w \
-X github.com/openfaas/faas/gateway/version.GitCommitSHA=${GIT_COMMIT_SHA}\
-X \"github.com/openfaas/faas/gateway/version.GitCommitMessage=${GIT_COMMIT_MESSAGE}\"\
-X github.com/openfaas/faas/gateway/version.Version=${VERSION}" \
-a -installsuffix cgo -o gateway .
FROM alpine:3.11
LABEL org.label-schema.license="MIT" \
org.label-schema.vcs-url="https://github.com/openfaas/faas" \
org.label-schema.vcs-type="Git" \
org.label-schema.name="openfaas/faas" \
org.label-schema.vendor="openfaas" \
org.label-schema.docker.schema-version="1.0"
RUN addgroup -S app \
&& adduser -S -g app app \
&& apk add --no-cache ca-certificates
WORKDIR /home/app
EXPOSE 8080
EXPOSE 8082
ENV http_proxy ""
ENV https_proxy ""
COPY --from=build /go/src/github.com/openfaas/faas/gateway/gateway .
COPY assets assets
RUN chown -R app:app ./
USER app
RUN sed -ie s/x86_64/arm64/g /home/app/assets/script/funcstore.js
CMD ["./gateway"]

View File

@ -1,68 +0,0 @@
FROM teamserverless/license-check:0.3.6 as license-check
FROM golang:1.13 as build
ENV GO111MODULE=off
ENV CGO_ENABLED=0
ARG GIT_COMMIT_SHA
ARG GIT_COMMIT_MESSAGE
ARG VERSION='dev'
COPY --from=license-check /license-check /usr/bin/
WORKDIR /go/src/github.com/openfaas/faas/gateway
COPY vendor vendor
COPY handlers handlers
COPY metrics metrics
COPY requests requests
COPY tests tests
COPY types types
COPY queue queue
COPY plugin plugin
COPY version version
COPY scaling scaling
COPY pkg pkg
COPY main.go .
# Run a gofmt and exclude all vendored code.
RUN license-check -path ./ --verbose=false "Alex Ellis" "OpenFaaS Project" "OpenFaaS Authors" "OpenFaaS Author(s)" \
&& test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))" \
&& go test $(go list ./... | grep -v integration | grep -v /vendor/ | grep -v /template/) -cover \
&& GOARM=7 CGO_ENABLED=0 GOOS=linux go build --ldflags "-s -w \
-X github.com/openfaas/faas/gateway/version.GitCommitSHA=${GIT_COMMIT_SHA}\
-X \"github.com/openfaas/faas/gateway/version.GitCommitMessage=${GIT_COMMIT_MESSAGE}\"\
-X github.com/openfaas/faas/gateway/version.Version=${VERSION}" \
-a -installsuffix cgo -o gateway .
FROM alpine:3.11
LABEL org.label-schema.license="MIT" \
org.label-schema.vcs-url="https://github.com/openfaas/faas" \
org.label-schema.vcs-type="Git" \
org.label-schema.name="openfaas/faas" \
org.label-schema.vendor="openfaas" \
org.label-schema.docker.schema-version="1.0"
RUN addgroup -S app \
&& adduser -S -g app app \
&& apk add --no-cache ca-certificates
WORKDIR /home/app
EXPOSE 8080
EXPOSE 8082
ENV http_proxy ""
ENV https_proxy ""
COPY --from=build /go/src/github.com/openfaas/faas/gateway/gateway .
COPY assets assets
RUN sed -ie s/x86_64/armhf/g /home/app/assets/script/funcstore.js
RUN chown -R app:app ./
USER app
CMD ["./gateway"]

View File

@ -1,50 +0,0 @@
#!/bin/sh
set -e
export dockerfile="Dockerfile"
export arch=$(uname -m)
export eTAG="latest-dev"
export GOARM=""
if [ "$arch" = "armv7l" ] ; then
dockerfile="Dockerfile"
eTAG="latest-armhf-dev"
arch="armhf"
GOARM="7"
elif [ "$arch" = "aarch64" ] ; then
arch="arm64"
dockerfile="Dockerfile"
eTAG="latest-arm64-dev"
fi
# $arch has been mutated by this point, so check for the updated values
echo "$1"
if [ "$1" ] ; then
eTAG=$1
if [ "$arch" = "armhf" ] ; then
eTAG="$1-armhf"
elif [ "$arch" = "arm64" ] ; then
eTAG="$1-arm64"
fi
fi
if [ "$2" ] ; then
NS=$2
else
NS=openfaas
fi
echo "Building $NS/gateway:$eTAG with $dockerfile for $arch"
GIT_COMMIT_MESSAGE=$(git log -1 --pretty=%B 2>&1 | head -n 1)
GIT_COMMIT_SHA=$(git rev-list -1 HEAD)
VERSION=$(git describe --all --exact-match `git rev-parse HEAD` | grep tags | sed 's/tags\///' || echo dev)
docker build --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy \
--build-arg GIT_COMMIT_MESSAGE="${GIT_COMMIT_MESSAGE}" --build-arg GIT_COMMIT_SHA="${GIT_COMMIT_SHA}" \
--build-arg VERSION="${VERSION:-dev}" \
--build-arg GOARM="${GOARM}" \
--build-arg ARCH="${arch}" \
-t $NS/gateway:$eTAG . -f $dockerfile