From bd258798c049a45ab4b3670fd00328be83f99d7e Mon Sep 17 00:00:00 2001
From: Alexey Kuklin <alex@kuklin.eu>
Date: Sun, 27 Oct 2019 02:09:57 +0300
Subject: [PATCH] multistage and local build

---
 .gitlab-ci.yml |  9 +++++----
 Dockerfile     | 43 +++++++++++++++++++++----------------------
 Dockerfile-x86 | 35 -----------------------------------
 3 files changed, 26 insertions(+), 61 deletions(-)
 delete mode 100644 Dockerfile-x86

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4cd7565..5d0aaa5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -32,7 +32,7 @@ ppc64le:
   tags:
     - ppc64le
   script:
-    - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN   --pull -t $IMAGE_ppc64le -f Dockerfile .
+    - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg GITLAB_LOGIN=gitlab-ci-token --build-arg GITLAB_PASSWORD=$CI_JOB_TOKEN   --pull -t $IMAGE_ppc64le -f Dockerfile .
     - docker push $IMAGE_ppc64le
 
 amd64:
@@ -41,7 +41,7 @@ amd64:
   tags:
     - amd64
   script:
-    - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN --pull -t $IMAGE_amd64 -f Dockerfile .
+    - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA --build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME --build-arg CI_PROJECT_NAME=$CI_PROJECT_NAME --build-arg GITLAB_LOGIN=gitlab-ci-token --build-arg GITLAB_PASSWORD=$CI_JOB_TOKEN --pull -t $IMAGE_amd64 -f Dockerfile .
     - docker push $IMAGE_amd64
 
 manifest:
@@ -63,8 +63,9 @@ deploy:
     - master
   script:
     - apk add curl
-    - for ref in $DEPLOYENVS; do curl -X POST -F token=$TRIGGER_TOKEN -F ref=$ref -F variables[branch]=$CI_COMMIT_REF_NAME $TRIGGER_CODE_BUILD; done
-    
+    - for ref in $DEPLOYENVS; do curl -X POST -F token=$TRIGGER_TOKEN     -F ref=$ref -F variables[branch]=$CI_COMMIT_REF_NAME $TRIGGER_CODE_BUILD; done
+    -                            curl -X POST -F token=$TRIGGER_TOKEN_VCL -F ref=$CI_COMMIT_REF_NAME                           $TRIGGER_CODE_VCL
+
 duplicate:
   stage: tech_registry
   tags:
diff --git a/Dockerfile b/Dockerfile
index 8f44a42..d490aab 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,39 +1,38 @@
-FROM registry.vereign.com/docker/go-with-dep:master
+FROM registry.vereign.com/docker/go-with-dep:with-codecgen
 
-#RUN echo deb http://deb.debian.org/debian buster main > /etc/apt/sources.list.d/buster.list \
-#    && apt-get update \
-#    && apt-get install -y --no-install-recommends npm zlib1g-dev 
+ARG GITLAB_LOGIN
+ARG GITLAB_PASSWORD
 
 ENV GOPATH /srv/
-ENV SERVER_OUT "bin/server"
-ENV SERVER_PKG_BUILD ${PKG}
 
 ENV PATH "$PATH:/srv/bin/"
 
-ARG CI_JOB_TOKEN
 ARG CI_PROJECT_NAME
 ARG CI_COMMIT_REF_NAME
 ARG CI_COMMIT_SHA
 
 ENV CI_PROJECT_NAME ${CI_PROJECT_NAME} 
 
-RUN echo project is $CI_PROJECT_NAME && 	mkdir -p /srv/src/code.vereign.com/code/$CI_PROJECT_NAME
+RUN mkdir -p /srv/src/code.vereign.com/code/$CI_PROJECT_NAME
 
 COPY . /srv/src/code.vereign.com/code/$CI_PROJECT_NAME/
 
 RUN cd /srv/src/code.vereign.com/code/$CI_PROJECT_NAME && \
