Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
goSDN
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
danet
goSDN
Merge requests
!189
Resolve "Deploy develop to Containerlab"
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Resolve "Deploy develop to Containerlab"
133-Deploy-develop-to-Containerlab
into
develop
Overview
0
Commits
22
Pipelines
10
Changes
9
Merged
Ghost User
requested to merge
133-Deploy-develop-to-Containerlab
into
develop
3 years ago
Overview
0
Commits
22
Pipelines
10
Changes
1
Expand
Description
Related Issue
Motivation and Context
How Has This Been Tested?
Screenshots (if appropriate):
Types of changes
Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
Checklist:
My code follows the code style of this project.
My change requires a change to the documentation.
I have updated the documentation accordingly.
I have read the
CONTRIBUTING
document.
I have added tests to cover my changes.
All new and existing tests passed.
Closes
#133 (closed)
Edited
3 years ago
by
Ghost User
0
0
Merge request reports
Compare
version 6
version 7
ab491f36
3 years ago
version 6
77823d8d
3 years ago
version 5
e619829c
3 years ago
version 4
8bdb691d
3 years ago
version 3
b46be190
3 years ago
version 2
db25e822
3 years ago
version 1
e9745faa
3 years ago
develop (base)
and
version 7
latest version
5119ec41
22 commits,
3 years ago
version 7
ab491f36
21 commits,
3 years ago
version 6
77823d8d
20 commits,
3 years ago
version 5
e619829c
19 commits,
3 years ago
version 4
8bdb691d
18 commits,
3 years ago
version 3
b46be190
17 commits,
3 years ago
version 2
db25e822
16 commits,
3 years ago
version 1
e9745faa
15 commits,
3 years ago
Show latest version
1 file
+
1
−
3
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
build/ci/.containerlab-ci.yml
+
92
−
43
Options
variables
:
CEOS_CONTAINER_IMAGE
:
"
$CI_REGISTRY_IMAGE/ceos:latest"
CLAB_INT1_TEMPLATE
:
"
${CI_PROJECT_DIR}/test/containerlab/int01.clab.yml"
CLAB_NAME
:
"
clab${CI_PIPELINE_IID}"
GOSDN_CONTAINER_IMAGE
:
"
${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}"
CLAB_DIR
:
"
/mnt"
CLAB_NAME
:
"
clab${CI_PIPELINE_IID}"
# Templates for Job Types
.containerlab_deploy
:
&containerlab_deploy
stage
:
apply
tags
:
-
shell
before_script
:
-
cd ${CLAB_DIR}
-
export PATH="${PATH}:${CI_PROJECT_DIR}/build/ci/scripts"
-
echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
-
echo ${GOSDN_CONTAINER_IMAGE}
-
docker pull ${GOSDN_CONTAINER_IMAGE}
-
docker pull ${CEOS_CONTAINER_IMAGE}
.containerlab_rules
:
&containerlab_rules
rules
:
-
if
:
$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop')
-
if
:
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-
if
:
$CI_NIGHTLY
containerlab:template
:
extends
:
.containerlab_rules
.containerlab_template
:
&containerlab_template
image
:
alpine:latest
stage
:
build
before_script
:
-
echo "Override global before_script"
script
:
-
./build/ci/generate_octet.sh $CI_COMMIT_SHA >> $(pwd)/firstOctet
-
./build/ci/generate_octet.sh $CI_PIPELINE_ID >> $(pwd)/secondOctet
-
export firstOctet=$(cat $(pwd)/firstOctet)
-
export secondOctet=$(cat $(pwd)/secondOctet)
-
export PATH="${PATH}:${CI_PROJECT_DIR}/build/ci/scripts"
-
firstOctet=$(generate_octet.sh $CI_COMMIT_SHA)
-
secondOctet=$(generate_octet.sh $CI_PIPELINE_ID)
-
export CLAB_MGMT_SUBNET="172.$firstOctet.$secondOctet.0/24"
script
:
-
|
sed -e "s|@@CEOS_CONTAINER_IMAGE@@|${CEOS_CONTAINER_IMAGE}|g" \
-e "s|@@GOSDN_CONTAINER_IMAGE@@|${
DOCK
ER_IMAGE
_SHA
}|g" \
-e "s|@@GOSDN_CONTAINER_IMAGE@@|${
GOSDN_CONTAIN
ER_IMAGE}|g" \
-e "s|@@CLAB_NAME@@|${CLAB_NAME}|g" \
-e "s|@@CLAB_MGMT_SUBNET@@|${CLAB_MGMT_SUBNET}|g" \
${CLAB_
INT1_
TEMPLATE} >
${CI_PROJECT_DIR}/
${CLAB_NAME}.clab.yml
${CLAB_TEMPLATE} > ${CLAB_NAME}.clab.yml
-
cat ${CLAB_NAME}.clab.yml
artifacts
:
name
:
${CLAB_NAME}
paths
:
-
${CI_PROJECT_DIR}/
${CLAB_NAME}.clab.yml
-
${CLAB_NAME}.clab.yml
containerlab:deploy
:
extends
:
-
.containerlab_rules
stage
:
apply
needs
:
[
"
containerlab:template"
,
"
build-docker"
]
tags
:
-
shell
before_script
:
-
cd ${CLAB_DIR}
-
echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
-
echo $DOCKER_IMAGE_SHA
-
docker pull $DOCKER_IMAGE_SHA
-
docker pull ${CEOS_CONTAINER_IMAGE}
# JOBS
containerlab:template:integration
:
extends
:
.containerlab_template
variables
:
CLAB_TEMPLATE
:
"
${CI_PROJECT_DIR}/test/containerlab/int01.clab.tmpl.yml"
rules
:
-
if
:
$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop')
-
if
:
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-
if
:
$CI_NIGHTLY
containerlab:deploy:integration
:
extends
:
.containerlab_deploy
needs
:
[
"
containerlab:template:integration"
,
"
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
-
echo "GOSDN_GRPC_PORT=$(docker inspect -f '{{ (index (index .NetworkSettings.Ports "55055/tcp") 0).HostPort }}' clab-${CLAB_NAME}-gosdn)" >> ${CI_PROJECT_DIR}/build.env
-
echo "CEOS1_PORT=$(docker inspect -f '{{ (index (index .NetworkSettings.Ports "6030/tcp") 0).HostPort }}' clab-${CLAB_NAME}-ceos1)" >> ${CI_PROJECT_DIR}/build.env
dependencies
:
-
containerlab:template
-
|
echo -e "\
GOSDN_HTTP_PORT=$(docker_host_port 8080 clab-${CLAB_NAME}-gosdn)\n\
GOSDN_GRPC_PORT=$(docker_host_port 55055 clab-${CLAB_NAME}-gosdn)\n\
CEOS1_PORT=$(docker_host_port 6030 clab-${CLAB_NAME}-ceos1)" \
> ${CI_PROJECT_DIR}/build.env
-
cat ${CI_PROJECT_DIR}/build.env
artifacts
:
reports
:
dotenv
:
${CI_PROJECT_DIR}/build.env
rules
:
-
if
:
$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop')
-
if
:
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-
if
:
$CI_NIGHTLY
containerlab:destroy
:
stage
:
.post
tags
:
-
shell
before_script
:
-
cd ${CLAB_DIR}
script
:
-
sudo containerlab destroy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml
-
docker volume rm -f ${CLAB_NAME}-volume
-
docker image rm -f ${GOSDN_CONTAINER_IMAGE}
allow_failure
:
true
rules
:
-
if
:
$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop')
when
:
always
@@ -68,15 +88,44 @@ containerlab:destroy:
when
:
always
-
if
:
$CI_NIGHTLY
when
:
always
containerlab:template:develop
:
extends
:
.containerlab_template
variables
:
CLAB_NAME
:
"
dev"
CLAB_TEMPLATE
:
"
${CI_PROJECT_DIR}/test/containerlab/dev.clab.tmpl.yml"
GOSDN_CONTAINER_IMAGE
:
"
$CI_REGISTRY_IMAGE:develop"
rules
:
-
if
:
$CI_COMMIT_BRANCH == 'develop' && $CI_NIGHTLY ==
null
containerlab:deploy:develop
:
extends
:
-
.containerlab_deploy
needs
:
[
"
containerlab:template:develop"
,
"
build-docker"
]
variables
:
CLAB_NAME
:
"
dev"
GOSDN_CONTAINER_IMAGE
:
"
$CI_REGISTRY_IMAGE:develop"
script
:
-
sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure
rules
:
-
if
:
$CI_COMMIT_BRANCH == 'develop' && $CI_NIGHTLY ==
null
containerlab:clean
:
stage
:
.post
tags
:
-
shell
before_script
:
-
cd ${CLAB_DIR}
script
:
-
sudo containerlab destroy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml
-
docker volume rm -f ${CLAB_NAME}-volume
-
docker image rm -f ${DOCKER_IMAGE_SHA}
-
docker kill $(docker ps -q) ||
true
-
docker rm $(docker ps -a -q) ||
true
-
docker rmi $(docker images | grep 'registry.code.fbi.h-da.de/danet/gosdn ' | awk '{print $3}') ||
true
-
sudo rm -rf ${CLAB_DIR}/* ||
true
-
sudo sed -i 's|.*clab.*||g' /etc/hosts
allow_failure
:
true
dependencies
:
-
containerlab:template
rules
:
-
if
:
$CI_SCHEDULE_CLEAN
when
:
always
Loading