Fix build flow: lockfile bot, CPU multi-arch, paths-ignore, release guard
- update-lockfile.yml: regenerate all four lockfiles (main + cpu/rocm/intel variants) on any pyproject change; add variant pyproject files to trigger - docker-publish.yml: add lockfiles to paths-ignore so the bot commit does not trigger a second Docker build; remove redundant CONTRIBUTING/SECURITY entries already covered by **.md; add QEMU to build-cpu; set CPU image to linux/amd64,linux/arm64 to match release - release.yml: inline lockfile generation now covers all variants; add workflow_dispatch guard that fails if not dispatched from main Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,13 +6,15 @@ on:
|
||||
paths-ignore:
|
||||
- "**.md"
|
||||
- "docs/**"
|
||||
- "CONTRIBUTING.md"
|
||||
- "SECURITY.md"
|
||||
- ".github/ISSUE_TEMPLATE/**"
|
||||
- ".github/PULL_REQUEST_TEMPLATE.md"
|
||||
- ".github/workflows/release.yml"
|
||||
- ".github/workflows/lint.yml"
|
||||
- ".github/dependabot.yml"
|
||||
- "uv.lock"
|
||||
- "uv-cpu.lock"
|
||||
- "uv-rocm.lock"
|
||||
- "uv-intel.lock"
|
||||
|
||||
concurrency:
|
||||
group: docker-${{ github.ref }}
|
||||
@@ -143,7 +145,7 @@ jobs:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-cpu:
|
||||
name: Build CPU-only (amd64)
|
||||
name: Build CPU (amd64 + arm64)
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -161,6 +163,9 @@ jobs:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
@@ -185,7 +190,7 @@ jobs:
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64
|
||||
platforms: linux/amd64,linux/arm64
|
||||
build-args: VARIANT=cpu
|
||||
cache-from: type=gha,scope=linux/amd64-cpu
|
||||
cache-to: type=gha,mode=max,scope=linux/amd64-cpu
|
||||
|
||||
@@ -37,8 +37,25 @@ jobs:
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v7
|
||||
|
||||
- name: Ensure uv.lock is current
|
||||
run: uv lock
|
||||
- name: Verify release branch
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
run: |
|
||||
if [ "${{ github.ref_name }}" != "main" ]; then
|
||||
echo "::error::Releases must be dispatched from main (current: ${{ github.ref_name }})"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Ensure lockfiles are current
|
||||
run: |
|
||||
cp pyproject.toml _pyproject_orig.toml
|
||||
for variant in cpu rocm intel; do
|
||||
cp pyproject-${variant}.toml pyproject.toml
|
||||
uv lock
|
||||
cp uv.lock uv-${variant}.lock
|
||||
done
|
||||
cp _pyproject_orig.toml pyproject.toml
|
||||
uv lock
|
||||
rm _pyproject_orig.toml
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
@@ -5,6 +5,9 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- 'pyproject.toml'
|
||||
- 'pyproject-cpu.toml'
|
||||
- 'pyproject-rocm.toml'
|
||||
- 'pyproject-intel.toml'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -30,24 +33,32 @@ jobs:
|
||||
- name: Set up Python
|
||||
run: uv python install 3.13
|
||||
|
||||
- name: Regenerate lockfile
|
||||
run: uv lock
|
||||
- name: Regenerate all lockfiles
|
||||
run: |
|
||||
cp pyproject.toml _pyproject_orig.toml
|
||||
for variant in cpu rocm intel; do
|
||||
cp pyproject-${variant}.toml pyproject.toml
|
||||
uv lock
|
||||
cp uv.lock uv-${variant}.lock
|
||||
done
|
||||
cp _pyproject_orig.toml pyproject.toml
|
||||
uv lock
|
||||
rm _pyproject_orig.toml
|
||||
|
||||
- name: Check for changes
|
||||
id: diff
|
||||
run: |
|
||||
if git diff --quiet uv.lock; then
|
||||
if git diff --quiet uv.lock uv-cpu.lock uv-rocm.lock uv-intel.lock; then
|
||||
echo "changed=false" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Commit and push updated lockfile
|
||||
- name: Commit and push updated lockfiles
|
||||
if: steps.diff.outputs.changed == 'true'
|
||||
run: |
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add uv.lock
|
||||
git commit -m "chore: update uv.lock"
|
||||
git add uv.lock uv-cpu.lock uv-rocm.lock uv-intel.lock
|
||||
git commit -m "chore: update lockfiles"
|
||||
git push
|
||||
|
||||
|
||||
Reference in New Issue
Block a user