name: CI on: push: branches: - master pull_request: paths-ignore: - "doc/*.rst" schedule: - cron: "17 3 * * 0" jobs: lint: name: Lint and typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: '3.x' - name: Install Poetry uses: dschep/install-poetry-action@v1.3 with: create_virtualenvs: true # FIXME: Probably needs poetry version as additional key # See https://github.com/inducer/relate/pull/736/checks?check_run_id=1229461665 # for example of breakage. #- name: Cache python dependencies # uses: actions/cache@v2 # id: cache # with: # path: ~/.cache/pypoetry # key: poetry-${{ hashFiles('**/poetry.lock') }}-${{ matrix.python-version }} # restore-keys: | # poetry-${{ hashFiles('**/poetry.lock') }}-${{ matrix.python-version }} - name: Install Dependencies run: poetry install # if: steps.cache.outputs.cache-hit != 'true' - name: "Flake8" run: | poetry run flake8 relate course accounts poetry run flake8 --extend-ignore Q000 tests - name: "Mypy" run: poetry run mypy relate course - name: "Safety" run: bash ./.ci/run-safety.sh - name: "Sphinx" run: | cp local_settings_example.py local_settings.py (cd doc; poetry run make html SPHINXOPTS="-W --keep-going -n") pytest: name: Python ${{ matrix.python-version }} - ${{ matrix.suite }} runs-on: ubuntu-latest strategy: matrix: python-version: [3.6, 3.7, 3.8] suite: ['base', 'postgres', 'expensive'] services: postgres: image: postgres env: POSTGRES_PASSWORD: relatepgpass POSTGRES_DB: test_relate options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: dschep/install-poetry-action@v1.3 with: create_virtualenvs: true # FIXME: Probably needs poetry version as additional key # See https://github.com/inducer/relate/pull/736/checks?check_run_id=1229461665 # for example of breakage. #- name: Cache python dependencies # uses: actions/cache@v2 # id: cache # with: # path: ~/.cache/pypoetry # key: poetry-${{ hashFiles('**/poetry.lock') }}-${{ matrix.python-version }} # restore-keys: | # poetry-${{ hashFiles('**/poetry.lock') }}-${{ matrix.python-version }} - name: Install Dependencies run: poetry install # if: steps.cache.outputs.cache-hit != 'true' - name: Install OS dependencies env: DEBIAN_FRONTEND: noninteractive run: | sudo apt-get install gettext - name: Run test suite env: RL_CI_TEST: ${{ matrix.suite }} run: | bash ./.ci/run-tests-for-ci.sh - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: fail_ci_if_error: true - name: Test command line tool if: matrix.suite == 'base' run: | git clone https://github.com/inducer/relate-sample cd relate-sample poetry run relate validate . poetry run relate test-code questions/autograded-python-example.yml poetry run relate expand-yaml flows/quiz-test.yml > /dev/null pytest-windows: name: Python - Windows runs-on: windows-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: 3.8 - name: Install Poetry uses: dschep/install-poetry-action@v1.3 with: create_virtualenvs: true - name: Configure Poetry run: | poetry config virtualenvs.in-project true - name: Install Dependencies run: poetry install - name: Run test suite env: RELATE_LOCAL_TEST_SETTINGS: "local_settings_example.py" run: | poetry run pytest -v --cov-config=setup.cfg --cov-report=xml --cov=. - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: fail_ci_if_error: true # vim: sw=2