feat(issues): Wire EAP double-read into issue feed search #18316
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: '[NOT REQUIRED] frontend (optional)' | |
| on: | |
| pull_request: | |
| # Cancel in progress workflows on pull_requests. | |
| # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| # hack for https://github.com/actions/cache/issues/810#issuecomment-1222550359 | |
| env: | |
| SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3 | |
| NODE_OPTIONS: '--max-old-space-size=5120' | |
| jobs: | |
| files-changed: | |
| name: detect what files changed | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 3 | |
| # Map a step output to a job output | |
| outputs: | |
| testable_modified: ${{ steps.changes.outputs.testable_modified }} | |
| testable_rules_changed: ${{ steps.changes.outputs.testable_rules_changed }} | |
| typecheckable_rules_changed: ${{ steps.changes.outputs.typecheckable_rules_changed }} | |
| frontend_all: ${{ steps.changes.outputs.frontend_all }} | |
| merge_base: ${{ steps.merge_base.outputs.merge_base }} | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| with: | |
| fetch-depth: 100 | |
| - name: Check for frontend file changes | |
| uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0 | |
| id: changes | |
| with: | |
| token: ${{ github.token }} | |
| filters: .github/file-filters.yml | |
| list-files: shell | |
| # On PRs, HEAD is the merge commit; its parents (HEAD^1, HEAD^2) are base and head. | |
| # Merge base of those two is what Jest --changedSince needs. | |
| # If merge base can't be computed or non-frontend files changed, output is empty | |
| # and the optional Jest job will be skipped entirely. | |
| - name: Get merge base for changedSince | |
| id: merge_base | |
| run: | | |
| MERGE_BASE=$(git merge-base HEAD^1 HEAD^2 2>/dev/null) || true | |
| if [ -n "$MERGE_BASE" ]; then | |
| CHANGED=$(git diff --name-only "$MERGE_BASE" HEAD^2) | |
| if echo "$CHANGED" | grep -qvE '^static/'; then | |
| echo "Non-frontend file changed — skipping optional Jest" | |
| MERGE_BASE="" | |
| else | |
| echo "Merge base: $MERGE_BASE (Jest will use --changedSince)" | |
| fi | |
| else | |
| echo "Could not compute merge base — skipping optional Jest" | |
| fi | |
| echo "merge_base=${MERGE_BASE:-}" >> "$GITHUB_OUTPUT" | |
| # This job intentionally mirrors `frontend-jest-tests` in frontend.yml. | |
| # Our intent is to try it out for a few weeks and see if it's stable. | |
| frontend-jest-tests-changed-only: | |
| if: >- | |
| needs.files-changed.outputs.merge_base != '' && | |
| (needs.files-changed.outputs.testable_rules_changed == 'true' || needs.files-changed.outputs.testable_modified == 'true') | |
| needs: [files-changed] | |
| name: Jest | |
| # If you change the runs-on image, you must also change the runner in jest-balance.yml | |
| # so that the balancer runs in the same environment as the tests. | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| strategy: | |
| # This helps not having to run multiple jobs because one fails, thus, reducing resource usage | |
| # and reducing the risk that one of many runs would turn red again (read: intermittent tests) | |
| fail-fast: false | |
| matrix: | |
| # XXX: When updating this, make sure you also update CI_NODE_TOTAL. | |
| instance: [0, 1, 2, 3] | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| name: Checkout sentry | |
| with: | |
| # PRs need history so we can compute merge base for Jest --changedSince. | |
| # 100 is an arbitrary depth that will get most reasonable PRs' commits. | |
| fetch-depth: ${{ github.event_name == 'pull_request' && '100' || '1' }} | |
| - uses: ./.github/actions/setup-node-pnpm | |
| - name: Download jest-balance.json | |
| id: download-artifact | |
| uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11 | |
| with: | |
| workflow: 38531594 # jest-balancer.yml | |
| workflow_conclusion: success # The conclusion of the workflow we're looking for | |
| branch: master # The branch we're looking for | |
| name: jest-balance.json # Artifact name | |
| name_is_regexp: false | |
| path: tests/js/test-balancer/ # Directory where to extract artifact(s), defaults to the current directory | |
| search_artifacts: true # Search for the last workflow run whose stored the artifact we're looking for | |
| if_no_artifact_found: warn # Can be one of: "fail", "warn", "ignore" | |
| - name: jest | |
| env: | |
| GITHUB_PR_SHA: ${{ github.event.pull_request.head.sha || github.sha }} | |
| GITHUB_PR_REF: ${{ github.event.pull_request.head.ref || github.ref }} | |
| # XXX: CI_NODE_TOTAL must be hardcoded to the length of strategy.matrix.instance. | |
| # Otherwise, if there are other things in the matrix, using strategy.job-total | |
| # wouldn't be correct. | |
| CI_NODE_TOTAL: 4 | |
| CI_NODE_INDEX: ${{ matrix.instance }} | |
| # Disable testing-library from printing out any of of the DOM to | |
| # stdout. No one actually looks through this in CI, they're just | |
| # going to run it locally. | |
| # | |
| # This quiets up the logs quite a bit. | |
| DEBUG_PRINT_LIMIT: 0 | |
| MERGE_BASE: ${{ needs.files-changed.outputs.merge_base }} | |
| run: pnpm run test-ci --forceExit | |
| typescript-native: | |
| if: needs.files-changed.outputs.frontend_all == 'true' | |
| needs: files-changed | |
| name: '@typescript/native-preview' | |
| runs-on: ubuntu-24.04 | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| - uses: ./.github/actions/setup-node-pnpm | |
| - name: setup matchers | |
| run: | | |
| echo "::remove-matcher owner=masters::" | |
| echo "::add-matcher::.github/tsc.json" | |
| - name: tsgo | |
| id: tsgo | |
| run: pnpm run typecheck |