feat(tracing): Add strict trace continuation support #17344
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: Build & Test | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - release/** | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
| jobs: | |
| diff_check: | |
| uses: ./.github/workflows/skip-ci.yml | |
| job_test: | |
| name: Test | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Test | |
| run: yarn test | |
| job_lint: | |
| name: Lint | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| # Default of ubuntu and apt packages are too old compared to macos packages. | |
| # This is required for using a newer version of clang-format. | |
| - name: Setup clang-format V20 | |
| run: | | |
| sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" 20 | |
| sudo apt-get install -y clang-20 clang-format-20 lld-20 lldb-20 | |
| - name: Set clang-format V20 as default | |
| run: | | |
| sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 200 | |
| sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 200 | |
| sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-20 200 | |
| clang --version | |
| clang-format --version | |
| - name: Install Swiftly and Swift | |
| run: | | |
| # Install Swift dependencies first | |
| sudo apt-get update | |
| sudo apt-get -y install libcurl4-openssl-dev libz3-dev libncurses-dev libedit-dev libxml2-dev | |
| ARCH=$(uname -m) | |
| SWIFTLY_FILE="swiftly-${ARCH}.tar.gz" | |
| curl -sL "https://download.swift.org/swiftly/linux/swiftly-${ARCH}.tar.gz" -o "$SWIFTLY_FILE" | |
| tar zxf "$SWIFTLY_FILE" | |
| ./swiftly init --quiet-shell-followup | |
| . "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" | |
| hash -r | |
| # Install Swift 6.0 (compatible with SwiftLint 0.63.2) | |
| swiftly install 6.0 | |
| swift --version | |
| # Export Swift toolchain path for SwiftLint's SourceKit | |
| SWIFT_BIN=$(which swift) | |
| SWIFT_TOOLCHAIN=$(dirname $(dirname "$SWIFT_BIN")) | |
| SOURCEKIT_PATH=$(find "${SWIFT_TOOLCHAIN}" -name "libsourcekitdInProc.so" -print -quit 2>/dev/null) | |
| if [ -n "$SOURCEKIT_PATH" ]; then | |
| echo "LINUX_SOURCEKIT_LIB_PATH=$(dirname "$SOURCEKIT_PATH")" >> $GITHUB_ENV | |
| else | |
| echo "ERROR: libsourcekitdInProc.so not found under ${SWIFT_TOOLCHAIN}" | |
| exit 1 | |
| fi | |
| - name: Lint | |
| run: | | |
| . "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" | |
| yarn lint | |
| job_check_integrity: | |
| name: Check package integrity | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Save initial lock file | |
| run: cp yarn.lock yarn.lock.initial | |
| - name: Install Dependencies (update lock if necessary) | |
| run: yarn install | |
| - name: Check lock file integrity | |
| run: | | |
| [ "$(diff yarn.lock.initial yarn.lock)" = "" ] | |
| job_build: | |
| name: Build | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Build | |
| run: yarn build | |
| - name: Archive dist | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: dist | |
| path: packages/core/dist | |
| - name: Archive ts3.8 | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ts3.8 | |
| path: packages/core/ts3.8 | |
| - name: Archive Expo Plugin | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: expo-plugin | |
| path: packages/core/plugin/build | |
| - name: Pack | |
| run: yarn build:tarball | |
| - name: Archive Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ${{ github.sha }} | |
| path: | | |
| ${{ github.workspace }}/packages/core/*.tgz | |
| job_type_check: | |
| name: Type Check Typescript 3.8 | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [job_build, diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| env: | |
| YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Download dist | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: dist | |
| path: packages/core/dist | |
| - name: Download ts3.8 | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: ts3.8 | |
| path: packages/core/ts3.8 | |
| - name: Install Global Dependencies | |
| run: npm i -g yalc | |
| - name: Type Check | |
| working-directory: dev-packages/type-check | |
| run: yarn type-check | |
| job_circular_dep_check: | |
| name: Circular Dependency Check | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [job_build, diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Download dist | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: dist | |
| path: packages/core/dist | |
| - name: Download Expo Plugin | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: expo-plugin | |
| path: packages/core/plugin/build | |
| - name: Run madge | |
| run: yarn circularDepCheck | |
| job_bundle: | |
| name: Bundle | |
| runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"] | |
| needs: [job_test, job_build, diff_check] | |
| if: ${{ needs.diff_check.outputs.skip_ci != 'true' }} | |
| strategy: | |
| # we want that the matrix keeps running, default is to cancel them if it fails. | |
| fail-fast: false | |
| matrix: | |
| platform: ['ios', 'android'] | |
| dev: [true, false] | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - run: corepack enable | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| package-manager-cache: false | |
| node-version: 18 | |
| cache: 'yarn' | |
| cache-dependency-path: yarn.lock | |
| - name: Install Dependencies | |
| run: yarn install | |
| - name: Build | |
| run: yarn build | |
| - name: Make Sample Build Directory | |
| run: mkdir build | |
| working-directory: samples/react-native | |
| - name: Bundle | |
| run: | | |
| yarn run react-native bundle \ | |
| --entry-file index.js \ | |
| --platform ${{ matrix.platform }} \ | |
| --dev ${{ matrix.dev }} \ | |
| --reset-cache \ | |
| --bundle-output build/bundle.${{ matrix.platform }}.js \ | |
| --sourcemap-output build/bundle.${{ matrix.platform }}.map | |
| working-directory: samples/react-native |