Commit 0d877c0a authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

GitLab CI/CD pipeline:

- Upgraded other CI/CD tests to meet new MicroK8s/Docker checks/cleanup
- Reactivated those tests
parent 4f2931c9
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -14,18 +14,18 @@

# include the individual .gitlab-ci.yml of each end-to-end integration test
include:
#  - local: '/src/tests/ofc22/.gitlab-ci.yml'
#  #- local: '/src/tests/oeccpsc22/.gitlab-ci.yml'
#  - local: '/src/tests/ecoc22/.gitlab-ci.yml'
#  #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml'
#  #- local: '/src/tests/ofc23/.gitlab-ci.yml'
#  - local: '/src/tests/ofc24/.gitlab-ci.yml'
#  - local: '/src/tests/eucnc24/.gitlab-ci.yml'
#  #- local: '/src/tests/ofc25-camara-agg-net-controller/.gitlab-ci.yml'
#  #- local: '/src/tests/ofc25-camara-e2e-controller/.gitlab-ci.yml'
#  #- local: '/src/tests/ofc25/.gitlab-ci.yml'
#  #- local: '/src/tests/ryu-openflow/.gitlab-ci.yml'
  - local: '/src/tests/ofc22/.gitlab-ci.yml'
  #- local: '/src/tests/oeccpsc22/.gitlab-ci.yml'
  - local: '/src/tests/ecoc22/.gitlab-ci.yml'
  #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml'
  #- local: '/src/tests/ofc23/.gitlab-ci.yml'
  - local: '/src/tests/ofc24/.gitlab-ci.yml'
  - local: '/src/tests/eucnc24/.gitlab-ci.yml'
  #- local: '/src/tests/ofc25-camara-agg-net-controller/.gitlab-ci.yml'
  #- local: '/src/tests/ofc25-camara-e2e-controller/.gitlab-ci.yml'
  #- local: '/src/tests/ofc25/.gitlab-ci.yml'
  #- local: '/src/tests/ryu-openflow/.gitlab-ci.yml'
  - local: '/src/tests/qkd_end2end/.gitlab-ci.yml'

#  - local: '/src/tests/tools/mock_tfs_nbi_dependencies/.gitlab-ci.yml'
  - local: '/src/tests/tools/mock_tfs_nbi_dependencies/.gitlab-ci.yml'
  - local: '/src/tests/tools/mock_qkd_node/.gitlab-ci.yml'
+63 −2
Original line number Diff line number Diff line
@@ -45,13 +45,61 @@ end2end_test ecoc22:
  #needs:
  #  - build ecoc22
  before_script:
    # Do Docker cleanup
    - docker ps --all --quiet | xargs --no-run-if-empty docker stop
    - docker container prune --force
    - docker ps --all --quiet | xargs --no-run-if-empty docker rm --force
    - docker image prune --force
    - docker network prune --force
    - docker volume prune --all --force
    - docker buildx prune --force

    # Check MicroK8s is ready
    - microk8s status --wait-ready

    # Always delete Kubernetes namespaces
    - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}')
    - echo "K8S_NAMESPACES=${K8S_NAMESPACES}"

    - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats')
    - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}"
    - >
      for ns in ${OLD_NATS_NAMESPACES}; do
        if [[ "$ns" == nats* ]]; then
          helm3 uninstall "$ns" -n "$ns"
        fi
      done
    - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)')
    - echo "OLD_NAMESPACES=${OLD_NAMESPACES}"
    - kubectl delete namespace ${OLD_NAMESPACES} || true

    # Clean-up Kubernetes Failed pods
    - >
      kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed
      -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name |
      xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace

    # Login Docker repository
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

  script:
    # Download Docker image to run the test
    - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest"

    # Check MicroK8s is ready
    - microk8s status --wait-ready
    - LOOP_MAX_ATTEMPTS=10
    - LOOP_COUNTER=0
    - >
      while ! kubectl get pods --all-namespaces &> /dev/null; do
        printf "%c" "."
        sleep 1
        LOOP_COUNTER=$((LOOP_COUNTER + 1))
        if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then
          echo "Max attempts reached, exiting the loop."
          exit 1
        fi
      done
    - kubectl get pods --all-namespaces

    # Configure TeraFlowSDN deployment
@@ -62,6 +110,7 @@ end2end_test ecoc22:
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/sliceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml

    - source src/tests/${TEST_NAME}/deploy_specs.sh
    #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}"
    #- export TFS_SKIP_BUILD="YES"
@@ -88,7 +137,9 @@ end2end_test ecoc22:
      --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh"
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      $CI_REGISTRY_IMAGE/${TEST_NAME}:latest

  after_script:
    # Dump TeraFlowSDN component logs
    - source src/tests/${TEST_NAME}/deploy_specs.sh
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server
@@ -96,8 +147,18 @@ end2end_test ecoc22:
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
    - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi

    # Clean up
    - docker rm -f ${TEST_NAME} || true
    - kubectl delete namespaces tfs || true
    - docker rm --force qkd-node-01 qkd-node-02 qkd-node-03
    - docker network rm --force qkd-node-br
    - docker volume prune --force
    - docker image prune --force

    # Clean old docker images
    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi

  #coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+56 −6
