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

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 2.53 KiB
default:
  tags:
    - ovh

stages:
  - default_validate
  - lint
  - build
  - test
  - deliver

include:
  - project: 'digit-c4/digitc4-template-cicd'
    file: 'gitlab-ci-ansible.yml'
    ref: main

lint-job:
  stage: lint
  before_script:
    - python3 -m venv "$CI_PROJECT_DIR/plugins/venv"
    - source "$CI_PROJECT_DIR/plugins/venv/bin/activate"
    - pip install pylint
  script:
    - pylint "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/netbox_rps_plugin" "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/tests"
    - pylint "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/netbox_cert_plugin" "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/tests"
  after_script:
    - deactivate
    - rm -rf "$CI_PROJECT_DIR/plugins/venv"

build-job:       # This job runs in the build stage, which runs first.
  stage: build
  script:
    - ansible-playbook ansible/build.yml

run-test-job:
  stage: test
  before_script:
    - chmod 600 $ANSIBLE_PRIVATE_KEY_FILE
    - env ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_PRIVATE_KEY_FILE="$ANSIBLE_PRIVATE_KEY_FILE" ansible-playbook -i "$TESTING_HOSTS" -u debian ansible/deploy_on_test.yml
    - python3 -m venv "$CI_PROJECT_DIR/plugins/venv"
    - source "$CI_PROJECT_DIR/plugins/venv/bin/activate"
    - pip install -r "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/tests/requirements.e2e.txt"
    - pip install -r "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/tests/requirements.e2e.txt"
    - pip install -r "$CI_PROJECT_DIR/tests/requirements.e2e.txt"
  script:
    - env HOST="$HOST" PORT="$PORT" API_KEY="$API_KEY" pytest --junit-xml=tests-report-netbox-rps-plugin.xml "$CI_PROJECT_DIR/plugins/netbox-rps-plugin/tests/"
    - env HOST="$HOST" PORT="$PORT" API_KEY="$API_KEY" pytest --junit-xml=tests-report-netbox-cert-plugin.xml "$CI_PROJECT_DIR/plugins/netbox-cert-plugin/tests/"
    - env HOST="$HOST" PORT="$PORT" API_KEY="$API_KEY" pytest --junit-xml=tests-report-netbox-dist-plugin.xml "$CI_PROJECT_DIR/tests/e2e/"
  after_script:
    - env ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_PRIVATE_KEY_FILE="$ANSIBLE_PRIVATE_KEY_FILE" ansible-playbook -i "$TESTING_HOSTS" -u debian ansible/halt_test.yml
    - deactivate
    - rm -rf "$CI_PROJECT_DIR/plugins/venv"
  artifacts:
    when: always
    reports:
      junit: tests-report-netbox-*-plugin.xml

deliver-latest-job:
  stage: deliver
  variables:
    IMAGE_TAG: "latest"
  script:
    - ansible-playbook ansible/deliver.yml
  only:
    - main
    - master

deliver-tagged-job:
  stage: deliver
  variables: