name: Bindings tests on: workflow_dispatch: push: branches: [main] pull_request: branches: [main] types: - opened - reopened - synchronize - ready_for_review concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always jobs: xtask: uses: ./.github/workflows/xtask.yml test-uniffi-codegen: name: Test UniFFI bindings generation needs: xtask if: github.event_name == 'push' || !github.event.pull_request.draft runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Protoc uses: arduino/setup-protoc@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Load cache uses: Swatinem/rust-cache@v2 with: save-if: ${{ github.ref == 'refs/heads/main' }} - name: Get xtask uses: actions/cache/restore@v3 with: path: target/debug/xtask key: "${{ needs.xtask.outputs.cachekey-linux }}" fail-on-cache-miss: true - name: Build library & generate bindings run: target/debug/xtask ci bindings test-apple: name: matrix-rust-components-swift needs: xtask runs-on: macos-12 if: github.event_name == 'push' || !github.event.pull_request.draft steps: - name: Checkout uses: actions/checkout@v3 # install protoc in case we end up rebuilding opentelemetry-proto - name: Install Protoc uses: arduino/setup-protoc@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Install aarch64-apple-ios target run: rustup target install aarch64-apple-ios - name: Load cache uses: Swatinem/rust-cache@v2 with: save-if: ${{ github.ref == 'refs/heads/main' }} - name: Get xtask uses: actions/cache/restore@v3 with: path: target/debug/xtask key: "${{ needs.xtask.outputs.cachekey-macos }}" fail-on-cache-miss: true - name: Build library & bindings run: target/debug/xtask swift build-library - name: Run XCTests working-directory: bindings/apple run: swift test - name: Build Framework run: target/debug/xtask swift build-framework --only-target=aarch64-apple-ios