Skip to content
Snippets Groups Projects
Commit c0b8b690 authored by Neil-Jocelyn Schark's avatar Neil-Jocelyn Schark
Browse files

Merge branch 'new-runner' into 'develop'

changed pipeline for new runner

See merge request !208
parents bb945c3c b7445fef
No related branches found
No related tags found
7 merge requests!246Develop,!245Develop into Master,!244Master into develop2 into master,!219Draft: Testing,!214Test pipelines,!208changed pipeline for new runner,!138Develop
Pipeline #85981 passed
.git
.gitlab
build
documentation
mocks
test
.cobra.yaml
.dockeringore
.gitlab-ci.yaml
ARCHITECTURE.md
CONTRIBUTING.md
Dockerfile.alpine
README.md
variables: variables:
SECURE_ANALYZERS_PREFIX: registry.gitlab.com/gitlab-org/security-products/analyzers GOSDN_IMAGE: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}"
DOCKER_IMAGE_SHA: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}" GOSDN_TESTING_IMAGE: "${CI_REGISTRY_IMAGE}:testing_${CI_COMMIT_SHA}"
CEOS_IMAGE: "$CI_REGISTRY_IMAGE/ceos:latest"
GOLANG_VERSION: "1.16"
stages: stages:
- .pre - .pre
...@@ -17,10 +19,6 @@ workflow: ...@@ -17,10 +19,6 @@ workflow:
when: never when: never
- when: always - when: always
default:
before_script:
- git config --global url."https://$GO_MODULES_USER:$GO_MODULES_ACCESS_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de"
include: include:
- local: '/.gitlab/ci/.build-container.yml' - local: '/.gitlab/ci/.build-container.yml'
- local: '/.gitlab/ci/.code-quality-ci.yml' - local: '/.gitlab/ci/.code-quality-ci.yml'
...@@ -29,4 +27,4 @@ include: ...@@ -29,4 +27,4 @@ include:
- local: '/.gitlab/ci/.containerlab-ci.yml' - local: '/.gitlab/ci/.containerlab-ci.yml'
- local: '/.gitlab/ci/.integration-test.yml' - local: '/.gitlab/ci/.integration-test.yml'
- local: '/.gitlab/ci/.uml-autogen-ci.yml' - local: '/.gitlab/ci/.uml-autogen-ci.yml'
- local: '/.gitlab/ci/.deploy-k8s.yml' # - local: '/.gitlab/ci/.deploy-k8s.yml'
variables: .build: &build
DOCKER_TLS_CERTDIR: "/certs"
build-docker:
before_script:
- echo "override global before script"
stage: build stage: build
allow_failure: false image:
needs: [] name: gcr.io/kaniko-project/executor:debug
entrypoint: [ "" ]
variables: variables:
TAG: $CI_COMMIT_BRANCH TAG: $CI_COMMIT_BRANCH
tags:
- shell-builder
rules: rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables: variables:
...@@ -21,17 +14,33 @@ build-docker: ...@@ -21,17 +14,33 @@ build-docker:
TAG: develop TAG: develop
BUILDARGS: -race BUILDARGS: -race
- when: always - when: always
- variables: before_script:
TAG: $CI_COMMIT_SHA # replace all slashes in the tag with hyphen, because slashes are not allowed in tags
- TAG=${TAG//\//-}
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" >/kaniko/.docker/config.json
needs: []
build-testing-image:
script:
- /kaniko/executor
--cache=true
--context "$CI_PROJECT_DIR"
--dockerfile "Dockerfile"
--build-arg "GOLANG_VERSION=$GOLANG_VERSION"
--build-arg "BUILDARGS=$BUILDARGS"
--destination "$GOSDN_TESTING_IMAGE"
--target "installer"
<<: *build
build-image:
script: script:
# replace all slashes in the tag with hyphen, because slashes are not allowed in tags - /kaniko/executor
- TAG=${TAG//\//-} --cache=true
- TARGET=$CI_REGISTRY_IMAGE:$TAG --context "$CI_PROJECT_DIR"
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY --dockerfile "Dockerfile"
- 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 . --build-arg "GOLANG_VERSION=$GOLANG_VERSION"
- docker push $DOCKER_IMAGE_SHA --build-arg "BUILDARGS=$BUILDARGS"
- docker tag $DOCKER_IMAGE_SHA $TARGET --destination "$GOSDN_IMAGE"
- docker push $TARGET --destination "$CI_REGISTRY_IMAGE:$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 ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} . <<: *build
- docker push ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID}
...@@ -9,3 +9,5 @@ code-quality: ...@@ -9,3 +9,5 @@ code-quality:
codequality: gl-code-quality-report.json codequality: gl-code-quality-report.json
paths: paths:
- gl-code-quality-report.json - gl-code-quality-report.json
needs: []
\ No newline at end of file
variables: variables:
CEOS_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE/ceos:latest"
GOSDN_CONTAINER_IMAGE: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}"
CLAB_DIR: "/mnt" CLAB_DIR: "/mnt"
CLAB_NAME: "clab${CI_PIPELINE_IID}" CLAB_NAME: "clab${CI_PIPELINE_IID}"
...@@ -13,9 +11,9 @@ variables: ...@@ -13,9 +11,9 @@ variables:
- cd ${CLAB_DIR} - cd ${CLAB_DIR}
- export PATH="${PATH}:${CI_PROJECT_DIR}/.gitlab/ci/scripts" - export PATH="${PATH}:${CI_PROJECT_DIR}/.gitlab/ci/scripts"
- echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
- echo ${GOSDN_CONTAINER_IMAGE} - echo ${GOSDN_IMAGE}
- docker pull ${GOSDN_CONTAINER_IMAGE} - docker pull ${GOSDN_IMAGE}
- docker pull ${CEOS_CONTAINER_IMAGE} - docker pull ${CEOS_IMAGE}
.containerlab_template: &containerlab_template .containerlab_template: &containerlab_template
image: alpine:latest image: alpine:latest
...@@ -27,8 +25,8 @@ variables: ...@@ -27,8 +25,8 @@ variables:
- export CLAB_MGMT_SUBNET="172.$firstOctet.$secondOctet.0/24" - export CLAB_MGMT_SUBNET="172.$firstOctet.$secondOctet.0/24"
script: script:
- | - |
sed -e "s|@@CEOS_CONTAINER_IMAGE@@|${CEOS_CONTAINER_IMAGE}|g" \ sed -e "s|@@CEOS_CONTAINER_IMAGE@@|${CEOS_IMAGE}|g" \
-e "s|@@GOSDN_CONTAINER_IMAGE@@|${GOSDN_CONTAINER_IMAGE}|g" \ -e "s|@@GOSDN_CONTAINER_IMAGE@@|${GOSDN_IMAGE}|g" \
-e "s|@@CLAB_NAME@@|${CLAB_NAME}|g" \ -e "s|@@CLAB_NAME@@|${CLAB_NAME}|g" \
-e "s|@@CLAB_MGMT_SUBNET@@|${CLAB_MGMT_SUBNET}|g" \ -e "s|@@CLAB_MGMT_SUBNET@@|${CLAB_MGMT_SUBNET}|g" \
${CLAB_TEMPLATE} > ${CLAB_NAME}.clab.yml ${CLAB_TEMPLATE} > ${CLAB_NAME}.clab.yml
...@@ -47,7 +45,7 @@ containerlab:template:integration: ...@@ -47,7 +45,7 @@ containerlab:template:integration:
containerlab:deploy:integration: containerlab:deploy:integration:
extends: .containerlab_deploy extends: .containerlab_deploy
needs: ["containerlab:template:integration", "build-docker"] needs: ["containerlab:template:integration", "build-image"]
script: script:
- sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure - sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure
- | - |
...@@ -77,7 +75,7 @@ containerlab:destroy: ...@@ -77,7 +75,7 @@ containerlab:destroy:
script: script:
- sudo containerlab destroy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml - sudo containerlab destroy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml
- docker volume rm -f ${CLAB_NAME}-volume - docker volume rm -f ${CLAB_NAME}-volume
- docker image rm -f ${GOSDN_CONTAINER_IMAGE} - docker image rm -f ${GOSDN_IMAGE}
allow_failure: true allow_failure: true
when: always when: always
...@@ -95,7 +93,7 @@ containerlab:destroy: ...@@ -95,7 +93,7 @@ containerlab:destroy:
#containerlab:deploy:develop: #containerlab:deploy:develop:
# extends: # extends:
# - .containerlab_deploy # - .containerlab_deploy
# needs: ["containerlab:template:develop", "build-docker"] # needs: ["containerlab:template:develop", "build-image"]
# variables: # variables:
# CLAB_NAME: "dev" # CLAB_NAME: "dev"
# GOSDN_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE:develop" # GOSDN_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE:develop"
......
build:k8s-bot: build:k8s-bot:
stage: build stage: build
image: golang:1.16 image: golang:$GOLANG_VERSION
rules: rules:
- if: $CI_COMMIT_BRANCH == "develop" - if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
......
.integration-test: &integration-test .integration-test: &integration-test
image: ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} image: $GOSDN_TESTING_IMAGE
stage: integration-test stage: integration-test
needs: needs:
- job: "containerlab:deploy:integration" - job: "containerlab:deploy:integration"
......
.test: &test .test: &test
image: ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} image: $GOSDN_TESTING_IMAGE
stage: test stage: test
variables: variables:
GOSDN_LOG: "nolog" GOSDN_LOG: "nolog"
GOSDN_CHANGE_TIMEOUT: "100ms" GOSDN_CHANGE_TIMEOUT: "100ms"
before_script:
- go get gotest.tools/gotestsum
artifacts:
when: always
reports:
junit: report.xml
needs:
- build-testing-image
unit-test: unit-test:
script: script:
- go test -short -race $(go list ./... | grep -v /forks/ | grep -v /mocks ) -v -coverprofile=coverage.out - gotestsum --junitfile report.xml --format testname -- -short -race $(go list ./... | grep -v /forks/ | grep -v /mocks ) -v -coverprofile=coverage.out
# -short -race $(go list ./... | grep -v /forks/ | grep -v /mocks ) -v
after_script: after_script:
- go tool cover -func=coverage.out - go tool cover -func=coverage.out
<<: *test <<: *test
controller-test: controller-test:
image: golang:1.16
script: script:
- go test -race -v -run TestRun - gotestsum --junitfile report.xml --format testname -- -race -v -run TestRun
<<: *test <<: *test
goplantuml: goplantuml:
image: golang:1.14 image: golang:$GOLANG_VERSION
stage: .post stage: .post
only: only:
- develop - develop
......
FROM golang:1.16-buster AS installer ARG GOLANG_VERSION=1.16
ARG GITLAB_USER
ARG GITLAB_TOKEN
ARG BUILDARGS ARG BUILDARGS
RUN apt-get update && apt-get install -y git FROM golang:$GOLANG_VERSION-buster AS installer
RUN git config --global url."https://$GITLAB_USER:$GITLAB_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de"
RUN go env -w GOPRIVATE=code.fbi.h-da.de/*
WORKDIR /src/gosdn WORKDIR /src/gosdn
COPY go.* ./ COPY go.* ./
...@@ -13,17 +9,11 @@ RUN go mod download ...@@ -13,17 +9,11 @@ RUN go mod download
FROM installer as builder FROM installer as builder
COPY *.go ./ COPY . ./
COPY ./api ./api
COPY ./cmd ./cmd
COPY ./interfaces ./interfaces
COPY ./northbound ./northbound
COPY ./nucleus ./nucleus
COPY ./store ./store
RUN GOOS=linux go build $BUILDARGS ./cmd/gosdn RUN GOOS=linux go build $BUILDARGS ./cmd/gosdn
FROM debian:latest FROM debian:bullseye
EXPOSE 8080 EXPOSE 8080
EXPOSE 55055 EXPOSE 55055
COPY --from=builder /src/gosdn/gosdn . COPY --from=builder /src/gosdn/gosdn .
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment