Raw File
config.yml
version: 2.1
orbs:
  codecov: codecov/codecov@1.0.2 # to get this to work, had to opt-in to using third party orbs in Organization Security settings.
jobs:
  linter:
    parameters:
      python_version:
        type: string
      env_name:
        type: string
    docker:
      - image: continuumio/miniconda:latest
    environment:
      PYTHON: << parameters.python_version >>
      ENV_NAME: << parameters.env_name >>
      OS: "linux"
    steps:
      - checkout
      - restore_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_linting.yml" }}
      - run:
          name: configure conda environment
          command: ./ci/install_conda.sh
      - run:
          name: linting for PEP8 and PEP257 (with numpy style) compliance
          command: |
            source activate ${ENV_NAME}
            pre-commit install
            pre-commit run -a
      - save_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_linting.yml" }}
          paths:
            - "/opt/conda/envs/${ENV_NAME}/"

  pyuvdata:
    parameters:
      python_version:
        type: string
      env_name:
        type: string
    machine:
      image: circleci/classic:latest
    # docker:
      # - image: continuumio/miniconda:latest
    environment:
      PYTHON: << parameters.python_version >>
      ENV_NAME: << parameters.env_name >>
      WITH_SUDO: true
      OS: "linux"
    steps:
      - checkout
      - restore_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
      - run:
          name: Install miniconda
          command: |
            wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O $HOME/miniconda.sh;
            bash $HOME/miniconda.sh -b -p $HOME/miniconda
      - run:
          name: configure conda environment
          command: |
            export PATH="$HOME/miniconda/bin:$PATH"
            ./ci/install_conda.sh
      - run:
          name: install
          command: |
            export PATH="$HOME/miniconda/bin:$PATH"
            source activate ${ENV_NAME}
            pip install .
      - run:
          name: run pyuvdata tests
          command: |
            export PATH="$HOME/miniconda/bin:$PATH"
            source activate ${ENV_NAME}
            mkdir test-reports
            mkdir -p empty
            cd empty
            pytest --pyargs pyuvdata --cov=pyuvdata --cov-config="../.coveragerc" --cov-report xml:".././coverage.xml" --junitxml="../test-reports/xunit.xml"
            cd ..
      - save_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
          paths:
            - "/opt/conda/envs/${ENV_NAME}/"
      - store_test_results:
          path: test-reports
      - store_artifacts:
          path: test-reports
      - codecov/upload:
          file: ./coverage.xml

  doctest:
    parameters:
      python_version:
        type: string
      env_name:
        type: string
    docker:
      - image: continuumio/miniconda:latest
    environment:
      PYTHON: << parameters.python_version >>
      ENV_NAME: << parameters.env_name >>
      OS: "linux"
    steps:
      - checkout
      - restore_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
      - run:
          name: configure conda environment
          command: ./ci/install_conda.sh
      - run:
          name: install
          command: |
            export PATH="$HOME/miniconda/bin:$PATH"
            source activate ${ENV_NAME}
            pip install -e .
      - run:
          name: run tutorial tests
          command: |
            source activate ${ENV_NAME}
            cd docs
            python -m pytest -n 2 tutorial.rst
            cd ..
      - save_cache:
          key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
          paths:
            - "/opt/conda/envs/${ENV_NAME}/"

workflows:
  version: 2
  build_and_test:
    jobs:
      - linter:
          python_version: "3.8"
          env_name: "pyuvdata_linting"
      - pyuvdata:
          name: pyuvdata_3.7
          python_version: "3.7"
          env_name: "pyuvdata_tests"
      - pyuvdata:
          name: pyuvdata_3.8
          python_version: "3.8"
          env_name: "pyuvdata_tests"
      - pyuvdata:
          name: pyuvdata_3.9
          python_version: "3.9"
          env_name: "pyuvdata_tests"
      - pyuvdata:
          name: pyuvdata_min_deps
          python_version: "3.8"
          env_name: "pyuvdata_min_deps_tests"
      - doctest:
          python_version: "3.8"
          env_name: "pyuvdata_tests"
back to top