Original line number Diff line number Diff line
@@ -45,16 +45,64 @@ end2end_test eucnc24:
  #needs:
  #  - build eucnc24
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker rm -f ${TEST_NAME} || true
    # Cleanup old ContainerLab scenarios
    - containerlab destroy --all --cleanup || true

    # Do Docker cleanup
    - docker ps --all --quiet | xargs --no-run-if-empty docker stop
    - docker container prune --force
    - docker ps --all --quiet | xargs --no-run-if-empty docker rm --force
    - docker image prune --force
    - docker network prune --force
    - docker volume prune --all --force
    - docker buildx prune --force

    # Check MicroK8s is ready
    - microk8s status --wait-ready

    # Always delete Kubernetes namespaces
    - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}')
    - echo "K8S_NAMESPACES=${K8S_NAMESPACES}"

    - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats')
    - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}"
    - >
      for ns in ${OLD_NATS_NAMESPACES}; do
        if [[ "$ns" == nats* ]]; then
          helm3 uninstall "$ns" -n "$ns"
        fi
      done
    - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)')
    - echo "OLD_NAMESPACES=${OLD_NAMESPACES}"
    - kubectl delete namespace ${OLD_NAMESPACES} || true

    # Clean-up Kubernetes Failed pods
    - >
      kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed
      -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name |
      xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace

    # Login Docker repository
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

  script:
    # Download Docker image to run the test
    - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest"

    # Check MicroK8s is ready
    - microk8s status --wait-ready
    - LOOP_MAX_ATTEMPTS=10
    - LOOP_COUNTER=0
    - >
      while ! kubectl get pods --all-namespaces &> /dev/null; do
        printf "%c" "."
        sleep 1
        LOOP_COUNTER=$((LOOP_COUNTER + 1))
        if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then
          echo "Max attempts reached, exiting the loop."
          exit 1
        fi
      done
    - kubectl get pods --all-namespaces

    # Deploy ContainerLab Scenario
@@ -83,7 +131,6 @@ end2end_test eucnc24:
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="frontend").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/pathcompservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/monitoringservice.yaml

    - source src/tests/${TEST_NAME}/deploy_specs.sh
    #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}"
@@ -95,7 +142,7 @@ end2end_test eucnc24:
    - ./deploy/crdb.sh
    - ./deploy/nats.sh
    - ./deploy/kafka.sh
    - ./deploy/qdb.sh
    #- ./deploy/qdb.sh
    - ./deploy/tfs.sh
    - ./deploy/show.sh

@@ -233,9 +280,8 @@ end2end_test eucnc24:
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c frontend
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
    #- kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice -c server

    # Destroy Scenario
    # Clean up
    - docker rm -f ${TEST_NAME} || true
    - RUNNER_PATH=`pwd`
    #- cd $PWD/src/tests/${TEST_NAME}
@@ -244,6 +290,10 @@ end2end_test eucnc24:
    - sudo rm -rf clab-eucnc24/ .eucnc24.clab.yml.bak || true
    - cd $RUNNER_PATH
    - kubectl delete namespaces tfs || true
    - docker rm --force qkd-node-01 qkd-node-02 qkd-node-03
    - docker network rm --force qkd-node-br
    - docker volume prune --force
    - docker image prune --force

    # Clean old docker images
    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+62 −2
Original line number Diff line number Diff line
@@ -45,13 +45,61 @@ end2end_test ofc22:
  #needs:
  #  - build ofc22
  before_script:
    # Do Docker cleanup
    - docker ps --all --quiet | xargs --no-run-if-empty docker stop
    - docker container prune --force
    - docker ps --all --quiet | xargs --no-run-if-empty docker rm --force
    - docker image prune --force
    - docker network prune --force
    - docker volume prune --all --force
    - docker buildx prune --force

    # Check MicroK8s is ready
    - microk8s status --wait-ready

    # Always delete Kubernetes namespaces
    - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}')
    - echo "K8S_NAMESPACES=${K8S_NAMESPACES}"

    - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats')
    - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}"
    - >
      for ns in ${OLD_NATS_NAMESPACES}; do
        if [[ "$ns" == nats* ]]; then
          helm3 uninstall "$ns" -n "$ns"
        fi
      done
    - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)')
    - echo "OLD_NAMESPACES=${OLD_NAMESPACES}"
    - kubectl delete namespace ${OLD_NAMESPACES} || true

    # Clean-up Kubernetes Failed pods
    - >
      kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed
      -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name |
      xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace

    # Login Docker repository
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

  script:
    # Download Docker image to run the test
    - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest"

    # Check MicroK8s is ready
    - microk8s status --wait-ready
    - LOOP_MAX_ATTEMPTS=10
    - LOOP_COUNTER=0
    - >
      while ! kubectl get pods --all-namespaces &> /dev/null; do
        printf "%c" "."
        sleep 1
        LOOP_COUNTER=$((LOOP_COUNTER + 1))
        if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then
          echo "Max attempts reached, exiting the loop."
          exit 1
        fi
      done
    - kubectl get pods --all-namespaces

    # Configure TeraFlowSDN deployment
@@ -63,6 +111,7 @@ end2end_test ofc22:
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/sliceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/monitoringservice.yaml

    - source src/tests/${TEST_NAME}/deploy_specs.sh
    #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}"
    #- export TFS_SKIP_BUILD="YES"
@@ -90,6 +139,7 @@ end2end_test ofc22:
      --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
      $CI_REGISTRY_IMAGE/${TEST_NAME}:latest
  after_script:
    # Dump TeraFlowSDN component logs
    - source src/tests/${TEST_NAME}/deploy_specs.sh
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server
@@ -99,8 +149,18 @@ end2end_test ofc22:
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/ztpservice -c ztpservice
    - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi

    # Clean up
    - docker rm -f ${TEST_NAME} || true
    - kubectl delete namespaces tfs || true
    - docker rm --force qkd-node-01 qkd-node-02 qkd-node-03
    - docker network rm --force qkd-node-br
    - docker volume prune --force
    - docker image prune --force

    # Clean old docker images
    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi

  #coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+56 −7
Original line number Diff line number Diff line
@@ -45,9 +45,42 @@ end2end_test ofc24:
  #needs:
  #  - build ofc24
  before_script:
    # Do Docker cleanup
    - docker ps --all --quiet | xargs --no-run-if-empty docker stop
    - docker container prune --force
    - docker ps --all --quiet | xargs --no-run-if-empty docker rm --force
    - docker image prune --force
    - docker network prune --force
    - docker volume prune --all --force
    - docker buildx prune --force

    # Check MicroK8s is ready
    - microk8s status --wait-ready

    # Always delete Kubernetes namespaces
    - export K8S_NAMESPACES=$(kubectl get namespace -o jsonpath='{.items[*].metadata.name}')
    - echo "K8S_NAMESPACES=${K8S_NAMESPACES}"

    - export OLD_NATS_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^nats')
    - echo "OLD_NATS_NAMESPACES=${OLD_NATS_NAMESPACES}"
    - >
      for ns in ${OLD_NATS_NAMESPACES}; do
        if [[ "$ns" == nats* ]]; then
          helm3 uninstall "$ns" -n "$ns"
        fi
      done
    - export OLD_NAMESPACES=$(echo "${K8S_NAMESPACES}" | tr ' ' '\n' | grep -E '^(tfs|crdb|qdb|kafka|nats)')
    - echo "OLD_NAMESPACES=${OLD_NAMESPACES}"
    - kubectl delete namespace ${OLD_NAMESPACES} || true

    # Clean-up Kubernetes Failed pods
    - >
      kubectl get pods --all-namespaces --no-headers --field-selector=status.phase=Failed
      -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name |
      xargs --no-run-if-empty --max-args=2 kubectl delete pod --namespace

    # Login Docker repository
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker rm -f na-t1 na-t2 na-r1 na-r2
    - docker network rm -f na-br

  script:
    # Download Docker image to run the test
@@ -57,6 +90,18 @@ end2end_test ofc24:

    # Check MicroK8s is ready
    - microk8s status --wait-ready
    - LOOP_MAX_ATTEMPTS=10
    - LOOP_COUNTER=0
    - >
      while ! kubectl get pods --all-namespaces &> /dev/null; do
        printf "%c" "."
        sleep 1
        LOOP_COUNTER=$((LOOP_COUNTER + 1))
        if [ "$LOOP_COUNTER" -ge "$LOOP_MAX_ATTEMPTS" ]; then
          echo "Max attempts reached, exiting the loop."
          exit 1
        fi
      done
    - kubectl get pods --all-namespaces

    # Deploy Optical Device Node Agents
@@ -104,6 +149,7 @@ end2end_test ofc24:
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/serviceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/sliceservice.yaml
    #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/nbiservice.yaml

    - source src/tests/${TEST_NAME}/deploy_specs.sh
    #- export TFS_REGISTRY_IMAGES="${CI_REGISTRY_IMAGE}"
    #- export TFS_SKIP_BUILD="YES"
@@ -140,7 +186,6 @@ end2end_test ofc24:
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/opticalcontrollerservice -c server
    - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi

    # Dump Optical Device Node Agents container status and logs
    - docker ps -a
@@ -149,9 +194,13 @@ end2end_test ofc24:
    - docker logs na-r1
    - docker logs na-r2

    # Destroy Optical Device Node Agents
    - docker rm -f na-t1 na-t2 na-r1 na-r2
    - docker network rm -f na-br
    # Clean up
    - docker rm -f ${TEST_NAME} || true
    - kubectl delete namespaces tfs || true
    - docker rm --force qkd-node-01 qkd-node-02 qkd-node-03
    - docker network rm --force qkd-node-br
    - docker volume prune --force
    - docker image prune --force

    # Clean old docker images
    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi