[DO NOT MERGE] Optimize CI pipeline with artifact sharing and enhanced caching #13
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |