Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.98 KiB
Newer Older
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/${MENTAT_IMAGE}:latest

before_script:
  - printf "AccountID $GEOIP_ACCOUNT_ID\nLicenseKey $GEOIP_LICENSE_KEY\nEditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country\n" > /etc/GeoIP.conf
  - service postgresql start
  - pip install virtualenv
  - virtualenv venv
  - source venv/bin/activate
  - make deps

stages:
Rajmund Hruška's avatar
Rajmund Hruška committed
  #- test
  #- check-warnings
  - build
  - deploy

Rajmund Hruška's avatar
Rajmund Hruška committed
.unit-tests:
  stage: test
  script:
Rajmund Hruška's avatar
Rajmund Hruška committed
    - sed -i 's/\/usr\/share\/GeoIP/\/builds\/713\/mentat\/mentat-test-3\/chroot\/usr\/share\/GeoIP/g' /builds/713/mentat/mentat-test-3/conf/core/services.json.conf
    - make test 2>&1 | tee errors.log
  artifacts:
    when: always
    paths:
      - errors.log
    reports:
      junit: nose2-junit.xml

Rajmund Hruška's avatar
Rajmund Hruška committed
.pylint:
  stage: test
  script:
    - make pylint

Rajmund Hruška's avatar
Rajmund Hruška committed
.pyflakes:
  stage: test
  script:
    - make pyflakes

Rajmund Hruška's avatar
Rajmund Hruška committed
.check-deprecation-warnings:
  before_script: []
  stage: check-warnings
  script:
    - "if [[ $(grep DeprecationWarning errors.log) ]]; then cat errors.log; exit 1; fi"
  allow_failure: true

build-job:
  stage: build
  script:
    - make deps-build-whl
    - make build-whl
  artifacts:
    paths:
      - dist
  only:
    refs:
    - devel
    - master
    - release
    changes:
      - lib/mentat/__init__.py

sphinx-metadata-job:
  stage: build
  before_script: []
  script:
    - printf "{\n\"codename\":\"$CI_COMMIT_BRANCH\",\n" > metadata.json
    - printf "\"suite\":$(if [ "$CI_COMMIT_BRANCH" == "master" ]; then echo \"stable\"; else echo \"unstable\"; fi),\n" >> metadata.json
    - printf "\"bversion\":\"$(make show-version)\",\n" >> metadata.json
    - printf "\"revision\":\"$CI_COMMIT_SHA\",\n" >> metadata.json
    - printf "\"bnumber\":\"$CI_PIPELINE_ID\",\n" >> metadata.json
    - printf "\"bdate\":\"$(date '+%Y-%m-%d %T')\"\n}\n" >> metadata.json
    - mv metadata.json doc/sphinx/.
  artifacts:
    paths:
      - doc/sphinx/metadata.json
  only:
    - master
    - devel
    - release

twine-job:
  stage: deploy
  script:
Rajmund Hruška's avatar
Rajmund Hruška committed
    - printf "[pypi]\nusername = __token__\npassword = $TWINE_TOKEN\n" > .pypirc # Set credentials for pypi.org
    - mkdir dist2
Rajmund Hruška's avatar
Rajmund Hruška committed
    - cp dist/*.whl dist/*.tar.gz dist2/. # Get only .whl and .tar.gz files
    #- twine upload 'dist2/*' --skip-existing --config-file .pypirc # Upload to pypi.org
    - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist2/* # Upload to GitLab's package registry
  only:
    refs:
    - master
    - devel
    - release
    changes:
      - lib/mentat/__init__.py

Rajmund Hruška's avatar
Rajmund Hruška committed
pages:
  stage: deploy
  script:
Rajmund Hruška's avatar
Rajmund Hruška committed
    - make docs # Build documentation
    - for branch in devel master release; do curl -L --header "JOB-TOKEN:$CI_JOB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$branch/download?job=pages" -o $branch.zip; done # Download the documentation from devel, master and release branches
    - unzip -o '*.zip' || true # Unzip downloaded documentation while ignoring not existing files
    - mkdir -p public/"$CI_COMMIT_BRANCH" # Create directory for docs for this branch if it doesn't exist
    - cp -rf doc/sphinx/_build/html public/"$CI_COMMIT_BRANCH" # Copy docs to shared folder used by GitLab to publish Pages
  artifacts:
    name: "$CI_COMMIT_BRANCH"
    paths:
      - public
  only:
    - master
    - devel
    - release

Rajmund Hruška's avatar
Rajmund Hruška committed
deb-job:
    stage: deploy
    script:
Rajmund Hruška's avatar
Rajmund Hruška committed
        - case "$CI_COMMIT_BRANCH" in "devel") SUITE="development" ;; "release") SUITE="release" ;; "master") SUITE="production" ;; esac
        - make deps-build-deb
Rajmund Hruška's avatar
Rajmund Hruška committed
        - make build-deb BUILD_NUMBER=$CI_PIPELINE_ID BUILD_SUITE=$SUITE
        - DEB_VERSION=$(ls debdist | grep -v latest)
Rajmund Hruška's avatar
Rajmund Hruška committed
        - curl --request PUT --user "gitlab-ci-token:$CI_JOB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/debian/$DEB_VERSION?distribution=$SUITE&component=main" --upload-file "debdist/$DEB_VERSION"
    only:
      refs:
        - devel
        - master
        - release
      changes:
        - packaging/debian/changelog