name: FFI CI on: workflow_run: workflows: ["OCCT CI"] types: - completed push: branches: [master, dev-occt**, dev-ffi**] paths: - "src/ffi/**" - "test/ffi/**" - "ci/scripts/ffi.sh" - "ci/ffi.Dockerfile" - "Cargo.toml" - "Cargo.lock" - "build.rs" pull_request: branches: [master, dev-occt, dev-ffi] paths: - "src/ffi/**" - "test/ffi/**" - "ci/scripts/ffi.sh" - "Cargo.toml" - "Cargo.lock" - "build.rs" jobs: build-ffi: name: Build FFI runs-on: ubuntu-24.04 if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name != 'workflow_run' }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Pull OCCT builder image run: | docker pull ghcr.io/${{ github.repository }}/occt-builder:latest || echo "OCCT image not found, will build from source" - name: Make script executable run: chmod +x ./ci/scripts/ffi.sh - name: Build FFI and run tests run: ./ci/scripts/ffi.sh --tests - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: ffi-test-results path: | target/debug/ **/test-results/ retention-days: 7