Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.77 KiB
Newer Older
---
image: docker:latest

variables:
Duncan Macleod's avatar
Duncan Macleod committed
  APT_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/apt"
  DOCKER_DRIVER: overlay
  DOCKER_BRANCH: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
  DOCKER_LATEST: $CI_REGISTRY_IMAGE:latest
Duncan Macleod's avatar
Duncan Macleod committed
  PIP_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/pip"
before_script:
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

.test: &test
  image: ligo/base:stretch
  services:
    - mysql:5.5
  variables:
    AWS_SES_ACCESS_KEY_ID: "fake_aws_id"
    AWS_SES_SECRET_ACCESS_KEY: "fake_aws_key"
    DJANGO_ALERT_EMAIL_FROM: "fake_email"
    DJANGO_DB_HOST: "mysql"
    DJANGO_DB_PORT: "3306"
    DJANGO_DB_NAME: "fake_name"
    DJANGO_DB_USER: "root"
    DJANGO_DB_PASSWORD: "fake_password"
    DJANGO_PRIMARY_FQDN: "fake_fqdn"
    DJANGO_SECRET_KEY: "fake_key"
    DJANGO_SETTINGS_MODULE: "config.settings.container.dev"
    DJANGO_TWILIO_ACCOUNT_SID: "fake_sid"
    DJANGO_TWILIO_AUTH_TOKEN: "fake_token"
    LVALERT_OVERSEER_PORT: "2"
    LVALERT_SERVER: "fake_server"
    LVALERT_USER: "fake_user"
    LVALERT_PASSWORD: "fake_password"
    MYSQL_DB: "${DJANGO_DB_NAME}"
    MYSQL_ROOT_PASSWORD: "${DJANGO_DB_PASSWORD}"
  before_script:
Duncan Macleod's avatar
Duncan Macleod committed
    # create apt cache directory
    - mkdir -pv ${APT_CACHE_DIR}
    # set python version
    - PYTHON_VERSION="${CI_JOB_NAME##*:}"
    - PYTHON_MAJOR="${PYTHON_VERSION:0:1}"
    - if [[ "${PYTHON_MAJOR}" -eq 2 ]]; then PYTHON="python"; else PYTHON="python3"; fi
    # install build requirements
    - apt-get -yqq update
Duncan Macleod's avatar
Duncan Macleod committed
    - apt-get -o dir::cache::archives="${APT_CACHE_DIR}" install -yqq
          git
          libmariadbclient-dev
          libldap2-dev
          libsasl2-dev
          libssl-dev
          libxml2-dev
          swig
          ${PYTHON}-pip
    # install voeventlib for python2
Duncan Macleod's avatar
Duncan Macleod committed
    - if [[ "${PYTHON_MAJOR}" -eq 2 ]]; then apt-get -o dir::cache::archives="${APT_CACHE_DIR}" install -yqq python-voeventlib; fi
    # install everything else from pip
    - ${PYTHON} -m pip install -r requirements.txt
    # create logs path required for tests
    - mkdir -pv ../logs/
    # list packages
    - ${PYTHON} -m pip list installed
  script:
    - PYTHONPATH=${PYTHONPATH}:${PWD}/gracedb ${PYTHON} -m pytest --cov ./gracedb --junitxml=${CI_PROJECT_DIR}/junit.xml
  after_script:
    - rm -fvr ${PIP_CACHE_DIR}/log
  artifacts:
    reports:
      junit: junit.xml
  cache:
Duncan Macleod's avatar
Duncan Macleod committed
    key: "${CI_JOB_NAME}"
    paths:
      - .cache/pip
Duncan Macleod's avatar
Duncan Macleod committed
      - .cache/apt

test:2.7:
  <<: *test

test:3.7:
  <<: *test
  allow_failure: true

branch_image:
  stage: branch
  script:
    - docker build --pull -t $DOCKER_BRANCH .
    - docker push $DOCKER_BRANCH

latest_image:
  stage: latest
  dependencies:
    - branch_image
  only:
    refs:
      - master
  script:
    - docker tag $DOCKER_BRANCH $DOCKER_LATEST
    - docker push $DOCKER_LATEST