461bf6fd40
CI / lint (3.11) (push) Blocked by required conditions
CI / lint (3.12) (push) Blocked by required conditions
CI / lint (3.13) (push) Blocked by required conditions
CI / shellcheck (push) Waiting to run
CI / shfmt (push) Waiting to run
CI / setup (3.11) (push) Waiting to run
CI / setup (3.12) (push) Waiting to run
CI / setup (3.13) (push) Waiting to run
CI / check-licenses (3.12) (push) Blocked by required conditions
CI / test_unit (3.11) (push) Blocked by required conditions
CI / test_unit (3.12) (push) Blocked by required conditions
CI / test_unit (3.13) (push) Blocked by required conditions
CI / test_unit_no_extras (3.11) (push) Blocked by required conditions
CI / test_unit_no_extras (3.12) (push) Blocked by required conditions
CI / test_json_to_html (3.12) (push) Blocked by required conditions
CI / test_unit_no_extras (3.13) (push) Blocked by required conditions
CI / test_unit_dependency_extras (csv, 3.11, --extra csv) (push) Blocked by required conditions
CI / test_unit_dependency_extras (csv, 3.12, --extra csv) (push) Blocked by required conditions
CI / test_unit_dependency_extras (csv, 3.13, --extra csv) (push) Blocked by required conditions
CI / test_unit_dependency_extras (docx, 3.11, --extra docx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (docx, 3.12, --extra docx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (docx, 3.13, --extra docx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (markdown, 3.11, --extra md) (push) Blocked by required conditions
CI / test_unit_dependency_extras (markdown, 3.12, --extra md) (push) Blocked by required conditions
CI / test_unit_dependency_extras (markdown, 3.13, --extra md) (push) Blocked by required conditions
CI / test_unit_dependency_extras (odt, 3.11, --extra odt) (push) Blocked by required conditions
CI / test_unit_dependency_extras (odt, 3.12, --extra odt) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pdf-image, 3.12, --extra pdf --extra image --extra paddleocr) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pdf-image, 3.13, --extra pdf --extra image --extra paddleocr) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pptx, 3.13, --extra pptx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (odt, 3.13, --extra odt) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pdf-image, 3.11, --extra pdf --extra image --extra paddleocr) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pptx, 3.11, --extra pptx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pptx, 3.12, --extra pptx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pypandoc, 3.11, --extra epub --extra org --extra rtf --extra rst) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pypandoc, 3.12, --extra epub --extra org --extra rtf --extra rst) (push) Blocked by required conditions
CI / test_unit_dependency_extras (pypandoc, 3.13, --extra epub --extra org --extra rtf --extra rst) (push) Blocked by required conditions
CI / test_unit_dependency_extras (xlsx, 3.11, --extra xlsx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (xlsx, 3.12, --extra xlsx) (push) Blocked by required conditions
CI / test_unit_dependency_extras (xlsx, 3.13, --extra xlsx) (push) Blocked by required conditions
CI / test_ingest_src (3.12) (push) Blocked by required conditions
CI / test_json_to_markdown (3.12) (push) Blocked by required conditions
CI / changelog (push) Waiting to run
CI / test_dockerfile (push) Blocked by required conditions
CodeQL / Analyze (python) (push) Waiting to run
Build And Push Docker Image / set-short-sha (push) Waiting to run
Build And Push Docker Image / build-images (linux/amd64, opensource-linux-8core) (push) Blocked by required conditions
Build And Push Docker Image / build-images (linux/arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
Build And Push Docker Image / publish-images (push) Blocked by required conditions
Partition Benchmark / setup (push) Waiting to run
Partition Benchmark / Measure and compare partition() runtime (push) Blocked by required conditions
94 lines
3.0 KiB
YAML
94 lines
3.0 KiB
YAML
name: Pypi Release
|
|
|
|
on:
|
|
release:
|
|
types:
|
|
- published
|
|
|
|
permissions:
|
|
contents: read
|
|
id-token: write # Required for PyPI trusted publishing / attestations
|
|
|
|
concurrency:
|
|
group: release
|
|
cancel-in-progress: false
|
|
|
|
env:
|
|
PYTHON_VERSION: "3.12"
|
|
|
|
jobs:
|
|
release:
|
|
# Skip opencv wheel releases (tagged 'opencv-*') produced by the
|
|
# build-opencv-wheels workflow - those aren't package releases and would
|
|
# otherwise trigger a spurious PyPI publish failure.
|
|
if: ${{ !startsWith(github.event.release.tag_name, 'opencv-') }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
|
|
- name: Set up Python
|
|
run: uv python install
|
|
|
|
- name: Install dependencies
|
|
run: uv sync --locked --only-group release --no-install-project
|
|
|
|
- name: Validate version matches release tag
|
|
env:
|
|
TAG: ${{ github.event.release.tag_name }}
|
|
run: |
|
|
PKG_VERSION=$(uv run --script - <<'PYEOF'
|
|
# /// script
|
|
# requires-python = ">=3.11"
|
|
# dependencies = ["typing-extensions", "requests"]
|
|
# ///
|
|
from unstructured.__version__ import __version__
|
|
print(__version__)
|
|
PYEOF
|
|
)
|
|
if [[ "$TAG" != "$PKG_VERSION" && "$TAG" != "v$PKG_VERSION" ]]; then
|
|
echo "Tag '$TAG' does not match package version '$PKG_VERSION'"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Build artifact
|
|
id: build
|
|
run: uv build
|
|
|
|
- name: Publish package
|
|
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
|
|
|
|
# Best-effort: attempt Azure upload even if PyPI fails, but only if build succeeded.
|
|
- name: Create .pypirc for Azure Artifacts
|
|
if: always() && steps.build.outcome == 'success'
|
|
run: |
|
|
cat <<EOF > ~/.pypirc
|
|
[distutils]
|
|
index-servers =
|
|
azure
|
|
|
|
[azure]
|
|
repository: https://pkgs.dev.azure.com/${{ secrets.AZURE_ARTIFACTS_FEED }}/_packaging/${{ secrets.AZURE_ARTIFACTS_FEED }}/pypi/upload/
|
|
username: ${{ secrets.AZURE_ARTIFACTS_USERNAME }}
|
|
password: ${{ secrets.AZURE_ARTIFACTS_PAT }}
|
|
EOF
|
|
|
|
- name: Publish package to Azure Artifacts
|
|
if: always() && steps.build.outcome == 'success'
|
|
run: |
|
|
EXIT_CODE=0
|
|
uv run --no-sync twine upload -r azure dist/* || EXIT_CODE=$?
|
|
if [[ $EXIT_CODE -eq 0 ]]; then
|
|
echo "Successfully published to Azure Artifacts (or already existed)"
|
|
else
|
|
echo "Azure Artifacts upload failed (exit code: $EXIT_CODE)"
|
|
if [[ $EXIT_CODE -eq 1 ]]; then
|
|
echo "This may be due to version conflicts or connectivity issues"
|
|
fi
|
|
echo "Azure Artifacts upload is non-critical - skipping failure"
|
|
fi
|