-    git config --global credential.https://code.vereign.com.username gitlab-ci-token && \
-    git config --global credential.helper "store --file /tmp/store" && \
-    echo https://gitlab-ci-token:$CI_JOB_TOKEN@code.vereign.com > /tmp/store && cat /tmp/store && \
-	export PKG=code.vereign.com/code/$CI_PROJECT_NAME && \
-    go get -u github.com/ugorji/go/codec/codecgen && \
-	echo PATH $PATH && \
-	make && rm /tmp/store 
-
-#FROM debian:stretch 
-#RUN mkdir -p /srv/src/code.vereign.com/code/ 
-#COPY --from=0 /srv/src/code.vereign.com/code/data-storage-agent /srv/src/code.vereign.com/code/
-#RUN find /srv/src/code.vereign.com/code/
-	
-ENTRYPOINT /srv/src/code.vereign.com/code/$CI_PROJECT_NAME/bin/server
+    git config --global url."https://$GITLAB_LOGIN:$GITLAB_PASSWORD@code.vereign.com".insteadOf "https://code.vereign.com" && \
+    dep ensure && \
+    go generate vendor/github.com/coreos/etcd/client/keys.go && \
+    go build -ldflags="-X code.vereign.com/code/${CI_PROJECT_NAME}/handler.version=${CI_COMMIT_REF_NAME}.${CI_COMMIT_SHA}" -i -v -o /srv/${CI_PROJECT_NAME} code.vereign.com/code/${CI_PROJECT_NAME}
+
+FROM buildpack-deps:buster-curl
+
+ARG CI_PROJECT_NAME
+ENV CI_PROJECT_NAME ${CI_PROJECT_NAME} 
+
+COPY --from=0 /srv/${CI_PROJECT_NAME} /srv/${CI_PROJECT_NAME}
+
+WORKDIR /srv
+
+RUN mkdir -p /srv/src/code.vereign.com/code/key-storage-agent/bin/ && ln /srv/key-storage-agent /srv/src/code.vereign.com/code/key-storage-agent/bin/server && ln -s /srv/ /go
+
+ENTRYPOINT ["/srv/key-storage-agent"]
 
diff --git a/Dockerfile-x86 b/Dockerfile-x86
deleted file mode 100644
index 27220b5..0000000
--- a/Dockerfile-x86
+++ /dev/null
@@ -1,35 +0,0 @@
-FROM registry.vereign.com/docker/go-with-dep:master-x86
-
-#RUN echo deb http://deb.debian.org/debian buster main > /etc/apt/sources.list.d/buster.list \
-#    && apt-get update \
-#    && apt-get install -y --no-install-recommends npm zlib1g-dev 
-
-ENV GOPATH /srv/
-ENV SERVER_OUT "bin/server"
-ENV SERVER_PKG_BUILD ${PKG}
-
-ARG CI_JOB_TOKEN
-ARG CI_PROJECT_NAME
-ARG CI_COMMIT_REF_NAME
-ARG CI_COMMIT_SHA
-
-ENV CI_PROJECT_NAME ${CI_PROJECT_NAME} 
-
-RUN echo project is $CI_PROJECT_NAME && 	mkdir -p /srv/src/code.vereign.com/code/$CI_PROJECT_NAME
-
-COPY . /srv/src/code.vereign.com/code/$CI_PROJECT_NAME/
-
-RUN cd /srv/src/code.vereign.com/code/$CI_PROJECT_NAME && \
-    git config --global credential.https://code.vereign.com.username gitlab-ci-token && \
-    git config --global credential.helper "store --file /tmp/store" && \
-    echo https://gitlab-ci-token:$CI_JOB_TOKEN@code.vereign.com > /tmp/store && cat /tmp/store && \
-	export PKG=code.vereign.com/code/$CI_PROJECT_NAME && \
-	make && rm /tmp/store 
-
-#FROM debian:stretch 
-#RUN mkdir -p /srv/src/code.vereign.com/code/ 
-#COPY --from=0 /srv/src/code.vereign.com/code/data-storage-agent /srv/src/code.vereign.com/code/
-#RUN find /srv/src/code.vereign.com/code/
-	
-ENTRYPOINT /srv/src/code.vereign.com/code/$CI_PROJECT_NAME/bin/server
-
-- 
GitLab