CI / PR 89 #870
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 | |
| run-name: CI / ${{ github.event_name == 'pull_request' && format('PR {0}', github.event.number) || github.ref_name }} | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened, closed] | |
| merge_group: | |
| types: [checks_requested] | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| inputs: | |
| wasm_target: | |
| description: WASM AOT target to build when WASM runtime inputs are affected | |
| required: true | |
| default: all | |
| type: choice | |
| options: | |
| - all | |
| - macos-arm64 | |
| - linux-x64-gnu | |
| - linux-arm64-gnu | |
| - windows-x64-msvc | |
| native_target: | |
| description: Native runtime target to run for focused manual debugging | |
| required: true | |
| default: all | |
| type: choice | |
| options: | |
| - all | |
| - macos-arm64 | |
| - linux-x64-gnu | |
| - linux-arm64-gnu | |
| - windows-x64-msvc | |
| - android-arm64-v8a | |
| - android-x86_64 | |
| - ios-xcframework | |
| mobile_target: | |
| description: Mobile lane to run for focused manual debugging | |
| required: true | |
| default: all | |
| type: choice | |
| options: | |
| - all | |
| - android | |
| - ios | |
| - both | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| NODE_VERSION: 22.22.3 | |
| PNPM_VERSION: 11.5.0 | |
| BUN_VERSION: 1.3.14 | |
| DENO_VERSION: v2.8.1 | |
| ACTIONLINT_VERSION: 1.7.12 | |
| ASSET_PROFILE: release | |
| WASMER_LLVM_VERSION: "22.1" | |
| WASMER_LLVM_LINUX_X64_URL: https://github.com/wasmerio/llvm-custom-builds/releases/download/22.x/llvm-linux-amd64.tar.xz | |
| RUST_CACHE_SAVE_IF: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| MOON_BASE: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || '' }} | |
| MOON_HEAD: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| affected: | |
| name: Plan | |
| if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| outputs: | |
| builder_jobs: ${{ steps.plan.outputs.builder_jobs }} | |
| check_count: ${{ steps.target-matrices.outputs.check_count }} | |
| check_matrix: ${{ steps.target-matrices.outputs.check_matrix }} | |
| policy_count: ${{ steps.target-matrices.outputs.policy_count }} | |
| policy_matrix: ${{ steps.target-matrices.outputs.policy_matrix }} | |
| jobs: ${{ steps.plan.outputs.jobs }} | |
| job_targets: ${{ steps.plan.outputs.job_targets }} | |
| broker_runtime_matrix: ${{ steps.plan.outputs.broker_runtime_matrix }} | |
| extension_artifacts_native_matrix: ${{ steps.plan.outputs.extension_artifacts_native_matrix }} | |
| extension_artifacts_wasix_matrix: ${{ steps.plan.outputs.extension_artifacts_wasix_matrix }} | |
| extension_package_products: ${{ steps.plan.outputs.extension_package_products }} | |
| extension_package_products_csv: ${{ steps.plan.outputs.extension_package_products_csv }} | |
| liboliphaunt_wasix_aot_runtime_matrix: ${{ steps.plan.outputs.liboliphaunt_wasix_aot_runtime_matrix }} | |
| liboliphaunt_native_android_runtime_matrix: ${{ steps.plan.outputs.liboliphaunt_native_android_runtime_matrix }} | |
| liboliphaunt_native_desktop_runtime_matrix: ${{ steps.plan.outputs.liboliphaunt_native_desktop_runtime_matrix }} | |
| liboliphaunt_native_ios_runtime_matrix: ${{ steps.plan.outputs.liboliphaunt_native_ios_runtime_matrix }} | |
| mobile_extension_package_native_targets: ${{ steps.plan.outputs.mobile_extension_package_native_targets }} | |
| mobile_extension_package_native_targets_csv: ${{ steps.plan.outputs.mobile_extension_package_native_targets_csv }} | |
| react_native_android_mobile_app_matrix: ${{ steps.plan.outputs.react_native_android_mobile_app_matrix }} | |
| node_direct_runtime_matrix: ${{ steps.plan.outputs.node_direct_runtime_matrix }} | |
| projects: ${{ steps.plan.outputs.projects }} | |
| tasks: ${{ steps.plan.outputs.tasks }} | |
| test_count: ${{ steps.target-matrices.outputs.test_count }} | |
| test_matrix: ${{ steps.target-matrices.outputs.test_matrix }} | |
| reason: ${{ steps.plan.outputs.reason }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "false" | |
| - name: Plan artifact builder jobs | |
| id: plan | |
| env: | |
| GITHUB_EVENT_NAME: ${{ github.event_name }} | |
| MOON_BASE: ${{ github.event.pull_request.base.sha }} | |
| MOON_HEAD: ${{ github.event.pull_request.head.sha || github.sha }} | |
| WASM_TARGET: ${{ github.event_name == 'workflow_dispatch' && inputs.wasm_target || 'all' }} | |
| NATIVE_TARGET: ${{ github.event_name == 'workflow_dispatch' && inputs.native_target || 'all' }} | |
| MOBILE_TARGET: ${{ github.event_name == 'workflow_dispatch' && inputs.mobile_target || 'all' }} | |
| run: tools/dev/bun.sh tools/graph/ci_plan.mjs | |
| - name: Plan check and test jobs | |
| id: target-matrices | |
| run: bun .github/scripts/write-affected-moon-target-matrices.mjs check test | |
| - name: Upload build plan | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: artifact-build-plan | |
| path: target/graph/ci-plan.json | |
| if-no-files-found: error | |
| release-intent: | |
| name: Validate commit and PR title | |
| if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "false" | |
| - name: Check release intent | |
| env: | |
| PR_TITLE: ${{ github.event.pull_request.title }} | |
| BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before || github.event.merge_group.base_sha || 'origin/main' }} | |
| HEAD_REF: ${{ github.event.pull_request.head.sha || github.event.merge_group.head_sha || github.sha }} | |
| HEAD_BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }} | |
| run: | | |
| subject="${PR_TITLE:-}" | |
| if [ -z "$subject" ]; then | |
| subject="$(git log -1 --pretty=%s "$HEAD_REF")" | |
| fi | |
| .github/scripts/check-release-intent.sh "$subject" "$BASE_REF" "$HEAD_REF" "$HEAD_BRANCH" | |
| check-targets: | |
| name: Checks / ${{ matrix.target }} | |
| needs: | |
| - affected | |
| if: ${{ needs.affected.outputs.check_count != '0' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.check_matrix) }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| - name: Install pinned maintainer tools | |
| run: tools/dev/bootstrap-tools.sh | |
| - name: Run check target | |
| env: | |
| MOON_TARGET: ${{ matrix.target }} | |
| MOON_UPSTREAM: ${{ matrix.upstream }} | |
| run: .github/scripts/run-moon-targets.sh --upstream "$MOON_UPSTREAM" "$MOON_TARGET" | |
| policy-targets: | |
| name: Policy / ${{ matrix.target }} | |
| needs: | |
| - affected | |
| if: ${{ needs.affected.outputs.policy_count != '0' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.policy_matrix) }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| - name: Install pinned maintainer tools | |
| run: tools/dev/bootstrap-tools.sh | |
| - name: Run policy target | |
| env: | |
| MOON_TARGET: ${{ matrix.target }} | |
| MOON_UPSTREAM: ${{ matrix.upstream }} | |
| run: .github/scripts/run-moon-targets.sh --upstream "$MOON_UPSTREAM" "$MOON_TARGET" | |
| checks: | |
| name: Checks | |
| if: ${{ always() }} | |
| needs: | |
| - affected | |
| - check-targets | |
| - policy-targets | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Check selected check and policy jobs | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| REQUIRED_JOBS_JSON: '["check-targets","policy-targets"]' | |
| GATE_LABEL: selected check and policy jobs | |
| run: bun .github/scripts/check-ci-gate.mjs allow-skipped | |
| test-targets: | |
| name: Tests / ${{ matrix.target }} | |
| needs: | |
| - affected | |
| if: ${{ needs.affected.outputs.test_count != '0' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.test_matrix) }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| tools: cargo-nextest@0.9.137,cargo-llvm-cov@0.8.7 | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| - name: Run test target | |
| env: | |
| MOON_TARGET: ${{ matrix.target }} | |
| MOON_UPSTREAM: ${{ matrix.upstream }} | |
| run: .github/scripts/run-moon-targets.sh --upstream "$MOON_UPSTREAM" "$MOON_TARGET" | |
| tests: | |
| name: Tests | |
| if: ${{ always() }} | |
| needs: | |
| - affected | |
| - test-targets | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Check selected test jobs | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| REQUIRED_JOBS_JSON: '["test-targets"]' | |
| GATE_LABEL: selected test jobs | |
| run: bun .github/scripts/check-ci-gate.mjs allow-skipped | |
| extension-artifacts-native: | |
| name: Builds / extension-native (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'extension-artifacts-native') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.extension_artifacts_native_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Apple | |
| if: ${{ runner.os == 'macOS' }} | |
| uses: ./.github/actions/setup-apple | |
| - name: Set up Android | |
| if: ${{ startsWith(matrix.target, 'android-') }} | |
| uses: ./.github/actions/setup-android | |
| with: | |
| native-ccache: "true" | |
| - name: Set up MSVC | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ./.github/actions/setup-msvc | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Restore native compiler cache | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 | |
| with: | |
| path: | | |
| ~/.ccache | |
| ${{ matrix.build-root }} | |
| key: liboliphaunt-native-extension-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('src/postgres/versions/18/**', 'src/sources/third-party/shared/**', 'src/sources/third-party/native/**', 'src/shared/extension-runtime-contract/**', 'src/extensions/**', 'src/runtimes/liboliphaunt/native/**', 'tools/xtask/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| restore-keys: | | |
| liboliphaunt-native-extension-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}- | |
| liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Configure native compiler cache | |
| run: .github/scripts/setup-native-build-tools.sh 2G | |
| - name: Build native exact-extension artifacts | |
| env: | |
| OLIPHAUNT_EXTENSION_PRODUCTS: ${{ matrix.extensions_csv }} | |
| OLIPHAUNT_EXTENSION_TARGET: ${{ matrix.target }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh extension-artifacts-native | |
| - name: Upload native exact-extension artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-extension-artifacts-${{ matrix.target }} | |
| path: target/extensions/native/release-assets | |
| if-no-files-found: error | |
| - name: Upload native exact-extension build logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-extension-logs-${{ matrix.target }} | |
| path: | | |
| target/liboliphaunt-mobile-extension-ci/**/*.log | |
| target/liboliphaunt-mobile-extension-release/**/*.log | |
| target/liboliphaunt-pg18-extension-release/**/*.log | |
| target/liboliphaunt-pg18-*-extension-release/**/*.log | |
| /tmp/liboliphaunt-ci-*-extensions.log | |
| /tmp/liboliphaunt-release-*-extensions.log | |
| /tmp/liboliphaunt-ci-extension-assets-fetch.log | |
| /tmp/liboliphaunt-release-extension-assets-fetch.log | |
| if-no-files-found: ignore | |
| extension-artifacts-wasix: | |
| name: Builds / extension-wasix (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| - liboliphaunt-wasix-runtime | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'extension-artifacts-wasix') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.extension_artifacts_wasix_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download portable WASIX runtime outputs | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-wasix-runtime-portable | |
| path: . | |
| - name: Build WASIX exact-extension artifacts | |
| env: | |
| OLIPHAUNT_EXTENSION_PRODUCTS: ${{ matrix.extensions_csv }} | |
| OLIPHAUNT_EXTENSION_TARGET: ${{ matrix.target }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh extension-artifacts-wasix | |
| - name: Upload WASIX exact-extension artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-wasix-extension-artifacts-${{ matrix.target }} | |
| path: target/extensions/wasix/release-assets | |
| if-no-files-found: error | |
| extension-packages: | |
| name: Builds / extension-packages | |
| needs: | |
| - affected | |
| - extension-artifacts-native | |
| - extension-artifacts-wasix | |
| - liboliphaunt-wasix-aot | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'extension-packages') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download native exact-extension artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-native-extension-artifacts-* | |
| path: target/extensions/native/release-assets | |
| merge-multiple: true | |
| - name: Download WASIX exact-extension artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-wasix-extension-artifacts-* | |
| path: target/extensions/wasix/release-assets | |
| merge-multiple: true | |
| - name: Download WASIX exact-extension AOT artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-wasix-extension-aot-* | |
| path: target/extensions/wasix/aot-artifacts | |
| merge-multiple: true | |
| - name: Build exact-extension product packages | |
| env: | |
| OLIPHAUNT_EXTENSION_PACKAGE_PRODUCTS: ${{ needs.affected.outputs.extension_package_products_csv }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh extension-packages | |
| - name: Upload exact-extension package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-extension-package-artifacts | |
| path: target/extension-artifacts | |
| if-no-files-found: error | |
| mobile-extension-packages: | |
| name: Builds / mobile-extension-packages | |
| needs: | |
| - affected | |
| - extension-artifacts-native | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'mobile-extension-packages') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download native exact-extension artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-native-extension-artifacts-* | |
| path: target/extensions/native/release-assets | |
| merge-multiple: true | |
| - name: Build mobile exact-extension package artifacts | |
| env: | |
| OLIPHAUNT_EXTENSION_PACKAGE_NATIVE_TARGETS: ${{ needs.affected.outputs.mobile_extension_package_native_targets_csv }} | |
| OLIPHAUNT_EXTENSION_PACKAGE_PRODUCTS: ${{ needs.affected.outputs.extension_package_products_csv }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh mobile-extension-packages | |
| - name: Upload mobile exact-extension package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-mobile-extension-package-artifacts | |
| path: target/extension-artifacts | |
| if-no-files-found: error | |
| liboliphaunt-native-desktop: | |
| name: Builds / native-runtime-desktop (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-desktop') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.liboliphaunt_native_desktop_runtime_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up MSVC | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ./.github/actions/setup-msvc | |
| - name: Restore native compiler cache | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 | |
| with: | |
| path: | | |
| ~/.ccache | |
| ${{ matrix.build-root }} | |
| key: liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('src/postgres/versions/18/**', 'src/sources/third-party/shared/**', 'src/sources/third-party/native/**', 'src/shared/extension-runtime-contract/**', 'src/runtimes/liboliphaunt/native/**', 'tools/xtask/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| restore-keys: | | |
| liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Configure native compiler cache | |
| run: .github/scripts/setup-native-build-tools.sh 2G | |
| - name: Build liboliphaunt native runtime | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-native-desktop | |
| - name: Package liboliphaunt macOS release asset | |
| if: ${{ startsWith(matrix.target, 'macos-') }} | |
| env: | |
| OLIPHAUNT_RELEASE_FETCH_ASSETS: "0" | |
| run: tools/release/package-liboliphaunt-macos-assets.sh | |
| - name: Package liboliphaunt Linux release asset | |
| if: ${{ startsWith(matrix.target, 'linux-') }} | |
| env: | |
| OLIPHAUNT_RELEASE_FETCH_ASSETS: "0" | |
| run: tools/release/package-liboliphaunt-linux-assets.sh | |
| - name: Package liboliphaunt Windows release asset | |
| if: ${{ startsWith(matrix.target, 'windows-') }} | |
| shell: pwsh | |
| env: | |
| OLIPHAUNT_RELEASE_FETCH_ASSETS: "0" | |
| run: ./tools/release/package-liboliphaunt-windows-assets.ps1 | |
| - name: Upload liboliphaunt release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-release-assets-${{ matrix.target }} | |
| path: target/liboliphaunt/release-assets | |
| if-no-files-found: error | |
| - name: Show native compiler cache stats | |
| if: ${{ always() }} | |
| env: | |
| NATIVE_TARGET: ${{ matrix.target }} | |
| run: | | |
| if [[ "$NATIVE_TARGET" != windows-* ]] && command -v ccache >/dev/null 2>&1; then | |
| ccache --show-stats | |
| fi | |
| - name: Upload liboliphaunt build logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-logs-${{ matrix.target }} | |
| path: | | |
| ${{ matrix.build-root }}/*.log | |
| target/liboliphaunt/**/*.log | |
| if-no-files-found: ignore | |
| liboliphaunt-native-android: | |
| name: Builds / native-runtime-android (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-android') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.liboliphaunt_native_android_runtime_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| with: | |
| native-ccache: "true" | |
| - name: Restore native compiler cache | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 | |
| with: | |
| path: | | |
| ~/.ccache | |
| ${{ matrix.build-root }} | |
| key: liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('src/postgres/versions/18/**', 'src/sources/third-party/shared/**', 'src/sources/third-party/native/**', 'src/shared/extension-runtime-contract/**', 'src/runtimes/liboliphaunt/native/**', 'tools/xtask/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| restore-keys: | | |
| liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Configure native compiler cache | |
| run: .github/scripts/setup-native-build-tools.sh 2G | |
| - name: Build liboliphaunt Android target | |
| env: | |
| OLIPHAUNT_CI_TARGET: ${{ matrix.target }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-native-android | |
| - name: Package liboliphaunt Android release asset | |
| env: | |
| OLIPHAUNT_CI_TARGET: ${{ matrix.target }} | |
| run: tools/release/package-liboliphaunt-mobile-assets.sh "$OLIPHAUNT_CI_TARGET" | |
| - name: Upload liboliphaunt release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-release-assets-${{ matrix.target }} | |
| path: target/liboliphaunt/release-assets | |
| if-no-files-found: error | |
| - name: Upload liboliphaunt Android target artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-target-${{ matrix.target }} | |
| path: ${{ matrix.ci-artifact-root }} | |
| if-no-files-found: error | |
| - name: Show native compiler cache stats | |
| if: ${{ always() }} | |
| run: | | |
| if command -v ccache >/dev/null 2>&1; then | |
| ccache --show-stats | |
| fi | |
| - name: Upload liboliphaunt Android build logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-logs-${{ matrix.target }} | |
| path: | | |
| ${{ matrix.build-root }}/*.log | |
| target/liboliphaunt/**/*.log | |
| if-no-files-found: ignore | |
| liboliphaunt-native-ios: | |
| name: Builds / native-runtime-ios (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-ios') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.liboliphaunt_native_ios_runtime_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Apple | |
| uses: ./.github/actions/setup-apple | |
| - name: Restore native compiler cache | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 | |
| with: | |
| path: | | |
| ~/.ccache | |
| ${{ matrix.build-root }} | |
| key: liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('src/postgres/versions/18/**', 'src/sources/third-party/shared/**', 'src/sources/third-party/native/**', 'src/shared/extension-runtime-contract/**', 'src/runtimes/liboliphaunt/native/**', 'tools/xtask/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| restore-keys: | | |
| liboliphaunt-native-ccache-${{ matrix.target }}-${{ runner.os }}-${{ runner.arch }}- | |
| - name: Configure native compiler cache | |
| run: .github/scripts/setup-native-build-tools.sh 2G | |
| - name: Build liboliphaunt iOS target | |
| env: | |
| OLIPHAUNT_CI_TARGET: ${{ matrix.target }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-native-ios | |
| - name: Package liboliphaunt iOS release asset | |
| env: | |
| OLIPHAUNT_CI_TARGET: ${{ matrix.target }} | |
| run: tools/release/package-liboliphaunt-mobile-assets.sh "$OLIPHAUNT_CI_TARGET" | |
| - name: Upload liboliphaunt release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-release-assets-${{ matrix.target }} | |
| path: target/liboliphaunt/release-assets | |
| if-no-files-found: error | |
| - name: Upload liboliphaunt iOS target artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-target-${{ matrix.target }} | |
| path: ${{ matrix.ci-artifact-root }} | |
| if-no-files-found: error | |
| - name: Show native compiler cache stats | |
| if: ${{ always() }} | |
| run: | | |
| if command -v ccache >/dev/null 2>&1; then | |
| ccache --show-stats | |
| fi | |
| - name: Upload liboliphaunt iOS build logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-logs-${{ matrix.target }} | |
| path: | | |
| ${{ matrix.build-root }}/*.log | |
| target/liboliphaunt/**/*.log | |
| if-no-files-found: ignore | |
| liboliphaunt-native-release-assets: | |
| name: Builds / native-runtime-release-assets | |
| needs: | |
| - affected | |
| - liboliphaunt-native-android | |
| - liboliphaunt-native-desktop | |
| - liboliphaunt-native-ios | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-release-assets') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download liboliphaunt target release assets | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-native-release-assets-* | |
| path: target/liboliphaunt/release-assets | |
| merge-multiple: true | |
| - name: Package aggregate liboliphaunt release assets | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-native-release-assets | |
| - name: Upload aggregate liboliphaunt release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-native-release-assets | |
| path: target/liboliphaunt/release-assets | |
| if-no-files-found: error | |
| rust-sdk-package: | |
| name: Builds / rust-sdk | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'rust-sdk-package') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| components: clippy,llvm-tools-preview | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| tools: cargo-nextest@0.9.137,cargo-llvm-cov@0.8.7 | |
| - name: Build Rust SDK package artifacts | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh rust-sdk-package | |
| - name: Upload Rust SDK package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-rust-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-rust | |
| if-no-files-found: error | |
| broker-runtime: | |
| name: Builds / broker-runtime (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'broker-runtime') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.broker_runtime_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up MSVC | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ./.github/actions/setup-msvc | |
| - name: Build broker runtime release asset | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh broker-runtime | |
| - name: Upload broker release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-broker-release-assets-${{ matrix.target }} | |
| path: target/oliphaunt-broker/release-assets | |
| if-no-files-found: error | |
| node-direct: | |
| name: Builds / node-direct (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'node-direct') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.node_direct_runtime_matrix) }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up MSVC | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ./.github/actions/setup-msvc | |
| - name: Build Node direct release asset | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh node-direct | |
| - name: Upload Node direct release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-node-direct-release-assets-${{ matrix.target }} | |
| path: target/oliphaunt-node-direct/release-assets | |
| if-no-files-found: error | |
| - name: Upload Node direct optional npm package | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-node-direct-npm-package-${{ matrix.target }} | |
| path: target/oliphaunt-node-direct/npm-packages/*.tgz | |
| if-no-files-found: error | |
| swift-sdk-package: | |
| name: Builds / swift-sdk | |
| needs: | |
| - affected | |
| - liboliphaunt-native-ios | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'swift-sdk-package') }} | |
| runs-on: macos-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Apple | |
| uses: ./.github/actions/setup-apple | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download Apple liboliphaunt release assets | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-native-release-assets-ios-xcframework | |
| path: target/liboliphaunt/release-assets | |
| - name: Build Swift SDK package artifacts | |
| env: | |
| OLIPHAUNT_SWIFT_RELEASE_ASSET_DIR: ${{ github.workspace }}/target/liboliphaunt/release-assets | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh swift-sdk-package | |
| - name: Upload Swift SDK package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-swift-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-swift | |
| if-no-files-found: error | |
| kotlin-sdk-package: | |
| name: Builds / kotlin-sdk | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'kotlin-sdk-package') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Build Kotlin SDK package artifacts | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh kotlin-sdk-package | |
| - name: Upload Kotlin SDK package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-kotlin-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-kotlin | |
| if-no-files-found: error | |
| react-native-sdk-package: | |
| name: Builds / react-native-sdk | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'react-native-sdk-package') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Build React Native SDK package artifacts | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh react-native-sdk-package | |
| - name: Upload React Native SDK package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-react-native-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-react-native | |
| if-no-files-found: error | |
| js-sdk-package: | |
| name: Builds / js-sdk | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'js-sdk-package') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Deno | |
| uses: ./.github/actions/setup-deno | |
| with: | |
| deno-version: ${{ env.DENO_VERSION }} | |
| - name: Build TypeScript SDK package artifacts | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh js-sdk-package | |
| - name: Upload JS SDK package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-js-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-js | |
| if-no-files-found: error | |
| wasix-rust-package: | |
| name: Builds / wasix-rust-binding | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'wasix-rust-package') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| components: llvm-tools-preview | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| tools: cargo-nextest@0.9.137,cargo-llvm-cov@0.8.7 | |
| - name: Install Tauri Linux dependencies | |
| run: | | |
| .github/scripts/prepare-linux-apt.sh | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| libayatana-appindicator3-dev \ | |
| libglib2.0-dev \ | |
| libgtk-3-dev \ | |
| librsvg2-dev \ | |
| libssl-dev \ | |
| libwebkit2gtk-4.1-dev \ | |
| libxdo-dev \ | |
| pkg-config | |
| - name: Build WASIX Rust binding package artifacts | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh wasix-rust-package | |
| - name: Upload WASIX Rust binding package artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: oliphaunt-wasix-rust-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-wasix-rust | |
| if-no-files-found: error | |
| liboliphaunt-wasix-runtime: | |
| name: Builds / liboliphaunt-wasix-runtime | |
| needs: | |
| - affected | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-wasix-runtime') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 360 | |
| permissions: | |
| contents: read | |
| actions: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Verify source-controlled asset inputs | |
| run: cargo run -p xtask -- assets verify-committed | |
| - name: Restore WASIX compilation cache | |
| id: wasix-build-cache | |
| uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 | |
| with: | |
| path: | | |
| target/liboliphaunt-pg18/source | |
| target/oliphaunt-wasix/wasix-build/source-cache | |
| target/oliphaunt-wasix/wasix-build/work/docker-oliphaunt | |
| target/oliphaunt-wasix/wasix-build/work/icu-native | |
| target/oliphaunt-wasix/wasix-build/work/icu-wasix | |
| target/oliphaunt-wasix/wasix-build/work/icu-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/json-c-wasix | |
| target/oliphaunt-wasix/wasix-build/work/json-c-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/libiconv-wasix | |
| target/oliphaunt-wasix/wasix-build/work/libiconv-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/libxml2-wasix | |
| target/oliphaunt-wasix/wasix-build/work/libxml2-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/openssl-wasix | |
| target/oliphaunt-wasix/wasix-build/work/openssl-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/proj-wasix | |
| target/oliphaunt-wasix/wasix-build/work/proj-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/sqlite-wasix | |
| target/oliphaunt-wasix/wasix-build/work/sqlite-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/geos-wasix | |
| target/oliphaunt-wasix/wasix-build/work/geos-wasix-build | |
| target/oliphaunt-wasix/wasix-build/build | |
| key: wasix-build-${{ runner.os }}-${{ env.ASSET_PROFILE }}-${{ env.WASMER_LLVM_VERSION }}-${{ hashFiles('src/runtimes/liboliphaunt/wasix/assets/generated/asset-inputs.sha256', 'src/postgres/versions/18/**', 'src/sources/third-party/**', 'src/sources/toolchains/**', 'src/shared/extension-runtime-contract/**', 'src/runtimes/liboliphaunt/wasix/assets/build/**', 'src/bindings/wasix-rust/crates/oliphaunt-wasix/Cargo.toml', 'src/runtimes/liboliphaunt/wasix/crates/assets/**', 'tools/xtask/**', '.github/actions/setup-wasmer-llvm/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| restore-keys: | | |
| wasix-build-${{ runner.os }}-${{ env.ASSET_PROFILE }}- | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd | |
| - name: Build WASIX builder image and save cache | |
| if: ${{ github.ref == 'refs/heads/main' }} | |
| uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f | |
| with: | |
| context: src/runtimes/liboliphaunt/wasix/assets/build/docker | |
| file: src/runtimes/liboliphaunt/wasix/assets/build/docker/Dockerfile | |
| tags: oliphaunt-wasix-wasix-build:ci | |
| load: true | |
| cache-from: type=gha,scope=wasix-builder | |
| cache-to: type=gha,mode=max,scope=wasix-builder | |
| - name: Build WASIX builder image | |
| if: ${{ github.ref != 'refs/heads/main' }} | |
| uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f | |
| with: | |
| context: src/runtimes/liboliphaunt/wasix/assets/build/docker | |
| file: src/runtimes/liboliphaunt/wasix/assets/build/docker/Dockerfile | |
| tags: oliphaunt-wasix-wasix-build:ci | |
| load: true | |
| cache-from: type=gha,scope=wasix-builder | |
| - name: Install Wasmer LLVM 22.1 for WASIX template generation | |
| uses: ./.github/actions/setup-wasmer-llvm | |
| with: | |
| url: ${{ env.WASMER_LLVM_LINUX_X64_URL }} | |
| version: ${{ env.WASMER_LLVM_VERSION }} | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Build and validate portable WASIX runtime | |
| env: | |
| IMAGE: oliphaunt-wasix-wasix-build:ci | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-wasix-runtime | |
| - name: Save WASIX compilation cache | |
| if: ${{ github.ref == 'refs/heads/main' && steps.wasix-build-cache.outputs.cache-hit != 'true' }} | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 | |
| with: | |
| path: | | |
| target/liboliphaunt-pg18/source | |
| target/oliphaunt-wasix/wasix-build/source-cache | |
| target/oliphaunt-wasix/wasix-build/work/docker-oliphaunt | |
| target/oliphaunt-wasix/wasix-build/work/icu-native | |
| target/oliphaunt-wasix/wasix-build/work/icu-wasix | |
| target/oliphaunt-wasix/wasix-build/work/icu-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/json-c-wasix | |
| target/oliphaunt-wasix/wasix-build/work/json-c-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/libiconv-wasix | |
| target/oliphaunt-wasix/wasix-build/work/libiconv-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/libxml2-wasix | |
| target/oliphaunt-wasix/wasix-build/work/libxml2-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/openssl-wasix | |
| target/oliphaunt-wasix/wasix-build/work/openssl-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/proj-wasix | |
| target/oliphaunt-wasix/wasix-build/work/proj-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/sqlite-wasix | |
| target/oliphaunt-wasix/wasix-build/work/sqlite-wasix-build | |
| target/oliphaunt-wasix/wasix-build/work/geos-wasix | |
| target/oliphaunt-wasix/wasix-build/work/geos-wasix-build | |
| target/oliphaunt-wasix/wasix-build/build | |
| key: wasix-build-${{ runner.os }}-${{ env.ASSET_PROFILE }}-${{ env.WASMER_LLVM_VERSION }}-${{ hashFiles('src/runtimes/liboliphaunt/wasix/assets/generated/asset-inputs.sha256', 'src/postgres/versions/18/**', 'src/sources/third-party/**', 'src/sources/toolchains/**', 'src/shared/extension-runtime-contract/**', 'src/runtimes/liboliphaunt/wasix/assets/build/**', 'src/bindings/wasix-rust/crates/oliphaunt-wasix/Cargo.toml', 'src/runtimes/liboliphaunt/wasix/crates/assets/**', 'tools/xtask/**', '.github/actions/setup-wasmer-llvm/**', 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml') }} | |
| - name: Upload portable WASIX build outputs | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-wasix-runtime-portable | |
| path: | | |
| target/oliphaunt-wasix/wasix-build/build/** | |
| target/oliphaunt-wasix/wasix-build/work/icu-wasix/share/icu/** | |
| target/oliphaunt-wasix/assets/** | |
| src/extensions/generated/** | |
| src/runtimes/liboliphaunt/wasix/assets/generated/** | |
| if-no-files-found: error | |
| liboliphaunt-wasix-aot: | |
| name: Builds / liboliphaunt-wasix-aot (${{ matrix.target_id }}) | |
| needs: | |
| - affected | |
| - liboliphaunt-wasix-runtime | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-wasix-aot') }} | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 180 | |
| permissions: | |
| contents: read | |
| actions: write | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.liboliphaunt_wasix_aot_runtime_matrix || '{"include":[]}') }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Set up MSVC | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ./.github/actions/setup-msvc | |
| - name: Download portable WASIX build outputs | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-wasix-runtime-portable | |
| path: . | |
| - name: Install Wasmer LLVM 22.1 for AOT generation | |
| uses: ./.github/actions/setup-wasmer-llvm | |
| with: | |
| url: ${{ matrix.llvm_url }} | |
| version: ${{ env.WASMER_LLVM_VERSION }} | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Build, validate, and smoke target AOT artifacts | |
| env: | |
| AOT_TARGET: ${{ matrix.target }} | |
| AOT_PACKAGE: ${{ matrix.package }} | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-wasix-aot | |
| - name: Stage target AOT artifact envelope | |
| env: | |
| AOT_TARGET: ${{ matrix.target }} | |
| run: | | |
| target="${AOT_TARGET:?AOT_TARGET is required}" | |
| source="target/oliphaunt-wasix/aot/$target" | |
| if [ ! -d "$source" ]; then | |
| echo "missing AOT output directory: $source" >&2 | |
| exit 1 | |
| fi | |
| upload="target/oliphaunt-wasix/aot-upload" | |
| rm -rf "$upload" | |
| mkdir -p "$upload/files" | |
| cp -R "$source/." "$upload/files/" | |
| printf '%s\n' "$target" >"$upload/target-triple.txt" | |
| - name: Upload target artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-wasix-runtime-aot-${{ matrix.target_id }} | |
| path: | | |
| target/oliphaunt-wasix/aot-upload/** | |
| if-no-files-found: error | |
| - name: Upload target extension AOT artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-wasix-extension-aot-${{ matrix.target_id }} | |
| path: target/extensions/wasix/aot-artifacts | |
| if-no-files-found: error | |
| liboliphaunt-wasix-release-assets: | |
| name: Builds / liboliphaunt-wasix-release-assets | |
| needs: | |
| - affected | |
| - liboliphaunt-wasix-runtime | |
| - liboliphaunt-wasix-aot | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-wasix-release-assets') && (github.event_name != 'workflow_dispatch' || inputs.wasm_target == 'all') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download portable WASIX runtime outputs | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-wasix-runtime-portable | |
| path: . | |
| - name: Download WASIX AOT runtime outputs | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| pattern: liboliphaunt-wasix-runtime-aot-* | |
| path: target/oliphaunt-wasix/aot-downloads | |
| - name: Restore WASIX AOT target layout | |
| run: | | |
| shopt -s nullglob | |
| for artifact_dir in target/oliphaunt-wasix/aot-downloads/liboliphaunt-wasix-runtime-aot-*; do | |
| marker="$artifact_dir/target-triple.txt" | |
| raw_target_dir="$artifact_dir/files" | |
| if [ ! -f "$marker" ] || [ ! -d "$raw_target_dir" ]; then | |
| echo "Invalid WASIX AOT artifact envelope in $artifact_dir" >&2 | |
| exit 1 | |
| fi | |
| target="$(tr -d '\r\n' < "$marker")" | |
| if [ -z "$target" ]; then | |
| echo "Empty WASIX AOT target marker in $marker" >&2 | |
| exit 1 | |
| fi | |
| destination="target/oliphaunt-wasix/aot/$target" | |
| mkdir -p "$destination" | |
| rsync -a "$raw_target_dir/" "$destination/" | |
| done | |
| - name: Package WASIX release assets | |
| run: OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh liboliphaunt-wasix-release-assets | |
| - name: Upload WASIX release assets | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: liboliphaunt-wasix-release-assets | |
| path: target/oliphaunt-wasix/release-assets | |
| if-no-files-found: error | |
| mobile-build-android: | |
| name: Builds / mobile-android (${{ matrix.target }}) | |
| needs: | |
| - affected | |
| - mobile-extension-packages | |
| - liboliphaunt-native-android | |
| - kotlin-sdk-package | |
| - react-native-sdk-package | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-android') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.affected.outputs.react_native_android_mobile_app_matrix) }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| with: | |
| native-ccache: "true" | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Reclaim Android mobile build disk | |
| run: bun .github/scripts/reclaim-android-mobile-build-disk.mjs | |
| - name: Download Android liboliphaunt target | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-native-target-${{ matrix.target }} | |
| path: . | |
| - name: Download Kotlin SDK package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-kotlin-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-kotlin | |
| - name: Download React Native SDK package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-react-native-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-react-native | |
| - name: Download exact-extension package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-mobile-extension-package-artifacts | |
| path: target/extension-artifacts | |
| - name: Build Android mobile app | |
| env: | |
| OLIPHAUNT_EXPO_ALLOW_NATIVE_BUILDS: "0" | |
| OLIPHAUNT_EXPO_REQUIRE_SDK_ARTIFACTS: "1" | |
| OLIPHAUNT_EXPO_SDK_ARTIFACT_ROOT: ${{ github.workspace }}/target/sdk-artifacts | |
| OLIPHAUNT_EXPO_ANDROID_ABI: ${{ matrix.abi }} | |
| OLIPHAUNT_EXPO_ANDROID_BUILD_TYPE: release | |
| OLIPHAUNT_EXPO_REQUIRE_PREBUILT_EXTENSIONS: "1" | |
| OLIPHAUNT_EXPO_EXTENSION_ARTIFACT_ROOT: ${{ github.workspace }}/target/extension-artifacts | |
| OLIPHAUNT_EXPO_ANDROID_OLIPHAUNT_SO: ${{ github.workspace }}/${{ matrix.build-root }}/out/liboliphaunt.so | |
| OLIPHAUNT_EXPO_ANDROID_RUNTIME_DIR: ${{ github.workspace }}/target/liboliphaunt-pg18-linux-x64-gnu/install | |
| OLIPHAUNT_EXPO_ANDROID_INITDB: ${{ github.workspace }}/target/liboliphaunt-pg18-linux-x64-gnu/install/bin/initdb | |
| run: | | |
| OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh mobile-build-android | |
| - name: Validate Android mobile app artifacts | |
| run: tools/dev/bun.sh tools/release/check-staged-artifacts.mjs --require-mobile android --require-mobile-prebuilt-extensions | |
| - name: Upload Android mobile build logs | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-android-build-logs-${{ matrix.target }} | |
| path: | | |
| target/mobile/react-native/android-build/logs | |
| target/oliphaunt-expo-android-*/logs | |
| if-no-files-found: ignore | |
| - name: Upload Android mobile app | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-android-app-${{ matrix.target }} | |
| path: target/mobile-build/react-native/android | |
| if-no-files-found: error | |
| mobile-build-ios: | |
| name: Builds / mobile-ios | |
| needs: | |
| - affected | |
| - mobile-extension-packages | |
| - liboliphaunt-native-ios | |
| - react-native-sdk-package | |
| - swift-sdk-package | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }} | |
| runs-on: macos-26 | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Moon | |
| uses: ./.github/actions/setup-moon | |
| with: | |
| install-workspace: "true" | |
| - name: Set up Apple | |
| uses: ./.github/actions/setup-apple | |
| - name: Set up Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| cache-save-if: ${{ env.RUST_CACHE_SAVE_IF }} | |
| - name: Download iOS liboliphaunt target | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: liboliphaunt-native-target-ios-xcframework | |
| path: . | |
| - name: Download Swift SDK package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-swift-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-swift | |
| - name: Download React Native SDK package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-react-native-sdk-package-artifacts | |
| path: target/sdk-artifacts/oliphaunt-react-native | |
| - name: Download exact-extension package artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: oliphaunt-mobile-extension-package-artifacts | |
| path: target/extension-artifacts | |
| - name: Build iOS mobile app | |
| env: | |
| OLIPHAUNT_EXPO_ALLOW_NATIVE_BUILDS: "0" | |
| OLIPHAUNT_EXPO_REQUIRE_SDK_ARTIFACTS: "1" | |
| OLIPHAUNT_EXPO_SDK_ARTIFACT_ROOT: ${{ github.workspace }}/target/sdk-artifacts | |
| OLIPHAUNT_EXPO_IOS_CONFIGURATION: Release | |
| OLIPHAUNT_EXPO_IOS_SDK: iphonesimulator | |
| OLIPHAUNT_EXPO_REQUIRE_PREBUILT_EXTENSIONS: "1" | |
| OLIPHAUNT_EXPO_EXTENSION_ARTIFACT_ROOT: ${{ github.workspace }}/target/extension-artifacts | |
| OLIPHAUNT_EXPO_IOS_OLIPHAUNT_XCFRAMEWORK: ${{ github.workspace }}/target/liboliphaunt-ios-xcframework/out/liboliphaunt.xcframework | |
| OLIPHAUNT_EXPO_IOS_RUNTIME_DIR: ${{ github.workspace }}/target/liboliphaunt-pg18/install | |
| OLIPHAUNT_EXPO_IOS_INITDB: ${{ github.workspace }}/target/liboliphaunt-pg18/install/bin/initdb | |
| run: | | |
| OLIPHAUNT_CI_JOB_TARGETS_JSON='${{ needs.affected.outputs.job_targets }}' OLIPHAUNT_MOON_UPSTREAM=none MOON_CACHE=off .github/scripts/run-planned-moon-job.sh mobile-build-ios | |
| - name: Validate iOS mobile app artifacts | |
| run: tools/dev/bun.sh tools/release/check-staged-artifacts.mjs --require-mobile ios --require-mobile-prebuilt-extensions | |
| - name: Upload iOS mobile build logs | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-ios-build-logs | |
| path: | | |
| target/mobile/react-native/ios-build/logs | |
| target/mobile/react-native/ios-build/xcodebuild.log | |
| target/oliphaunt-expo-ios-*/logs | |
| target/oliphaunt-expo-ios-*/xcodebuild.log | |
| if-no-files-found: ignore | |
| - name: Upload iOS mobile app | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-ios-app | |
| path: target/mobile-build/react-native/ios | |
| if-no-files-found: error | |
| builds: | |
| name: Builds | |
| if: ${{ always() }} | |
| needs: | |
| - affected | |
| - extension-artifacts-native | |
| - extension-artifacts-wasix | |
| - extension-packages | |
| - mobile-extension-packages | |
| - liboliphaunt-native-android | |
| - liboliphaunt-native-desktop | |
| - liboliphaunt-native-ios | |
| - liboliphaunt-native-release-assets | |
| - rust-sdk-package | |
| - broker-runtime | |
| - node-direct | |
| - swift-sdk-package | |
| - kotlin-sdk-package | |
| - react-native-sdk-package | |
| - js-sdk-package | |
| - wasix-rust-package | |
| - liboliphaunt-wasix-runtime | |
| - liboliphaunt-wasix-aot | |
| - liboliphaunt-wasix-release-assets | |
| - mobile-build-android | |
| - mobile-build-ios | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Check selected build jobs | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| SELECTED_JOBS_JSON: ${{ needs.affected.outputs.builder_jobs }} | |
| GATE_LABEL: selected build jobs | |
| run: bun .github/scripts/check-ci-gate.mjs selected | |
| mobile-e2e-android: | |
| name: E2E / mobile-android | |
| needs: | |
| - affected | |
| - mobile-build-android | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-android') }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Node and pnpm | |
| uses: ./.github/actions/setup-node-pnpm | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| pnpm-version: ${{ env.PNPM_VERSION }} | |
| - name: Set up Android | |
| uses: ./.github/actions/setup-android | |
| - name: Set up Maestro | |
| uses: ./.github/actions/setup-maestro | |
| - name: Download Android app artifact | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: react-native-mobile-android-app-android-x86_64 | |
| path: target/mobile-build/react-native/android | |
| - name: List Android app artifact | |
| run: find target/mobile-build/react-native/android -maxdepth 2 -type f -print | |
| - name: Start Android emulator | |
| env: | |
| OLIPHAUNT_ANDROID_EMULATOR_API: "35" | |
| run: tools/dev/start-android-emulator-ci.sh | |
| - name: Run Android installed-app E2E | |
| env: | |
| OLIPHAUNT_EXPO_ANDROID_BUILD_ARTIFACT_DIR: ${{ github.workspace }}/target/mobile-build/react-native/android | |
| OLIPHAUNT_EXPO_ANDROID_BUILD_TYPE: release | |
| OLIPHAUNT_EXPO_ANDROID_LIFECYCLE_SMOKE: "0" | |
| OLIPHAUNT_MOBILE_E2E_ASSERTION_RUNNER: maestro | |
| run: bash src/sdks/react-native/tools/mobile-e2e.sh android | |
| - name: Upload Android E2E reports | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-android-e2e-reports | |
| path: | | |
| target/mobile/react-native/android-e2e/reports | |
| target/mobile/react-native/android-e2e/logs | |
| ${{ runner.temp }}/oliphaunt-android-emulator.log | |
| if-no-files-found: ignore | |
| mobile-e2e-ios: | |
| name: E2E / mobile-ios | |
| needs: | |
| - affected | |
| - mobile-build-ios | |
| if: ${{ contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }} | |
| runs-on: macos-26 | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Node and pnpm | |
| uses: ./.github/actions/setup-node-pnpm | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| pnpm-version: ${{ env.PNPM_VERSION }} | |
| - name: Set up Apple | |
| uses: ./.github/actions/setup-apple | |
| - name: Set up Maestro | |
| uses: ./.github/actions/setup-maestro | |
| - name: Download iOS app artifact | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | |
| with: | |
| name: react-native-mobile-ios-app | |
| path: target/mobile-build/react-native/ios | |
| - name: List iOS app artifact | |
| run: find target/mobile-build/react-native/ios -maxdepth 2 -print | |
| - name: Run iOS installed-app E2E | |
| env: | |
| OLIPHAUNT_EXPO_IOS_BUILD_ARTIFACT_DIR: ${{ github.workspace }}/target/mobile-build/react-native/ios | |
| OLIPHAUNT_EXPO_IOS_CONFIGURATION: Release | |
| OLIPHAUNT_EXPO_IOS_SDK: iphonesimulator | |
| OLIPHAUNT_EXPO_IOS_LIFECYCLE_SMOKE: "0" | |
| OLIPHAUNT_MOBILE_E2E_ASSERTION_RUNNER: maestro | |
| MAESTRO_DRIVER_STARTUP_TIMEOUT: "300000" | |
| run: bash src/sdks/react-native/tools/mobile-e2e.sh ios | |
| - name: Upload iOS E2E reports | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| with: | |
| name: react-native-mobile-ios-e2e-reports | |
| path: | | |
| target/mobile/react-native/ios-e2e/reports | |
| target/mobile/react-native/ios-e2e/logs | |
| target/mobile/react-native/ios-e2e/*.log | |
| if-no-files-found: ignore | |
| e2e: | |
| name: E2E | |
| if: ${{ always() }} | |
| needs: | |
| - affected | |
| - mobile-e2e-android | |
| - mobile-e2e-ios | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Check E2E jobs | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| REQUIRED_JOBS_JSON: '["mobile-e2e-android","mobile-e2e-ios"]' | |
| GATE_LABEL: E2E jobs | |
| run: bun .github/scripts/check-ci-gate.mjs allow-skipped | |
| required: | |
| name: Required | |
| if: ${{ always() }} | |
| needs: | |
| - affected | |
| - release-intent | |
| - checks | |
| - tests | |
| - builds | |
| - e2e | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 1 | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| persist-credentials: false | |
| - name: Set up Bun | |
| uses: ./.github/actions/setup-bun | |
| with: | |
| bun-version: ${{ env.BUN_VERSION }} | |
| - name: Check required jobs | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| REQUIRED_JOBS_JSON: '["affected","release-intent","checks","tests","builds","e2e"]' | |
| GATE_LABEL: required CI phases | |
| run: bun .github/scripts/check-ci-gate.mjs required |