.gitlab-ci.yml
---
stages:
- linting
- unit_test
- build
- test
- deploy
image: docker:git
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay
# Variables for pytest.gitlab-ci.yml
PYTHON_VERSIONS: "v3.7 v3.8 v3.9 v3.10"
COVERAGE_FILE: sdk-tests-cov.xml
# Variables for Container-Scanning.gitlab-ci.yml
CI_APPLICATION_REPOSITORY: $CI_REGISTRY_IMAGE #/$CI_COMMIT_REF_SLUG
CI_APPLICATION_TAG: $CI_COMMIT_REF_SLUG #$CI_COMMIT_SHA
# Variable for pylint/pydocstyle/SAST/Code-Quality.gitlab-ci.yml
SRC_PATH: '/src'
DOC_PATH: '/docs'
# Variable for SAST
SAST_EXCLUDED_PATHS: "docs,integration_tests,scripts,tests"
SAST_BANDIT_EXCLUDED_PATHS: "docs,integration_tests,scripts,tests"
.before_script_docker: &before_script_docker
before_script:
- docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY"
build_master:
stage: build
<<: *before_script_docker
script:
- docker build -t "$CI_REGISTRY_IMAGE:latest" .
- docker push "$CI_REGISTRY_IMAGE:latest"
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
build_testing:
stage: build
<<: *before_script_docker
script:
- docker build -t "$CI_REGISTRY_IMAGE:${CI_COMMIT_REF_SLUG}" .
- docker push "$CI_REGISTRY_IMAGE:${CI_COMMIT_REF_SLUG}"
rules:
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master"'
build_stable:
stage: build
<<: *before_script_docker
script:
- docker build -t "$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG}" .
- docker push "$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG}"
rules:
- if: '$CI_COMMIT_TAG'
.integration_tests: &integration_tests
stage: test
variables:
FF_NETWORK_PER_BUILD: 1 # Enable https://docs.gitlab.com/runner/executors/docker.html#network-per-build feature
services:
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-sdc:develop
alias: sdc.api.fe.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-sdnc:latest
alias: sdnc.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-so:latest
alias: so.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-aai:latest
alias: aai.api.sparky.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-clamp:develop
alias: clamp.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-cds:latest
alias: cds.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-msb-k8s:latest
alias: msb.k8s.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-dcae/mock-ves:latest
alias: ves.api.simpledemo.onap.org
- name: registry.gitlab.com/orange-opensource/lfn/onap/mock_servers/mock-dmaap:latest
alias: dmaap.api.simpledemo.onap.org
script:
- pip install .
- pip install pytest mock # mock is needed as pytest parse all files before selection
- PYTHONPATH=$PYTHONPATH:integration_tests/ ONAP_PYTHON_SDK_SETTINGS="urls" pytest --verbose -c /dev/null --junitxml=pytest-integration.xml integration_tests
artifacts:
reports:
junit: pytest-*.xml
integration_tests:3.7:
image: python:3.7
<<: *integration_tests
integration_tests:3.8:
image: python:3.8
<<: *integration_tests
integration_tests:3.9:
image: python:3.9
<<: *integration_tests
integration_tests:3.10:
image: python:3.10
<<: *integration_tests
pages:
stage: deploy
image:
name: python:3.7
script:
- chmod +x scripts/build_all_branches_in.sh
- scripts/build_all_branches_in.sh
artifacts:
paths:
- public
except:
variables:
- $JOBS_DISABLED
upload:
stage: deploy
image:
name: python:3.8
script:
- pip install -r upload-requirements.txt
- python setup.py sdist bdist_wheel
- twine upload --non-interactive dist/*
rules:
- if: '$CI_COMMIT_TAG'
# https://docs.gitlab.com/ee/update/deprecations.html#dependency-scanning-python-39-and-36-image-deprecation
gemnasium-python-dependency_scanning:
image:
name: registry.gitlab.com/gitlab-org/security-products/analyzers/gemnasium-python:2-python-3.9
include:
- remote: 'https://gitlab.com/Orange-OpenSource/lfn/ci_cd/gitlab-ci-templates/raw/master/pylint.gitlab-ci.yml'
- remote: 'https://gitlab.com/Orange-OpenSource/lfn/ci_cd/gitlab-ci-templates/-/raw/master/pytest.gitlab-ci.yml'
- remote: 'https://gitlab.com/Orange-OpenSource/lfn/ci_cd/gitlab-ci-templates/raw/master/pydocstyle.gitlab-ci.yml'
- remote: 'https://gitlab.com/Orange-OpenSource/lfn/ci_cd/gitlab-ci-templates/raw/master/doc8.gitlab-ci.yml'
- remote: 'https://gitlab.com/Orange-OpenSource/lfn/ci_cd/gitlab-ci-templates/raw/master/pyup.gitlab-ci.yml'
- template: License-Scanning.gitlab-ci.yml
- template: Dependency-Scanning.gitlab-ci.yml
- template: Jobs/Code-Quality.gitlab-ci.yml
- template: SAST.gitlab-ci.yml
- template: Container-Scanning.gitlab-ci.yml