Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects

Develop

Merged Diego MENDEZ requested to merge develop into main
2 files
+ 98
86
Compare changes
  • Side-by-side
  • Inline
Files
2
.gitlab/test.yml 0 → 100644
+ 91
0
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "parent_pipeline"
.test-core: &test-core
stage: test
tags:
- debian12_ovh
variables:
TEST_TAG: test
TEST_HOST: localhost
TEST_PORT: 8000
up-test-env-job:
<<: *test-core
before_script:
# check that no other unrelated Netbox is up on destination port.
- if [[ $(curl -f -s http://${TEST_HOST}:${TEST_PORT}/metrics |wc -l) != 0 ]];
then echo "WARNING!! An unrelated Netbox instace has not been shut down properly. Try again, or execute down-test-env-job manually."; exit 1;
fi
# check that runner can do `docker-in-docker`.
- docker info
# Build image to test
- docker build --no-cache -t code.europa.eu:4567/digit-c4/netbox-plugins:${TEST_TAG} .
script:
# Netbox up `http://localhost:8000`
- env TAG=${TEST_TAG} PORT=${TEST_PORT} docker compose -f docker-compose.yml -f docker-compose.test.yml up -d
# wait for netbox to be up and running
- for ((i=1; i<20; i++)); do
if [[ $(curl -f -s http://${TEST_HOST}:${TEST_PORT}/metrics |wc -l) < 250 ]];
then echo "not yet up, sleep for 20 seconds.."; sleep 20;
else echo "Netbox up, we are able to reach metrics page. http://${TEST_HOST}:${TEST_PORT}/metrics."; break;
fi;
if [[ $i == 19 ]];
then echo "Netbox seems not able to start on ${TEST_HOST}:${TEST_PORT}."; exit 1;
fi;
done
run-test-job:
<<: *test-core
before_script:
- python3 -m venv "$CI_PROJECT_DIR/plugins/venv"
- source "$CI_PROJECT_DIR/plugins/venv/bin/activate"
- pip install -r "$CI_PROJECT_DIR/tests/requirements.e2e.txt"
script:
- env HOST="${TEST_HOST}" PORT="${TEST_PORT}" API_KEY="$API_KEY" pytest -s --junit-xml=tests-report-netbox-dist-plugin.xml "$CI_PROJECT_DIR/tests/e2e/"
after_script:
- deactivate
- rm -rf "$CI_PROJECT_DIR/plugins/venv"
artifacts:
when: always
reports:
junit: tests-report-netbox-*-plugin.xml
needs:
- up-test-env-job
run-robot-test-job:
<<: *test-core
before_script:
- python3 -m venv "$CI_PROJECT_DIR/plugins/venv"
- source "$CI_PROJECT_DIR/plugins/venv/bin/activate"
- docker build -t robotframework:latest ./tests/docker/
script:
- docker run --rm -v $CI_PROJECT_DIR:/project --network "host" robotframework:latest bash -c
"robot -v HOST:"${TEST_HOST}" -v PORT:"${TEST_PORT}" -v API_TOKEN:"$API_KEY" --outputdir /project/reports /project/tests/robot/"
after_script:
- sudo chmod -R 777 reports
- docker image rm robotframework:latest --force
- deactivate
- rm -rf "$CI_PROJECT_DIR/plugins/venv"
artifacts:
when: always
paths:
- reports/*
needs:
- up-test-env-job
- run-test-job
down-test-env-job:
<<: *test-core
script:
- echo "Test Env Down"
- env TAG=${TEST_TAG} PORT=${TEST_PORT} docker compose -f docker-compose.yml -f docker-compose.test.yml down -v
after_script:
- docker image rm code.europa.eu:4567/digit-c4/netbox-plugins:${TEST_TAG} --force
- docker image ls
needs:
- up-test-env-job
- run-test-job
- run-robot-test-job
when: always
Loading