Skip to content
Snippets Groups Projects
Commit 73363040 authored by Neil-Jocelyn Schark's avatar Neil-Jocelyn Schark Committed by Manuel Kieweg
Browse files

Resolve "Improve pipeline speed"

parent 82a94dbb
Branches
No related tags found
9 merge requests!246Develop,!245Develop into Master,!244Master into develop2 into master,!219Draft: Testing,!214Test pipelines,!195DO NOT MERGE 2,!194DO NOT MERGE! just for testing,!172Resolve "Improve pipeline speed",!138Develop
......@@ -12,8 +12,8 @@ workflow:
stages:
- .pre
- test
- build
- test
- apply
- integration-test
- deploy
......@@ -29,5 +29,6 @@ include:
- local: '/build/ci/.build-container.yml'
- local: '/build/ci/.test.yml'
- local: '/build/ci/.containerlab-ci.yml'
- local: '/build/ci/.deploy-k8s.yml'
- local: '/build/ci/.uml-autogen-ci.yml'
- local: '/build/ci/.deploy-k8s.yml'
FROM golang:1.16-buster AS builder
FROM golang:1.16-buster AS installer
ARG GITLAB_USER
ARG GITLAB_TOKEN
ARG BUILDARGS
WORKDIR /src/gosdn
COPY . .
RUN apt-get update && apt-get install -y git
RUN git config --global url."https://$GITLAB_USER:$GITLAB_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de"
WORKDIR /src/gosdn
COPY go.* ./
RUN go mod download
FROM installer as builder
COPY controller.go .
COPY http.go .
COPY ./api ./api
COPY ./cmd ./cmd
COPY ./database ./database
COPY ./forks ./forks
COPY ./interfaces ./interfaces
COPY ./northbound ./northbound
COPY ./nucleus ./nucleus
RUN GOOS=linux go build $BUILDARGS ./cmd/gosdn
FROM debian:latest
EXPOSE 8080
EXPOSE 55055
COPY --from=builder /src/gosdn/gosdn .
COPY --from=builder /src/gosdn/configs ./configs
COPY ./configs ./configs
ENTRYPOINT [ "./gosdn" ]
CMD [""]
variables:
DOCKER_TLS_CERTDIR: "/certs"
.build: &build
build-docker:
before_script:
- echo "override global before script"
image: docker:19.03.12
services:
- name: docker:19.03.12-dind
command: ["--registry-mirror", "http://141.100.70.170:6000", "--dns", "1.1.1.1"]
stage: build
allow_failure: false
needs: []
tags:
- dind
script:
- docker info
- >
docker build \
--build-arg GITLAB_USER=$GO_MODULES_USER \
--build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN \
--build-arg BUILDARGS=$BUILDARGS \
-t $DOCKER_IMAGE_SHA .
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker push $DOCKER_IMAGE_SHA
- docker tag $DOCKER_IMAGE_SHA $TAG
- docker tag $DOCKER_IMAGE_SHA registry.code.fbi.h-da.de/cocsn/gosdn:${CI_PIPELINE_ID}
- docker push $TAG
- shell-builder
build:develop:
variables:
TAG: $CI_REGISTRY_IMAGE:develop
BUILDARGS: -race
rules:
- if: $CI_COMMIT_BRANCH == "develop" && $CI_NIGHTLY == null
<<: *build
build:nightly:develop:
variables:
TAG: $CI_REGISTRY_IMAGE:nightly-develop
BUILDARGS: -race
rules:
variables:
TAG: $CI_REGISTRY_IMAGE:develop
BUILDARGS: -race
- if: $CI_NIGHTLY == "develop"
<<: *build
build:nightly:
variables:
TAG: $CI_REGISTRY_IMAGE:nightly
rules:
variables:
TAG: $CI_REGISTRY_IMAGE:nightly-develop
BUILDARGS: -race
- if: $CI_NIGHTLY == "mainline"
<<: *build
build:merge-request:
variables:
TAG: $CI_REGISTRY_IMAGE:merge-request
BUILDARGS: -race
rules:
variables:
TAG: $CI_REGISTRY_IMAGE:nightly
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
<<: *build
build:latest:
variables:
TAG: $CI_REGISTRY_IMAGE:latest
rules:
variables:
TAG: $CI_REGISTRY_IMAGE:merge-request
BUILDARGS: -race
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_NIGHTLY == null
<<: *build
\ No newline at end of file
variables:
TAG: $CI_REGISTRY_IMAGE:latest
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --build-arg GITLAB_USER=$GO_MODULES_USER --build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN --build-arg BUILDARGS=$BUILDARGS -t $DOCKER_IMAGE_SHA .
- docker push $DOCKER_IMAGE_SHA
- docker tag $DOCKER_IMAGE_SHA $TAG
- docker push $TAG
- docker build --target installer --build-arg GITLAB_USER=$GO_MODULES_USER --build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN --build-arg BUILDARGS=$BUILDARGS -t registry.code.fbi.h-da.de/cocsn/gosdn:testing_${CI_PIPELINE_ID} .
- docker push registry.code.fbi.h-da.de/cocsn/gosdn:testing_${CI_PIPELINE_ID}
\ No newline at end of file
......@@ -48,12 +48,12 @@ containerlab:template:
paths:
- ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml
containerlab:deploy:
extends:
- .containerlab_template
- .containerlab_rules
stage: apply
needs: ["containerlab:template", "build-docker"]
script:
- sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure
- echo "GOSDN_HTTP_PORT=$(docker inspect -f '{{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}' clab-${CLAB_NAME}-gosdn)" >> ${CI_PROJECT_DIR}/build.env
......
......@@ -27,7 +27,7 @@ deploy:develop:
<<: *deploy
stage: deploy
needs:
- job: "build:develop"
- job: "build-docker"
- job: "build:k8s-bot"
artifacts: true
rules:
......@@ -37,7 +37,7 @@ deploy:latest:
<<: *deploy
stage: deploy
needs:
- job: "build:latest"
- job: "build-docker"
- job: "build:k8s-bot"
artifacts: true
rules:
......@@ -47,7 +47,7 @@ deploy:nightly:mainline:
<<: *deploy
stage: deploy
needs:
- job: "build:latest"
- job: "build-docker"
- job: "build:k8s-bot"
artifacts: true
rules:
......@@ -57,7 +57,7 @@ deploy:nightly:develop:
<<: *deploy
stage: deploy
needs:
- job: "build:latest"
- job: "build-docker"
- job: "build:k8s-bot"
artifacts: true
rules:
......
.integration-test: &integration-test
image: golang:1.16
image: registry.code.fbi.h-da.de/cocsn/gosdn:testing_${CI_PIPELINE_ID}
stage: integration-test
needs:
- job: "containerlab:deploy"
......@@ -34,7 +34,7 @@ integration-test:api:
- go test -race -v -run TestApiIntegration
.test: &test
image: golang:1.16
image: registry.code.fbi.h-da.de/cocsn/gosdn:testing_${CI_PIPELINE_ID}
stage: test
allow_failure: true
variables:
......@@ -55,6 +55,7 @@ unit-test:
<<: *test
controller-test:
image: golang:1.16
script:
- go test -race -v -run TestRun
<<: *test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment