diff --git a/.gitlab/ci/.build-container.yml b/.gitlab/ci/.build-container.yml index 648feba5377339f5ccd166ae88f13db9d18833c4..d4122a62259caca73b7a2cd97b496963c2007d1a 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 a37e7243ed64139f927bf28d1afdfdd23ef4ad28..3b0c201e4b222782f60a3790be0f38f599544a4e 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 226d5ce0b0ef158676e1714ed1350c0545e829c1..b494223a2b8104d7d37b9ba316348f815f633375 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 a62551bad85002175b01294022e40fb7d28aaa17..355668ae40bc0beca422f5187b50f355435abe37 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 /