Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit d9102e50 authored by Diego MENDEZ's avatar Diego MENDEZ
Browse files

Adding resource group to CI.

parent d1125482
Branches
Tags
4 merge requests!135Develop,!133Draft: Rebase v4 firewall,!131Draft: Rebase v4.1,!120adding resource group.
Pipeline #227443 passed
Pipeline: Netbox Plugins

#227445

    ......@@ -40,93 +40,14 @@ build-job: # This job runs in the build stage, which runs first.
    script:
    - ansible-playbook ansible/build.yml
    .test-core: &test-core
    run-test:
    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
    trigger:
    include:
    - local: '.gitlab/test.yml'
    strategy: depend
    # Create 'resource_group', to avoid collision when executing many pipelines at the same time.
    resource_group: test-group
    deliver-latest-job:
    stage: deliver
    ......
    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
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment