2019-06-14 06:20:15 +00:00
|
|
|
ARG BASE_IMAGE=debian:9.5-slim
|
2018-08-28 23:00:14 +00:00
|
|
|
####################################################################################################
|
|
|
|
|
# Builder image
|
|
|
|
|
# Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image
|
|
|
|
|
# Also used as the image in CI jobs so needs all dependencies
|
|
|
|
|
####################################################################################################
|
2019-06-27 21:44:49 +00:00
|
|
|
FROM golang:1.12.6 as builder
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
|
|
|
git \
|
|
|
|
|
make \
|
|
|
|
|
wget \
|
|
|
|
|
gcc \
|
|
|
|
|
zip && \
|
|
|
|
|
apt-get clean && \
|
|
|
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
|
|
|
|
|
|
WORKDIR /tmp
|
|
|
|
|
|
|
|
|
|
# Install docker
|
2019-01-24 23:34:45 +00:00
|
|
|
ENV DOCKER_CHANNEL stable
|
|
|
|
|
ENV DOCKER_VERSION 18.09.1
|
|
|
|
|
RUN wget -O docker.tgz "https://download.docker.com/linux/static/${DOCKER_CHANNEL}/x86_64/docker-${DOCKER_VERSION}.tgz" && \
|
|
|
|
|
tar --extract --file docker.tgz --strip-components 1 --directory /usr/local/bin/ && \
|
|
|
|
|
rm docker.tgz
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
# Install dep
|
|
|
|
|
ENV DEP_VERSION=0.5.0
|
|
|
|
|
RUN wget https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 -O /usr/local/bin/dep && \
|
|
|
|
|
chmod +x /usr/local/bin/dep
|
|
|
|
|
|
|
|
|
|
# Install gometalinter
|
2019-01-03 23:16:08 +00:00
|
|
|
ENV GOMETALINTER_VERSION=2.0.12
|
|
|
|
|
RUN curl -sLo- https://github.com/alecthomas/gometalinter/releases/download/v${GOMETALINTER_VERSION}/gometalinter-${GOMETALINTER_VERSION}-linux-amd64.tar.gz | \
|
2018-08-28 23:00:14 +00:00
|
|
|
tar -xzC "$GOPATH/bin" --exclude COPYING --exclude README.md --strip-components 1 -f- && \
|
|
|
|
|
ln -s $GOPATH/bin/gometalinter $GOPATH/bin/gometalinter.v2
|
|
|
|
|
|
|
|
|
|
# Install packr
|
2019-01-03 23:16:08 +00:00
|
|
|
ENV PACKR_VERSION=1.21.9
|
2018-08-28 23:00:14 +00:00
|
|
|
RUN wget https://github.com/gobuffalo/packr/releases/download/v${PACKR_VERSION}/packr_${PACKR_VERSION}_linux_amd64.tar.gz && \
|
|
|
|
|
tar -vxf packr*.tar.gz -C /tmp/ && \
|
|
|
|
|
mv /tmp/packr /usr/local/bin/packr
|
|
|
|
|
|
|
|
|
|
# Install kubectl
|
2019-01-03 23:16:08 +00:00
|
|
|
# NOTE: keep the version synced with https://storage.googleapis.com/kubernetes-release/release/stable.txt
|
2019-04-04 15:30:35 +00:00
|
|
|
ENV KUBECTL_VERSION=1.14.0
|
2019-01-03 23:16:08 +00:00
|
|
|
RUN curl -L -o /usr/local/bin/kubectl -LO https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \
|
2019-02-25 23:25:57 +00:00
|
|
|
chmod +x /usr/local/bin/kubectl && \
|
|
|
|
|
kubectl version --client
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
# Install ksonnet
|
2019-01-03 23:16:08 +00:00
|
|
|
ENV KSONNET_VERSION=0.13.1
|
2018-08-28 23:00:14 +00:00
|
|
|
RUN wget https://github.com/ksonnet/ksonnet/releases/download/v${KSONNET_VERSION}/ks_${KSONNET_VERSION}_linux_amd64.tar.gz && \
|
|
|
|
|
tar -C /tmp/ -xf ks_${KSONNET_VERSION}_linux_amd64.tar.gz && \
|
2019-02-25 23:25:57 +00:00
|
|
|
mv /tmp/ks_${KSONNET_VERSION}_linux_amd64/ks /usr/local/bin/ks && \
|
|
|
|
|
ks version
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
# Install helm
|
2019-01-03 23:16:08 +00:00
|
|
|
ENV HELM_VERSION=2.12.1
|
2018-08-28 23:00:14 +00:00
|
|
|
RUN wget https://storage.googleapis.com/kubernetes-helm/helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
|
|
|
|
|
tar -C /tmp/ -xf helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
|
2019-02-25 23:25:57 +00:00
|
|
|
mv /tmp/linux-amd64/helm /usr/local/bin/helm && \
|
|
|
|
|
helm version --client
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
# Install kustomize
|
2019-02-25 23:25:57 +00:00
|
|
|
ENV KUSTOMIZE1_VERSION=1.0.11
|
|
|
|
|
RUN curl -L -o /usr/local/bin/kustomize1 https://github.com/kubernetes-sigs/kustomize/releases/download/v${KUSTOMIZE1_VERSION}/kustomize_${KUSTOMIZE1_VERSION}_linux_amd64 && \
|
|
|
|
|
chmod +x /usr/local/bin/kustomize1 && \
|
|
|
|
|
kustomize1 version
|
|
|
|
|
|
2018-08-28 23:00:14 +00:00
|
|
|
|
2019-03-14 21:25:05 +00:00
|
|
|
ENV KUSTOMIZE_VERSION=2.0.3
|
2019-02-25 23:25:57 +00:00
|
|
|
RUN curl -L -o /usr/local/bin/kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64 && \
|
|
|
|
|
chmod +x /usr/local/bin/kustomize && \
|
|
|
|
|
kustomize version
|
2019-02-19 18:31:52 +00:00
|
|
|
|
2019-01-03 23:16:08 +00:00
|
|
|
# Install AWS IAM Authenticator
|
2018-12-20 00:29:48 +00:00
|
|
|
ENV AWS_IAM_AUTHENTICATOR_VERSION=0.4.0-alpha.1
|
|
|
|
|
RUN curl -L -o /usr/local/bin/aws-iam-authenticator https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/${AWS_IAM_AUTHENTICATOR_VERSION}/aws-iam-authenticator_${AWS_IAM_AUTHENTICATOR_VERSION}_linux_amd64 && \
|
2018-09-13 07:09:23 +00:00
|
|
|
chmod +x /usr/local/bin/aws-iam-authenticator
|
|
|
|
|
|
2019-03-09 00:22:04 +00:00
|
|
|
# Install golangci-lint
|
|
|
|
|
RUN wget https://install.goreleaser.com/github.com/golangci/golangci-lint.sh && \
|
|
|
|
|
chmod +x ./golangci-lint.sh && \
|
|
|
|
|
./golangci-lint.sh -b $GOPATH/bin && \
|
|
|
|
|
golangci-lint linters
|
|
|
|
|
|
|
|
|
|
COPY .golangci.yml ${GOPATH}/src/dummy/.golangci.yml
|
|
|
|
|
|
|
|
|
|
RUN cd ${GOPATH}/src/dummy && \
|
|
|
|
|
touch dummy.go \
|
|
|
|
|
golangci-lint run
|
2018-08-28 23:00:14 +00:00
|
|
|
|
2019-02-01 21:12:52 +00:00
|
|
|
####################################################################################################
|
|
|
|
|
# Argo CD Base - used as the base for both the release and dev argocd images
|
|
|
|
|
####################################################################################################
|
2019-06-14 06:20:15 +00:00
|
|
|
FROM $BASE_IMAGE as argocd-base
|
2019-02-01 21:12:52 +00:00
|
|
|
|
2019-06-14 22:50:43 +00:00
|
|
|
USER root
|
|
|
|
|
|
2019-02-01 21:12:52 +00:00
|
|
|
RUN groupadd -g 999 argocd && \
|
|
|
|
|
useradd -r -u 999 -g argocd argocd && \
|
|
|
|
|
mkdir -p /home/argocd && \
|
|
|
|
|
chown argocd:argocd /home/argocd && \
|
|
|
|
|
apt-get update && \
|
|
|
|
|
apt-get install -y git && \
|
|
|
|
|
apt-get clean && \
|
|
|
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
|
|
2019-03-15 21:29:10 +00:00
|
|
|
COPY hack/ssh_known_hosts /etc/ssh/ssh_known_hosts
|
2019-03-08 22:08:02 +00:00
|
|
|
COPY hack/git-ask-pass.sh /usr/local/bin/git-ask-pass.sh
|
2019-02-01 21:12:52 +00:00
|
|
|
COPY --from=builder /usr/local/bin/ks /usr/local/bin/ks
|
|
|
|
|
COPY --from=builder /usr/local/bin/helm /usr/local/bin/helm
|
|
|
|
|
COPY --from=builder /usr/local/bin/kubectl /usr/local/bin/kubectl
|
2019-02-25 23:25:57 +00:00
|
|
|
COPY --from=builder /usr/local/bin/kustomize1 /usr/local/bin/kustomize1
|
2019-02-01 21:12:52 +00:00
|
|
|
COPY --from=builder /usr/local/bin/kustomize /usr/local/bin/kustomize
|
|
|
|
|
COPY --from=builder /usr/local/bin/aws-iam-authenticator /usr/local/bin/aws-iam-authenticator
|
|
|
|
|
|
|
|
|
|
# workaround ksonnet issue https://github.com/ksonnet/ksonnet/issues/298
|
|
|
|
|
ENV USER=argocd
|
|
|
|
|
|
|
|
|
|
USER argocd
|
|
|
|
|
WORKDIR /home/argocd
|
|
|
|
|
|
|
|
|
|
|
2018-08-28 23:00:14 +00:00
|
|
|
####################################################################################################
|
2018-11-05 19:29:01 +00:00
|
|
|
# Argo CD Build stage which performs the actual build of Argo CD binaries
|
2018-08-28 23:00:14 +00:00
|
|
|
####################################################################################################
|
2019-06-27 21:44:49 +00:00
|
|
|
FROM golang:1.12.6 as argocd-build
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
COPY --from=builder /usr/local/bin/dep /usr/local/bin/dep
|
|
|
|
|
COPY --from=builder /usr/local/bin/packr /usr/local/bin/packr
|
|
|
|
|
|
|
|
|
|
# A dummy directory is created under $GOPATH/src/dummy so we are able to use dep
|
|
|
|
|
# to install all the packages of our dep lock file
|
|
|
|
|
COPY Gopkg.toml ${GOPATH}/src/dummy/Gopkg.toml
|
|
|
|
|
COPY Gopkg.lock ${GOPATH}/src/dummy/Gopkg.lock
|
|
|
|
|
|
|
|
|
|
RUN cd ${GOPATH}/src/dummy && \
|
|
|
|
|
dep ensure -vendor-only && \
|
|
|
|
|
mv vendor/* ${GOPATH}/src/ && \
|
|
|
|
|
rmdir vendor
|
|
|
|
|
|
|
|
|
|
# Perform the build
|
|
|
|
|
WORKDIR /go/src/github.com/argoproj/argo-cd
|
|
|
|
|
COPY . .
|
2018-11-27 21:39:06 +00:00
|
|
|
RUN make cli server controller repo-server argocd-util && \
|
|
|
|
|
make CLI_NAME=argocd-darwin-amd64 GOOS=darwin cli
|
2018-08-28 23:00:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
# Final image
|
|
|
|
|
####################################################################################################
|
2019-02-01 21:12:52 +00:00
|
|
|
FROM argocd-base
|
|
|
|
|
COPY --from=argocd-build /go/src/github.com/argoproj/argo-cd/dist/argocd* /usr/local/bin/
|