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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
3.12
|
||||
@@ -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
|
||||
|
||||
@@ -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 @@
|
||||
__version__ = "0.19.1" # pragma: no cover
|
||||
__version__ = "0.19.2" # pragma: no cover
|
||||
|
||||
Reference in New Issue
Block a user