feat: add manifest-driven batch rebuild, numpy cross-compilation, and CI pipeline updates
Some checks failed
EcoArk Wheel Pipeline CI / build (push) Failing after 1m41s
Some checks failed
EcoArk Wheel Pipeline CI / build (push) Failing after 1m41s
- Add pipeline/manifest.py for packages.txt parsing - Implement real numpy cross-compilation (rebuild.py) with OHOS NDK + vendored meson - Extend CLI with --manifest, --build-from-source, --stage-integration modes - Add recipes/, experiments/, and scripts/ for integration staging and artifact upload - Update CI workflow with manifest validation, artifact upload, and release publishing - Update Makefile and README with new targets and documentation
This commit is contained in:
@ -3,16 +3,19 @@ name: EcoArk Wheel Pipeline CI
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
# Uncomment the line below to trigger releases on tags:
|
||||
# tags: ['v*']
|
||||
pull_request:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
# ──────────────────────────────────────────────
|
||||
# Job 1: validate — pure wheel repack + native stub
|
||||
# ──────────────────────────────────────────────
|
||||
validate:
|
||||
# ──────────────────────────────────────────────────────
|
||||
# Job: build — validate core logic + manifest-driven
|
||||
# rebuild (stub) + zip bundle
|
||||
# ──────────────────────────────────────────────────────
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
@ -25,49 +28,77 @@ jobs:
|
||||
|
||||
- name: Show environment info
|
||||
run: |
|
||||
echo "══════════════════════════════════════════"
|
||||
echo "╔══════════════════════════════════════════╗"
|
||||
echo "║ EcoArk Wheel Pipeline CI ║"
|
||||
echo "╚══════════════════════════════════════════╝"
|
||||
echo " Runner : $(uname -a)"
|
||||
echo " Hostname: $(hostname)"
|
||||
echo " Date : $(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
echo "══════════════════════════════════════════"
|
||||
echo " Date : $(date -u +%Y%m%dT%H%M%SZ)"
|
||||
python3 --version
|
||||
pip3 --version 2>/dev/null || echo "pip3 not available"
|
||||
which make gcc g++ rustc 2>/dev/null || true
|
||||
which make git 2>/dev/null || true
|
||||
|
||||
- name: Install Python build deps
|
||||
run: |
|
||||
pip3 install --quiet --upgrade pip setuptools wheel 2>/dev/null || true
|
||||
|
||||
# ── Validate single-wheel mode (backward-compat) ──
|
||||
- name: Generate test wheels
|
||||
run: |
|
||||
python3 examples/gen_test_wheels.py
|
||||
|
||||
- name: Show generated test wheels
|
||||
run: |
|
||||
ls -lh examples/*.whl
|
||||
run: python3 examples/gen_test_wheels.py
|
||||
|
||||
- name: Validate pure wheel repack
|
||||
run: |
|
||||
WHEEL=$(ls examples/*-none-any.whl | head -1)
|
||||
echo "Pure wheel: $WHEEL"
|
||||
python3 wheel_pipeline.py "$WHEEL" --output-dir output
|
||||
echo ""
|
||||
echo "Output files:"
|
||||
ls -lh output/*.whl
|
||||
|
||||
- name: Validate native wheel stub
|
||||
run: |
|
||||
WHEEL=$(ls examples/*-manylinux*.whl | head -1)
|
||||
echo "Native wheel: $WHEEL"
|
||||
python3 wheel_pipeline.py "$WHEEL" --output-dir output --target-os harmonyos --arch arm64
|
||||
echo ""
|
||||
echo "Output files:"
|
||||
ls -lh output/*.whl
|
||||
|
||||
- name: Show all pipeline outputs
|
||||
# ── Validate manifest-driven mode ─────────────────
|
||||
- name: Run manifest pipeline (default packages.txt)
|
||||
run: |
|
||||
echo "=== Final output directory ==="
|
||||
find output/ -type f -name '*.whl' -exec ls -lh {} \;
|
||||
echo ""
|
||||
echo "=== All output artifacts ==="
|
||||
python3 wheel_pipeline.py --manifest packages.txt \
|
||||
--output-dir output --target-os harmonyos --arch arm64
|
||||
|
||||
- name: Run manifest pipeline (test manifest with fake entry)
|
||||
run: |
|
||||
echo "# test manifest" > output/test_packages.txt
|
||||
echo "ecoark_hello:https://github.com/ecoark/hello.git" >> output/test_packages.txt
|
||||
python3 wheel_pipeline.py --manifest output/test_packages.txt \
|
||||
--output-dir output --target-os harmonyos --arch arm64
|
||||
|
||||
- name: List all pipeline outputs
|
||||
run: |
|
||||
echo "=== Output tree ==="
|
||||
find output/ -type f | sort
|
||||
echo ""
|
||||
echo "=== Zip bundle ==="
|
||||
ls -lh output/ecoark-rebuild-output.zip 2>/dev/null || echo "(no zip)"
|
||||
|
||||
# ── Upload total bundle as CI artifact (Gitea-native) ──
|
||||
- name: Upload bundle as artifact
|
||||
run: python3 scripts/upload_artifacts.py ecoark-harmonyos-wheels "output/ecoark-rebuild-output.zip"
|
||||
|
||||
# ── Upload each .whl individually as artifact ─────────
|
||||
- name: Upload individual wheel artifacts
|
||||
run: python3 scripts/upload_artifacts.py ecoark-wheels-individual "output/*.whl" "output/wheels/*.whl"
|
||||
|
||||
# ──────────────────────────────────────────────────────
|
||||
# Publish to Gitea Release (optional — requires secrets)
|
||||
# ──────────────────────────────────────────────────────
|
||||
- name: Upload assets to Gitea Release
|
||||
if: secrets.GITEA_TOKEN != '' && secrets.ENABLE_RELEASE_UPLOAD == 'true'
|
||||
run: python3 scripts/upload_release_assets.py output/
|
||||
env:
|
||||
ENABLE_RELEASE_UPLOAD: 'true'
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "All pipeline steps passed successfully."
|
||||
echo "Artifacts:"
|
||||
echo " - ecoark-harmonyos-wheels (total zip bundle)"
|
||||
echo " - ecoark-wheels-individual (each .whl file individually)"
|
||||
echo "Release upload: configured via GITEA_TOKEN + ENABLE_RELEASE_UPLOAD secrets"
|
||||
|
||||
Reference in New Issue
Block a user