| # This workflow will install Python dependencies, run tests and lint with a variety of Python versions |
| # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions |
| |
| name: continuous-integration |
| |
| on: |
| push: |
| branches: [master] |
| tags: |
| - "v[0-9]+.[0-9]+.[0-9]+*" |
| pull_request: |
| schedule: |
| - cron: '0 0 * * 0' # every week |
| |
| jobs: |
| |
| pre-commit: |
| |
| runs-on: ubuntu-latest |
| |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Set up Python 3.8 |
| uses: actions/setup-python@v4 |
| with: |
| python-version: '3.8' |
| - uses: pre-commit/action@v3.0.0 |
| |
| tests: |
| |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| python-version: ['pypy-3.7', '3.7', '3.8', '3.9', '3.10'] |
| |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v4 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install dependencies |
| run: | |
| python -m pip install --upgrade pip |
| pip install .[testing,linkify] |
| - name: Run pytest |
| run: | |
| pytest tests/ --cov=markdown_it --cov-report=xml --cov-report=term-missing |
| - name: Upload to Codecov |
| if: matrix.python-version == '3.7' && github.repository == 'executablebooks/markdown-it-py' |
| uses: codecov/codecov-action@v3 |
| with: |
| name: markdown-it-py-pytests-py3.7 |
| flags: pytests |
| file: ./coverage.xml |
| fail_ci_if_error: true |
| |
| test-plugins: |
| |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| python-version: ['3.8'] |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v4 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install markdown-it-py |
| run: | |
| python -m pip install --upgrade pip |
| pip install .[testing] |
| - name: clone and install mdit-py-plugins |
| run: | |
| git clone https://github.com/executablebooks/mdit-py-plugins.git |
| pip install --no-deps -e mdit-py-plugins |
| - name: Run pytest for unit tests of mdit-py-plugins |
| run: cd mdit-py-plugins; pytest |
| |
| benchmark: |
| |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| |
| - name: Set up Python 3.8 |
| uses: actions/setup-python@v4 |
| with: |
| python-version: '3.8' |
| |
| - name: Install tox |
| run: | |
| python -m pip install --upgrade pip |
| pip install tox |
| |
| - name: Run benchmark |
| run: tox -e py38-bench-core -- --benchmark-json bench-core.json |
| |
| - name: Upload data |
| uses: actions/upload-artifact@v3 |
| with: |
| name: bench-core |
| path: bench-core.json |
| if-no-files-found: error |
| |
| publish: |
| |
| name: Publish to PyPi |
| needs: [pre-commit, tests] |
| 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@v4 |
| 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 }} |
| |
| allgood: |
| runs-on: ubuntu-latest |
| needs: |
| - pre-commit |
| - tests |
| steps: |
| - run: echo "Great success!" |