Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • danet/gosdn
1 result
Show changes
Commits on Source (2)
......@@ -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