pacifica/pacifica-proxy

View on GitHub
.travis.yml

Summary

Maintainability
Test Coverage
language: python
dist: bionic
python: 3.6
addons:
  apt:
    packages:
      - nginx
stages:
  - lint
  - test
  - test-docs
  - test-docker
  - deploy
script:
  - export PROXY_CPCONFIG="$PWD/server.conf"
  - cd tests
  - coverage run -m pytest -xsv .
  - coverage report --include='*pacifica/proxy/*' -m --fail-under 100
before_script:
  - pip install ansible
  - ansible-galaxy install pacifica.ansible_pacifica pacifica.ansible_travis
  - ansible-playbook ~/.ansible/roles/pacifica.ansible_travis/molecule/common/playbook.yml -i ~/.ansible/roles/pacifica.ansible_travis/molecule/common/inventory.yml -e "ansible_python_interpreter=/home/travis/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/python travis_virtualenv=python${TRAVIS_PYTHON_VERSION} github_repository=proxy"
  - |
    sed -e "s|@@ROOT_DIR@@|$PWD|g;s|@@CONF_DIR@@|/etc/nginx|g" < travis/nginx.conf.in > travis/nginx.conf
    nginx -c $PWD/travis/nginx.conf &
    echo $! > nginx.pid
  - |
    curl -X PUT -H 'Last-Modified: Sun, 06 Nov 1994 08:49:37 GMT' --upload-file README.md http://127.0.0.1:8080/104
    readme_size=$(stat -c '%s' README.md)
    readme_sha1=$(sha1sum README.md | awk '{ print $1 }')
    echo '{ "hashsum": "'$readme_sha1'", "hashtype": "sha1", "size": '$readme_size'}' > /tmp/file-104-update.json
    curl -X POST -H 'content-type: application/json' -T /tmp/file-104-update.json 'http://localhost:8121/files?_id=104'
jobs:
  include:
    - stage: lint
      before_script: skip
      script: pre-commit run -a
    - python: 3.7
      before_script: skip
      script: pre-commit run -a
    - python: 3.8
      before_script: skip
      script: pre-commit run -a
    - stage: test
    - python: 3.7
    - python: 3.8
    - stage: test-docs
      python: 3.8
      before_script: skip
      script: >
        cd docs;
        sphinx-build -T -E -b readthedocs -d _build/doctrees-readthedocs -D language=en . _build/html;
        sphinx-build -T -b readthedocssinglehtmllocalmedia -d _build/doctrees-readthedocssinglehtmllocalmedia -D language=en . _build/localmedia;
        sphinx-build -b latex -D language=en -d _build/doctrees . _build/latex;
        sphinx-build -T -b epub -d _build/doctrees-epub -D language=en . _build/epub
    - stage: test-docker
      python: 3.8
      sudo: required
      before_script: skip
      services:
        - docker
      script:
        - |
          docker-compose build --pull;
          docker-compose pull;
          docker-compose up -d;
        - |
          MAX_TRIES=60;
          HTTP_CODE=$(docker-compose exec metadataserver curl -sL -w "%{http_code}\\n" localhost:8121/keys -o /dev/null || true);
          while [[ $HTTP_CODE != 200 && $MAX_TRIES > 0 ]] ; do
            sleep 1;
            HTTP_CODE=$(docker-compose exec metadataserver curl -sL -w "%{http_code}\\n" localhost:8121/keys -o /dev/null || true);
            MAX_TRIES=$(( MAX_TRIES - 1 ));
          done;
          docker-compose exec metadataserver /bin/bash -c 'cd /usr/src/app/tests; python test_files/loadit_test.py';
        - |
          set -x;
          curl -X PUT -H 'Last-Modified: Sun, 06 Nov 1994 08:49:37 GMT' -T README.md http://127.0.0.1:8080/104;
          readme_size=$(stat -c '%s' README.md);
          readme_sha1=$(sha1sum README.md | awk '{ print $1 }');
          echo '{ "hashsum": "'$readme_sha1'", "hashtype": "sha1", "size": '$readme_size'}' > /tmp/file-104-update.json;
          curl -X POST -H 'content-type: application/json' -T /tmp/file-104-update.json 'http://localhost:8121/files?_id=104';
          curl -o README.md.test 'http://127.0.0.1:8180/files/sha1/'$readme_sha1;
          set +x;
          if [[ $(diff -u README.md README.md.test | wc -l) -gt 0 ]] ; then exit -1; fi;
    - stage: deploy
      python: 3.8
      language: python
      before_install: skip
      script: skip
      deploy:
        skip_cleanup: true
        provider: pypi
        user: dmlb2000
        distributions: sdist bdist_wheel
        password:
          secure: HGXpMF9NWltMBz/J3dtb1yE+A0LK7aryUTU8jpAo3sWDKpnQG/SvNgNBTeLAgqVT+92JlS1Emsmfo2WZ6FggIDWmawCM3lZ7H+1DVkEq4muyCj+96rUSaoLgisAvg8B5ek6zwnY3pAC7XU4eFiXk/D/jzZiPAPMxhsuHd90fDzsxRYrRC00/JOxToLHIOnnfVSonSfv5evDWs0EC4aujRZuscBxRUA+qPbyrvhL6UYVBwPzxnejJcDLCyzd5+rv0Wmpk/hWQZKSt5XwgE/qiPGV8wBcAnGjU1W0yhxonAB17rIb4dkt26B4OLOmn7+kzdENlq7NjODU9iAxzJ1nRdPtHcI7TGW6/cNSMbSyDilr4IM4KkQceZIHchMNO6IpIuqjkp8+71U9penHwkFMDwR0bcD+sUCPtoO/kbZCvKa4kPsYPhZPdXBz2hld42tHMm0yBWIs3vBYD5yFTwWaDJiJw1f2ElcBKfnBaC4G2fUyh5hvQ0HZJBv87QeEd5EkCEsvD9IDXQPLo2qzkFFafGceFaTgjASwaA9nlbmgGunPv26K8qxI8zmBzBNazAijkt9BV0QsloG6k3dOCKfu1s90wwJ0R1+odqu6uX9N1q8RMZ35Keu8YBEqCuydToHzjBybM9N7mmuy3Oke6/j80n7DR7YS16M3s8SoVUgwXhqM=
        on:
          tags: true
install:
  - pip install -r requirements-dev.txt
  - pip install .
  - pip freeze