-
Chris Pastl authoredChris Pastl authored
.gitlab-ci.yml 4.41 KiB
stages:
- build
- test
- deploy
- release
.install_requirements: &install_requirements
- apt-get -qq update
- apt-get -y install curl pip libsasl2-dev libldap2-dev libssl-dev
- python3 -m pip install --upgrade pip
- pip install poetry
- poetry install --no-interaction
.release_rules: &release_rules
# rule to run job on a tag-reference which has the form number.number.number (semantic versioning)
# or number.number.number-text (semantic versioning + release-name)
# and where a Dockerfile exists
- if: $CI_COMMIT_TAG =~ /^\d+[.]\d+[.]\d+$/ || $CI_COMMIT_TAG =~ /^\d+[.]\d+[.]\d+[-]\S+$/
exists:
- Dockerfile
build-openapi-scheme:
stage: build
image: python:3.11-slim
variables:
OPENAPI_JSON: ./public/api.json
before_script:
- apt-get update
- apt-get install -y gcc libldap2-dev libsasl2-dev libmagic-dev
- pip install --upgrade pip
- pip install poetry==1.8.1
- poetry install --without dev,test --no-root
script:
- mkdir public
- mkdir logs
- poetry run python manage.py spectacular --validate --lang en --format openapi-json --file $OPENAPI_JSON
artifacts:
paths:
- $OPENAPI_JSON
run_test_cases:
stage: test
image: python:3.11
before_script:
- *install_requirements
script:
- mkdir logs
- make coverage
coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
deploy_spec:
stage: deploy
image: node:20-alpine
needs:
- build-openapi-scheme
before_script:
- apk update
- apk add nodejs npm lftp
- node -v
- npm i -g npm@latest
- npm install swagger-ui-dist@3.52.5
script:
- cp -rp node_modules/swagger-ui-dist/* ./public
- 'sed -i "s@.*url.*@url: \"api.json\",@" ./public/index.html'
- echo "Deploying AURA Steering API Spec..."