Skip to content

[DO NOT MERGE] Optimize CI pipeline with artifact sharing and enhanced caching #13

[DO NOT MERGE] Optimize CI pipeline with artifact sharing and enhanced caching

[DO NOT MERGE] Optimize CI pipeline with artifact sharing and enhanced caching #13

Workflow file for this run

name: CI Coordinator
on:
push:
branches:
- main
pull_request:
types: [opened, reopened, synchronize, labeled]
workflow_dispatch:
schedule:
# Three times a day for integration tests
- cron: '33 3,10,15 * * *'
permissions:
contents: read
env:
RUST_CHANNEL: '1.89.0'
jobs:
# Essential builds for PR testing
build_ubuntu:
name: Build Ubuntu
uses: ./.github/workflows/shared-build.yaml
with:
rust_channel: '1.89.0'
upload_rust_artifacts: true
target: x86_64
runner: ubuntu-latest
build_macos_arm:
name: Build macOS ARM
uses: ./.github/workflows/shared-build.yaml
with:
rust_channel: '1.89.0'
upload_rust_artifacts: true
target: aarch64
runner: macos-14
build_windows:
name: Build Windows
uses: ./.github/workflows/shared-build.yaml
with:
rust_channel: '1.89.0'
upload_rust_artifacts: true
target: x86_64
runner: windows-latest
# Docker setup (runs in parallel with builds)
setup_docker:
name: Setup Docker
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Start Docker services
run: |
docker compose up -d
# Wait for services to be ready
for _ in {1..10}; do
if curl --silent --fail http://minio:9000/minio/health/live; then
break
fi
sleep 3
done
docker compose exec -T minio mc alias set minio http://minio:9000 minio123 minio123
for _ in {1..20}; do
if curl --silent --fail "http://azurite:10000/devstoreaccount1/testcontainer?sv=2023-01-03&ss=btqf&srt=sco&spr=https%2Chttp&st=2025-01-06T14%3A53%3A30Z&se=2035-01-07T14%3A53%3A00Z&sp=rwdftlacup&sig=jclETGilOzONYp4Y0iK9SpVRLGyehaS5lg5booJ9VYA%3D&restype=container"; then
break
fi
sleep 3
done
# Platform-specific tests (start immediately after Rust builds)
test_ubuntu:
name: Test Ubuntu
needs: [build_ubuntu, setup_docker]
uses: ./.github/workflows/rust-testing-safe.yaml
with:
target: x86_64
runner: ubuntu-latest
include_docker_tests: true
test_macos_arm:
name: Test macOS ARM
needs: [build_macos_arm]
uses: ./.github/workflows/rust-testing-safe.yaml
with:
target: aarch64
runner: macos-14
include_docker_tests: false
test_windows:
name: Test Windows
needs: [build_windows]
uses: ./.github/workflows/rust-testing-safe.yaml
with:
target: x86_64
runner: windows-latest
include_docker_tests: false
# Python tests (builds wheels internally using Rust artifacts)
python_tests_ubuntu:
name: Python Tests Ubuntu
needs: [build_ubuntu, setup_docker]
uses: ./.github/workflows/python-testing.yaml
with:
rust_channel: '1.89.0'
target: x86_64
runner: ubuntu-latest
python_tests_macos_arm:
name: Python Tests macOS ARM
needs: [build_macos_arm]
uses: ./.github/workflows/python-testing.yaml
with:
rust_channel: '1.89.0'
target: aarch64
runner: macos-14
python_tests_windows:
name: Python Tests Windows
needs: [build_windows]
uses: ./.github/workflows/python-testing.yaml
with:
rust_channel: '1.89.0'
target: x86_64
runner: windows-latest
# Integration tests with cloud credentials
test_integration:
name: Test Integration
needs: [build_ubuntu]
if: ${{
github.event_name == 'schedule'
|| github.event_name == 'workflow_dispatch'
|| (github.event_name == 'push' && github.ref == 'refs/heads/main')
|| (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-with-secrets'))
}}
uses: ./.github/workflows/rust-testing-integration.yaml
secrets: inherit
with:
rust_channel: '1.89.0'
target: x86_64
runner: ubuntu-latest
# Code quality checks (runs independently for fast feedback)
linting:
name: Code Quality
uses: ./.github/workflows/linting.yaml
# Dependency checks (runs independently, depends on Ubuntu build)
dependency_check:
name: Dependency Check
needs: [build_ubuntu]
uses: ./.github/workflows/dependency-check.yaml
with:
rust_channel: '1.89.0'
target: x86_64
runner: ubuntu-latest