-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDockerfile
More file actions
88 lines (73 loc) · 2.66 KB
/
Dockerfile
File metadata and controls
88 lines (73 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
ARG RUN_IMAGE
FROM golang:1.13.1 as build
ENV PROVIDERS=https://github.com/go-home-io/providers.git \
HOME_DIR=${GOPATH}/src/go-home.io/x/server \
QEMU=https://github.com/multiarch/qemu-user-static/releases/download/v4.0.0-4/qemu-arm-static.tar.gz
ARG TRAVIS_TAG
ENV VERSION=${TRAVIS_TAG}
WORKDIR ${HOME_DIR}
COPY . .
RUN apt-get update && \
apt-get install -y make git gcc libc-dev ca-certificates curl && \
make utilities-build && \
cd ${GOPATH} && \
mkdir -p src/go-home.io/x && \
cd src/go-home.io/x && \
git clone ${PROVIDERS} providers && \
if [ "x${TRAVIS_TAG}" != "x" ]; then \
cd providers && \
git fetch --all --tags --prune && \
git checkout tags/${TRAVIS_TAG}; \
fi; \
cd ${HOME_DIR}
ARG GOARCH
ENV GOARCH=${GOARCH}
ARG GOOS
ENV GOOS=${GOOS}
ARG GOARM
ENV GOARM=${GOARM}
RUN if [ "x${GOARM}" != "x" ]; then \
apt-get install -y cross-gcc-dev && \
dpkg --add-architecture armhf && \
apt-get update && \
apt-get install -y crossbuild-essential-armhf && \
export CC=arm-linux-gnueabihf-gcc && \
export CGO_ENABLED=1; \
fi; \
mkdir -p /app && \
export BUILD_EXTRA='-a -tags netgo' && \
VERSION=${VERSION} GOOS=${GOOS} GOARM=${GOARM} GOARCH=${GOARCH} make dep && \
VERSION=${VERSION} GOOS=${GOOS} GOARM=${GOARM} GOARCH=${GOARCH} make generate && \
VERSION=${VERSION} GOOS=${GOOS} GOARM=${GOARM} GOARCH=${GOARCH} make BIN_FOLDER=/app build
ARG LINT
ARG C_TOKEN
ARG TRAVIS
ARG TRAVIS_JOB_ID
ARG TRAVIS_BRANCH
ARG TRAVIS_PULL_REQUEST
ARG BINTRAY_API_USER
ARG BINTRAY_API_KEY
RUN if [ "${LINT}" != "false" ]; then \
set -e && \
mkdir -p bin && \
make utilities-ci && \
make lint && \
make test && \
TRAVIS=$TRAVIS TRAVIS_JOB_ID=$TRAVIS_JOB_ID TRAVIS_BRANCH=$TRAVIS_BRANCH TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST ${GOPATH}/bin/goveralls -coverprofile=./bin/cover.out -repotoken $C_TOKEN; \
else \
export CGO_ENABLED=0 && \
GOOS=linux GOARCH=amd64 GOARM= BINTRAY_API_KEY=${BINTRAY_API_KEY} BINTRAY_API_USER=${BINTRAY_API_USER} go run cmd/bintray/upload.go /app/plugins ${VERSION} ${GOARCH}; \
fi;
RUN mkdir -p /out && \
cp /app/go-home /out/ && \
if [ "x${GOARM}" != "x" ]; then \
curl -L -o qemu-arm-static.tar.gz ${QEMU} && \
tar xzf qemu-arm-static.tar.gz && \
cp qemu-arm-static /out/; \
fi;
##################################################################################################
FROM $RUN_IMAGE
COPY --from=build /out/* /usr/bin/
RUN apt-get update && \
apt-get install -y ca-certificates --no-install-recommends
CMD ["go-home"]