Skip to content

https://github.com/jackdewinter/pymarkdown/issues/1135 #2589

https://github.com/jackdewinter/pymarkdown/issues/1135

https://github.com/jackdewinter/pymarkdown/issues/1135 #2589

Workflow file for this run

name: Main
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
project-name: pymarkdown
default-python-version: 3.8
jobs:
lint:
name: Project Quality Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Python ${{ env.default-python-version }}
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ env.default-python-version }}
- name: Install PipEnv
run: |
pip install pipenv==2023.12.1
- name: Sync With Repository
run: |
pipenv update -d
pipenv graph
- name: Execute Black
run: |
pipenv run black .
- name: Execute ISort
run: |
pipenv run isort .
- name: Execute Pre-Commit
run: |
pipenv run pre-commit run --all
- name: Execute Flake8
run: pipenv run flake8 --exclude dist,build
- name: Execute Bandit
run: |
pipenv run bandit --configfile bandit.yaml -q -r ${{ github.workspace }}/${{ env.project-name }}
- name: Execute PyLint on Source
run: |
pipenv run pylint ${{github.workspace}}/pymarkdown
pipenv run pylint ${{github.workspace}}/pymarkdown/extensions
pipenv run pylint ${{github.workspace}}/pymarkdown/extension_manager
pipenv run pylint ${{github.workspace}}/pymarkdown/plugins
pipenv run pylint ${{github.workspace}}/pymarkdown/plugin_manager
- name: Execute PyLint on Tests
run: pipenv run pylint ${{github.workspace}}/test
- name: Execute MyPy
run: pipenv run mypy --strict ${{ env.project-name }} stubs
- name: Execute PyMarkdown on Current Docs
run: pipenv run python ${{github.workspace}}/main.py --config ${{github.workspace}}/clean.json scan ${{github.workspace}} ${{github.workspace}}/docs
doc-lint:
name: Document Quality Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Python ${{ env.default-python-version }}
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ env.default-python-version }}
- name: Install PipEnv
run: |
pip install pipenv==2023.12.1
- name: Sync With Repository
run: |
pipenv update -d
pipenv graph
- name: Execute PyMarkdown on NewDocs
run: |
pipenv run python main.py --config newdocs/clean.json scan newdocs/src
# - name: Execute MdFormat on Docs
# run: |
# cd newdocs
# pipenv run mdformat --align-semantic-breaks-in-lists --wrap 80 --check .
scenario-tests:
name: Scenario Tests
strategy:
matrix:
# python: ["3.8", "3.9", "3.10"]
python: ["3.8"]
platform: [windows-latest, ubuntu-latest, macos-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ matrix.python }}
- name: Install PipEnv
run: |
pip install pipenv==2023.12.1
- name: Sync With Repository
run: |
pipenv update -d
pipenv graph
pipenv uninstall pytest-html
- name: Execute Tests
run: pipenv run pytest --cov-fail-under=90 --cov --cov-branch --cov-report xml:report/coverage.xml
- name: Archive coverage artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }} Coverage
path: |
./report/coverage.xml
- name: Report Coverage
uses: codecov/codecov-action@v4
if: github.event_name != 'schedule'
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
file: ./report/coverage.xml
name: ${{ matrix.python }} - ${{ matrix.platform }}
fail_ci_if_error: true
packaging:
name: Package Application
runs-on: ubuntu-latest
needs: [ doc-lint, lint, scenario-tests ]
# if: github.ref == 'refs/heads/main' && github.event_name == 'push'
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Python ${{ env.default-python-version }}
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ env.default-python-version }}
- name: Install PipEnv
run: |
pip install pipenv==2023.12.1
- name: Sync With Repository
run: |
pipenv update -d
pipenv graph
- name: Pyroma
run: |
pipenv run pyroma -q -n 10 .
- name: Setup
run: |
pipenv run python setup.py sdist bdist_wheel
- name: Twine
run: |
pipenv run twine check dist/*
- name: Upload Package
uses: actions/upload-artifact@v4
with:
name: my-artifact
path: ${{github.workspace}}/dist/
- name: Initiating Integration Tests
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: |
ACTION_SHA=
if [ "${{ github.event_name }}" == "pull_request" ] ; then
ACTION_SHA=${{ github.event.pull_request.head.sha }}
elif [ "${{ github.event_name }}" == "push" ] ; then
ACTION_SHA=${{ github.event.head_commit.id }}
else
echo "$GITHUB_CONTEXT"
ACTION_SHA=$GITHUB_SHA
fi
ACTION_RUN_ID=${{ github.run_id }}
ACCESS_TOKEN=${{ secrets.INTER_PROJECT_ACCESS_TOKEN }}
if [ -z "$ACCESS_TOKEN" ] ; then
echo "Secret 'INTER_PROJECT_ACCESS_TOKEN' has not been set to a non-empty value."
exit 1
else
echo "SHA=$ACTION_SHA"
echo "RUN_ID=$ACTION_RUN_ID"
echo '{"event_type": "request-integration", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'", "ref":"'"$GITHUB_REF"'", "sha": "'"$ACTION_SHA"'", "run_id" : "'"$ACTION_RUN_ID"'" }}'
curl -X POST https://api.github.com/repos/jackdewinter/pymarkdown_test/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-u '${{ secrets.INTER_PROJECT_ACCESS_TOKEN }}' \
--data '{"event_type": "request-integration", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'", "ref":"'"$GITHUB_REF"'", "sha": "'"$ACTION_SHA"'", "run_id" : "'"$ACTION_RUN_ID"'" }}'
fi