Skip to content

Docling compatibility #51

Docling compatibility

Docling compatibility #51

name: Docling compatibility
# Runs daily and on manual trigger.
# Installs the LATEST docling + docling-core (ignoring version pins)
# and runs the backend tests. Opens an issue if something breaks.
on:
schedule:
- cron: "30 6 * * *" # Every day at 06:30 UTC
workflow_dispatch: # Manual trigger from GitHub UI
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
compat:
name: Test against latest Docling
runs-on: ubuntu-latest
defaults:
run:
working-directory: document-parser
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: document-parser/requirements-test.txt
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends poppler-utils
- name: Install pinned dependencies
run: |
pip install --upgrade pip
pip install -r requirements-test.txt
pip install httpx
- name: Upgrade docling to latest
id: versions
run: |
pip install --upgrade docling docling-core
echo "docling=$(pip show docling | grep Version | cut -d' ' -f2)" >> "$GITHUB_OUTPUT"
echo "docling_core=$(pip show docling-core | grep Version | cut -d' ' -f2)" >> "$GITHUB_OUTPUT"
- name: Run tests
run: pytest tests/ -v
- name: Open issue on failure
if: failure()
uses: actions/github-script@v7
with:
script: |
const docling = '${{ steps.versions.outputs.docling }}';
const doclingCore = '${{ steps.versions.outputs.docling_core }}';
const run = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
// Don't open duplicate issues
const { data: issues } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: 'docling-compat',
});
const title = `Docling compatibility break: docling ${docling} / docling-core ${doclingCore}`;
if (issues.some(i => i.title === title)) {
console.log('Issue already exists, skipping.');
return;
}
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title,
labels: ['docling-compat', 'bug'],
body: [
`## Docling compatibility failure`,
``,
`The daily compatibility check failed with the latest Docling releases:`,
``,
`| Package | Version |`,
`|---------|---------|`,
`| \`docling\` | \`${docling}\` |`,
`| \`docling-core\` | \`${doclingCore}\` |`,
``,
`**Workflow run:** [View logs](${run})`,
``,
`### Next steps`,
`1. Check the failing tests in the workflow logs`,
`2. Identify breaking changes in the Docling changelog`,
`3. Update the code and version pins in \`requirements.txt\``,
`4. Close this issue once fixed`,
].join('\n'),
});