name: continuous-integration on: push: branches: [master] tags: - "v[0-9]+.[0-9]+.[0-9]+*" pull_request: jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: python-version: "3.8" - uses: pre-commit/action@v2.0.0 tests: strategy: fail-fast: false matrix: python-version: ["3.7", "3.8", "3.9", "3.10"] sphinx: [">=5,<6"] os: [ubuntu-latest] include: - os: ubuntu-latest python-version: "3.8" sphinx: ">=4,<5" - os: windows-latest python-version: "3.8" sphinx: ">=4,<5" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e .[linkify,testing] pip install --upgrade-strategy "only-if-needed" "sphinx${{ matrix.sphinx }}" - name: Run pytest run: | pytest --cov=myst_parser --cov-report=xml --cov-report=term-missing coverage xml - name: Upload to Codecov if: github.repository == 'executablebooks/MyST-Parser' && matrix.python-version == 3.8 uses: codecov/codecov-action@v1 with: name: myst-parser-pytests flags: pytests file: ./coverage.xml fail_ci_if_error: true check-myst-docutils: name: Check myst-docutils install runs-on: ubuntu-latest strategy: fail-fast: false matrix: docutils-version: ["0.17", "0.18", "0.19"] steps: - name: Checkout source uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: python-version: "3.8" - name: Install setup run: | python -m pip install --upgrade pip pip install tomlkit - name: Modify setup run: python .github/workflows/docutils_setup.py pyproject.toml README.md - name: Install dependencies run: | pip install . pip install pytest~=6.2 pytest-param-files~=0.3.3 pygments docutils==${{ matrix.docutils-version }} - name: ensure sphinx is not installed run: | python -c "\ try: import sphinx except ImportError: pass else: raise AssertionError()" - name: Run pytest for docutils-only tests run: pytest tests/test_docutils.py tests/test_renderers/test_fixtures_docutils.py tests/test_renderers/test_include_directive.py - name: Run docutils CLI run: echo "test" | myst-docutils-html publish: name: Publish myst-parser to PyPi needs: [pre-commit, tests, check-myst-docutils] if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: python-version: "3.8" - name: install flit run: | pip install flit~=3.4 - name: Build and publish run: | flit publish env: FLIT_USERNAME: __token__ FLIT_PASSWORD: ${{ secrets.PYPI_KEY }} publish-docutils: name: Publish myst-docutils to PyPi needs: [publish] if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: python-version: "3.8" - name: install flit and tomlkit run: | pip install flit~=3.4 tomlkit - name: Modify setup run: python .github/workflows/docutils_setup.py pyproject.toml README.md - name: Build and publish run: | flit publish env: FLIT_USERNAME: __token__ FLIT_PASSWORD: ${{ secrets.PYPI_KEY_DOCUTILS }}