Skip to content
Snippets Groups Projects
.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..."