Revision 8404a490eb570e117b32eca88e399cc1fc81fcc9 authored by Mark van der Wilk on 02 May 2020, 20:10:12 UTC, committed by Mark van der Wilk on 02 May 2020, 20:10:12 UTC
1 parent 6f73ec6
Raw File
config.yml
runtest: &runtest
  steps:
    - checkout
    - run:
        name: Install GPflow
        command: |
          pip install -U pip
          pip install -e .
          pip install -r tests_requirements.txt
    - run:
        name: Run tests
        command: |
          pytest -v -W ignore::UserWarning --durations=10 -m "${PYTEST_FILTER}" --cov=./gpflow ./tests
    - run:
        name: Upload coverage report
        command: |
          bash <(curl -s https://codecov.io/bash) -t "${CODECOV_TOKEN}"

version: 2.1

jobs:
  unit-test:
    <<: *runtest
    docker:
      - image: awav/tensorflow:2.1
        environment:
          PYTEST_FILTER: not notebooks

  notebook-test:
    <<: *runtest
    docker:
      - image: awav/tensorflow:2.1
        environment:
          PYTEST_FILTER: notebooks

  format-checker:
    docker:
      - image: awav/tensorflow:2.1

    steps:
      - checkout
      - run:
          name: Install Black
          command: |
            pip install black==19.10b0
      - run:
          name: Run format checker
          command: |
            black --check -t py36 -l 100 gpflow tests doc setup.py

  trigger-docs-generation:
    docker:
      - image: awav/tensorflow:2.1
        environment:
            ORGANIZATION: GPflow
            PROJECT: docs
            BRANCH: develop

    steps:
      - run:
          name: Trigger the Build Job in Docs repo
          # Compiled documentation for readthedocs are built and stored in the https://github.com/GPflow/docs/ repository
          # For configuration of the doc build, see https://github.com/GPflow/docs/blob/develop/.circleci/config.yml
          command: |
            BUILD_INFO=$(curl -X POST -H -d \
                "{}" \
                "https://circleci.com/api/v1/project/$ORGANIZATION/$PROJECT/tree/$BRANCH?circle-token=$DOCS_TOKEN")

  deploy:
    docker:
      - image: awav/tensorflow:2.1
    steps:
      - checkout
      - run:
          name: Verify git tag vs. VERSION
          command: |
            VERSION="v$(cat VERSION | tr -d '\t\r\n ')"
            if [ "$VERSION" != "$CIRCLE_TAG" ]; then
              echo "The package version ($VERSION) and the latest tag version ($CIRCLE_TAG) are different"
              exit 1
            fi
      - run:
          name: Install twine
          command: |
            pip install twine
      - run:
          name: Init .pypirc
          command: |
            echo -e "[pypi]" >> ~/.pypirc
            echo -e "username = artemav" >> ~/.pypirc
            echo -e "password = $PYPI_PASSWORD" >> ~/.pypirc
      - run:
          name: Create pip package
          command: |
            python setup.py bdist_wheel sdist
      - run:
          name: Upload to PyPI
          command: |
            twine upload dist/*


workflows:
  version: 2.1
  build_test_and_deploy:
    jobs:
      - format-checker:
          filters:
            tags:
              only: /^v[0-9]+(\.[0-9]+)*(-rc[0-9]+)?/
      - unit-test:
          requires:
            - format-checker
          filters:
            tags:
              only: /^v[0-9]+(\.[0-9]+)*(-rc[0-9]+)?/
      - notebook-test:
          requires:
            - format-checker
          filters:
            tags:
              only: /^v[0-9]+(\.[0-9]+)*(-rc[0-9]+)?/
      - trigger-docs-generation:
          requires:
            - unit-test
            - notebook-test
          filters:
            branches:
              only: develop
      - deploy:
          requires:
            - unit-test
            - notebook-test
          filters:
            tags:
              only: /^v[0-9]+(\.[0-9]+)*(-rc[0-9]+)?/
            branches:
              ignore: /.*/
back to top