From dadd38daac7687b72bdfc9c7eca4be920f2a3cfd Mon Sep 17 00:00:00 2001
From: Neil-Jocelyn Schark <neil-jocelyn.schark@stud.h-da.de>
Date: Mon, 21 Mar 2022 16:28:46 +0000
Subject: [PATCH] stnescha/init monorepo/ci

---
 .gitlab/ci/.build-container.yml | 34 +++++++++------------------------
 .gitlab/ci/.containerlab-ci.yml |  2 +-
 .gitlab/ci/.test.yml            |  4 +++-
 controller/Dockerfile           | 19 +++++++++++++++++-
 4 files changed, 31 insertions(+), 28 deletions(-)

diff --git a/.gitlab/ci/.build-container.yml b/.gitlab/ci/.build-container.yml
index 648feba53..d4122a622 100644
--- a/.gitlab/ci/.build-container.yml
+++ b/.gitlab/ci/.build-container.yml
@@ -1,16 +1,12 @@
 .build: &build
     stage: build
-    image:
-        name: gcr.io/kaniko-project/executor:debug
-        entrypoint: [""]
+    tags:
+      - shell-builder
     variables:
-        TAG: $CI_COMMIT_BRANCH
+        TAG: $CI_COMMIT_SHA
     before_script:
         # replace all slashes in the tag with hyphen, because slashes are not allowed in tags
-        - cd controller/
         - TAG=${TAG//\//-}
-        - mkdir -p /kaniko/.docker
-        - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"username\":\"$CI_DEPENDENCY_PROXY_USER\",\"password\":\"$CI_DEPENDENCY_PROXY_TOKEN\"}}}" > /kaniko/.docker/config.json
     needs: []
 
 build-testing-image:
@@ -24,15 +20,9 @@ build-testing-image:
               BUILDARGS: -race
         - when: always
     script:
-        - /kaniko/executor
-          --cache=true
-          --context "$CI_PROJECT_DIR"
-          --dockerfile "Dockerfile"
-          --build-arg "GOLANG_VERSION=$GOLANG_VERSION"
-          --build-arg "BUILDARGS=$BUILDARGS"
-          --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"
-          --destination "$GOSDN_TESTING_IMAGE"
-          --target "installer"
+        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+        - docker build -t "$GOSDN_TESTING_IMAGE" -f "${CI_PROJECT_DIR}/controller/Dockerfile" --target "installer" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$GOSDN_TESTING_IMAGE"
     <<: *build
 
 build-image:
@@ -48,13 +38,7 @@ build-image:
               BUILDARGS: -race
         - when: always
     script:
-        - /kaniko/executor
-          --cache=true
-          --context "$CI_PROJECT_DIR"
-          --dockerfile "Dockerfile"
-          --build-arg "GOLANG_VERSION=$GOLANG_VERSION"
-          --build-arg "BUILDARGS=$BUILDARGS"
-          --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"
-          --destination "$GOSDN_IMAGE"
-          --destination "$CI_REGISTRY_IMAGE:$TAG"
+        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+        - docker build -t "$CI_REGISTRY_IMAGE:$TAG" -f "${CI_PROJECT_DIR}/controller/Dockerfile" --target "installer" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$CI_REGISTRY_IMAGE:$TAG"
     <<: *build
diff --git a/.gitlab/ci/.containerlab-ci.yml b/.gitlab/ci/.containerlab-ci.yml
index a37e7243e..3b0c201e4 100644
--- a/.gitlab/ci/.containerlab-ci.yml
+++ b/.gitlab/ci/.containerlab-ci.yml
@@ -48,7 +48,7 @@ variables:
 containerlab:template:integration:
     extends: .containerlab_template
     variables:
-        CLAB_TEMPLATE: "${CI_PROJECT_DIR}/test/containerlab/int01.clab.tmpl.yml"
+        CLAB_TEMPLATE: "${CI_PROJECT_DIR}/controller/test/containerlab/int01.clab.tmpl.yml"
 
 containerlab:deploy:integration:
     extends: .containerlab_deploy
diff --git a/.gitlab/ci/.test.yml b/.gitlab/ci/.test.yml
index 226d5ce0b..b494223a2 100644
--- a/.gitlab/ci/.test.yml
+++ b/.gitlab/ci/.test.yml
@@ -15,6 +15,7 @@
 
 unit-test:
     script:
+        - cd controller
         - make ci-unit-test
     after_script:
         - go tool cover -func=coverage.out
@@ -22,6 +23,7 @@ unit-test:
 
 controller-test:
     script:
+        - cd controller
         - make ci-controller-test
     <<: *test
 
@@ -29,5 +31,5 @@ test-build:
     artifacts:
         when: never
     script:
-        - GOOS=linux go build $BUILDARGS ./cmd/gosdn
+        - make build
     <<: *test
diff --git a/controller/Dockerfile b/controller/Dockerfile
index a62551bad..355668ae4 100644
--- a/controller/Dockerfile
+++ b/controller/Dockerfile
@@ -1,4 +1,21 @@
-FROM scratch
+ARG GOLANG_VERSION=1.18
+ARG BUILDARGS
+ARG $GITLAB_PROXY
+
+FROM ${GITLAB_PROXY}golang:$GOLANG_VERSION-buster AS installer
+
+WORKDIR /src/gosdn/controller
+COPY go.* ./
+RUN go mod download
+
+FROM installer as builder
+
+COPY ./controller ./
+
+RUN make build
+
+
+FROM scratch as gosdn
 
 COPY artifacts/gosdn /
 
-- 
GitLab