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