Fix Docker ARM64 image failure, use 8-core github runners (#4232)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **Medium Risk**
> Changes are confined to CI/CD and build tooling, but runner/driver
updates can cause unexpected workflow failures or behavior differences
in Docker builds/tests across architectures.
> 
> **Overview**
> **CI/CD infra updates for faster, more reliable pipelines.** CI jobs
that run heavier integration/fixture/Dockerfile tests now use
`opensource-linux-8core` instead of `ubuntu-latest-m`.
> 
> **Docker publish now builds ARM64 natively.** The `docker-publish`
workflow runs `linux/arm64` builds on `opensource-linux-arm64-4core`,
removes QEMU setup, and simplifies buildx to use the `docker` driver.
> 
> **Release housekeeping.** Adds `.python-version` (and stops ignoring
it), enables `pytest -n auto` in the `docker-test` target, updates
`CHANGELOG.md`, and bumps `unstructured/__version__.py` to `0.19.2`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
50c09e1fa078eddbc99b603ffc0e5f038cb4b003. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
This commit is contained in:
Emily Voss
2026-02-10 18:19:12 -08:00
committed by GitHub
parent 2ae8a972b3
commit 8745e7c9b1
7 changed files with 24 additions and 17 deletions
+4 -4
View File
@@ -183,7 +183,7 @@ jobs:
strategy:
matrix:
python-version: ["3.12"]
runs-on: ubuntu-latest-m
runs-on: opensource-linux-8core
needs: [setup, lint]
steps:
# actions/checkout MUST come before auth
@@ -256,7 +256,7 @@ jobs:
strategy:
matrix:
python-version: ["3.12"]
runs-on: ubuntu-latest-m
runs-on: opensource-linux-8core
needs: [setup, lint]
steps:
- uses: 'actions/checkout@v4'
@@ -274,7 +274,7 @@ jobs:
strategy:
matrix:
python-version: ["3.12"]
runs-on: ubuntu-latest-m
runs-on: opensource-linux-8core
needs: [setup, lint]
steps:
- uses: 'actions/checkout@v4'
@@ -307,7 +307,7 @@ jobs:
# TODO - figure out best practice for caching docker images
# (Using the virtualenv to get pytest)
test_dockerfile:
runs-on: ubuntu-latest-m
runs-on: opensource-linux-8core
needs: [ setup, lint ]
steps:
- uses: actions/checkout@v4
+7 -8
View File
@@ -22,19 +22,20 @@ jobs:
build-images:
strategy:
matrix:
docker-platform: ["linux/arm64", "linux/amd64"]
runs-on: ubuntu-latest
include:
- docker-platform: "linux/amd64"
runs-on: ubuntu-latest
- docker-platform: "linux/arm64"
runs-on: opensource-linux-arm64-4core
runs-on: ${{ matrix.runs-on }}
needs: set-short-sha
env:
SHORT_SHA: ${{ needs.set-short-sha.outputs.short_sha }}
steps:
- name: Set up Docker
# Use the `docker` driver for AMD builds because the `docker-container` driver may fail to locally load the built image.
# This could be due to the larger size of the AMD build and the `docker-container` driver needing to load the tarball.
# Use the `docker-container` driver for ARM builds because it may otherwise intermittently fail with: `exec /bin/sh: exec format error`
uses: docker/setup-buildx-action@v3
with:
driver: ${{ matrix.docker-platform == 'linux/amd64' && 'docker' || 'docker-container' }}
driver: docker
- name: Checkout code
uses: actions/checkout@v4
- name: Login to Quay.io
@@ -52,8 +53,6 @@ jobs:
--progress plain \
--cache-from $DOCKER_BUILD_REPOSITORY:$ARCH \
-t $DOCKER_BUILD_REPOSITORY:$ARCH-$SHORT_SHA .
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Test images
run: |
echo "UNS_API_KEY=${{ secrets.UNS_API_KEY }}" > uns_test_env_file
-3
View File
@@ -87,9 +87,6 @@ nbs/
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
+1
View File
@@ -0,0 +1 @@
3.12
+10
View File
@@ -1,3 +1,13 @@
## 0.19.2
### Enhancements
- Use native ARM64 runner (`opensource-linux-arm64-4core`) for Docker ARM64 builds in CD, replacing QEMU emulation for significantly faster and more reliable builds
- Update CI runners from `ubuntu-latest-m` to `opensource-linux-8core`
- Enable parallel test execution (`pytest -n auto`) in Docker test target
### Fixes
- Remove `.python-version` from `.gitignore`
## 0.19.1
### Fixes
+1 -1
View File
@@ -169,7 +169,7 @@ docker-test:
bash -c "uv sync --frozen --all-extras --group test --no-install-project && \
CI=$(CI) \
UNSTRUCTURED_INCLUDE_DEBUG_METADATA=$(UNSTRUCTURED_INCLUDE_DEBUG_METADATA) \
uv run pytest $(if $(TEST_FILE),$(TEST_FILE),test_unstructured)"
uv run pytest -n auto $(if $(TEST_FILE),$(TEST_FILE),test_unstructured)"
.PHONY: docker-smoke-test
docker-smoke-test:
+1 -1
View File
@@ -1 +1 @@
__version__ = "0.19.1" # pragma: no cover
__version__ = "0.19.2" # pragma: no cover