Skip to content

Commit 6b52a55

Browse files
committed
Merge remote-tracking branch 'origin/master' into roggenkemper/feat/llm-detection-enable-option-fe
2 parents 5f99a46 + 7e3195c commit 6b52a55

File tree

1,406 files changed

+47405
-48911
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,406 files changed

+47405
-48911
lines changed

.agents/skills/sentry-security/references/serializer-patterns.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ class IssueAlertRuleSerializer(serializers.Serializer):
4040
1. If org has `allow_joinleave` flag → any team is allowed (user could join anyway)
4141
2. If user has `team:admin` scope → any team is allowed
4242
3. If user is a member of the target team → allowed
43-
4. If user is a member of the current owner's team → allowed (can reassign from their team)
44-
5. Otherwise → `ValidationError("You can only assign teams you are a member of")`
43+
4. Otherwise → `ValidationError("You can only assign teams you are a member of")`
4544

4645
### What to look for
4746

.github/CODEOWNERS

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ pyproject.toml @getsentry/owners-pytho
172172
vercel.json @getsentry/owners-js-build
173173
/.github/workflows/frontend.yml @getsentry/owners-js-build
174174
/.github/file-filters.yml @getsentry/owners-js-build
175-
babel.config.* @getsentry/owners-js-build
176175
build-utils/ @getsentry/owners-js-build
177176
eslint.config.ts @getsentry/owners-js-build
178177
jest-balance.json @getsentry/owners-js-build
@@ -276,6 +275,8 @@ pnpm-lock.yaml @getsentry/owners-js-de
276275
/src/sentry/api/endpoints/organization_measurements_meta.py @getsentry/data-browsing
277276
src/sentry/api/endpoints/organization_attribute_mappings.py @getsentry/data-browsing
278277

278+
/src/sentry/integrations/slack/unfurl/explore.py @getsentry/data-browsing
279+
279280
/tests/snuba/api/endpoints/* @getsentry/data-browsing
280281
/tests/snuba/api/endpoints/test_organization_tags.py @getsentry/data-browsing
281282
/tests/snuba/api/endpoints/test_organization_events_histogram.py @getsentry/data-browsing
@@ -354,6 +355,7 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
354355
/static/app/components/arithmeticBuilder/ @getsentry/data-browsing
355356

356357
/static/app/components/charts/ @getsentry/data-browsing
358+
/static/app/chartcuterie/timeseries.tsx @getsentry/data-browsing
357359

358360
/static/app/views/insights/ @getsentry/dashboards
359361

@@ -439,6 +441,9 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
439441
/static/app/components/loading/ @getsentry/app-frontend
440442
/static/app/components/events/interfaces/ @getsentry/app-frontend
441443
/static/app/components/forms/ @getsentry/app-frontend
444+
/static/app/components/featureShowcase.mdx @getsentry/app-frontend
445+
/static/app/components/featureShowcase.spec.tsx @getsentry/app-frontend
446+
/static/app/components/featureShowcase.tsx @getsentry/app-frontend
442447
/static/app/components/markdownTextArea.tsx @getsentry/app-frontend
443448
/static/app/locale.tsx @getsentry/app-frontend
444449
## End of Frontend

.github/dependabot.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ updates:
1515
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups
1616
groups:
1717
# The name of the group, it will be used in PR titles and branch
18-
babel-dependencies:
18+
swc-dependencies:
1919
patterns:
20-
- '@babel/*'
20+
- '@swc/*'
2121
sentry-dependencies:
2222
patterns:
2323
- '@sentry/core'

.github/file-filters.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
sentry_frontend_workflow_file: &sentry_frontend_workflow_file
44
- added|modified: '.github/workflows/frontend.yml'
55

6+
sentry_frontend_snapshots_workflow_file: &sentry_frontend_snapshots_workflow_file
7+
- added|modified: '.github/workflows/frontend-snapshots.yml'
8+
69
# Provides list of changed files to test (jest)
710
# getsentry/sentry does not use the list directly, instead we shard tests inside jest.config.js
811
testable_modified: &testable_modified
@@ -30,6 +33,7 @@ typecheckable_rules_changed: &typecheckable_rules_changed
3033
# Trigger to apply the 'Scope: Frontend' label to PRs
3134
frontend_all: &frontend_all
3235
- *sentry_frontend_workflow_file
36+
- *sentry_frontend_snapshots_workflow_file
3337
- added|modified: '**/*.{ts,tsx,js,jsx,mjs}'
3438
- added|modified: 'static/**/*.{less,json,yml,md,mdx}'
3539
- added|modified: '{vercel,tsconfig,biome,package}.json'

.github/workflows/acceptance.yml

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ jobs:
6363
# XXX: MATRIX_INSTANCE_TOTAL must match the matrix size (5 for backend changes, 10 for frontend-only)
6464
MATRIX_INSTANCE_TOTAL: ${{ needs.files-changed.outputs.backend_all == 'true' && '5' || '10' }}
6565
TEST_GROUP_STRATEGY: roundrobin
66+
PYTHONHASHSEED: '0'
67+
XDIST_PER_WORKER_SNUBA: '1'
68+
XDIST_WORKERS: '2'
6669

6770
steps:
6871
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
@@ -74,6 +77,13 @@ jobs:
7477
with:
7578
mode: acceptance-ci
7679

80+
- name: Start Snuba bootstrap
81+
if: env.XDIST_PER_WORKER_SNUBA == '1'
82+
run: |
83+
# Start in background early so it overlaps with webpack and sentry env setup.
84+
# The script polls for ClickHouse readiness itself.
85+
python3 ./.github/actions/setup-devservices/bootstrap-snuba.py &
86+
7787
- name: Step configurations
7888
id: config
7989
run: |
@@ -111,8 +121,20 @@ jobs:
111121
sentry init
112122
./.github/actions/setup-devservices/wait.sh
113123
124+
- name: Wait for Snuba bootstrap
125+
if: env.XDIST_PER_WORKER_SNUBA == '1'
126+
run: |
127+
timeout 600 bash -c 'until [ -f /tmp/snuba-bootstrap-exit ]; do sleep 2; done' ||
128+
{ echo "::error::Timed out waiting for Snuba bootstrap after 600s"; exit 1; }
129+
rc=$(</tmp/snuba-bootstrap-exit)
130+
[ "$rc" -eq 0 ] || { echo "::error::Snuba per-worker bootstrap failed"; exit "$rc"; }
131+
114132
- name: Run acceptance tests (#${{ steps.setup.outputs.matrix-instance-number }} of ${{ steps.setup.outputs.matrix-instance-total }})
115-
run: make run-acceptance
133+
run: |
134+
export PYTEST_ADDOPTS="$PYTEST_ADDOPTS -n ${XDIST_WORKERS} --dist=loadfile"
135+
timeout 1200 make run-acceptance || rc=$?
136+
[ "${rc:-0}" -ne 124 ] || echo "::error::Test run timed out after 20 minutes (possible xdist hang)"
137+
exit "${rc:-0}"
116138
117139
- name: Inspect failure
118140
if: failure()
@@ -126,6 +148,13 @@ jobs:
126148
devservices logs
127149
fi
128150
151+
if [ "${XDIST_PER_WORKER_SNUBA}" = "1" ]; then
152+
for i in $(seq 0 $(( ${XDIST_WORKERS} - 1 ))); do
153+
echo "--- snuba-gw${i} logs ---"
154+
docker logs "snuba-gw${i}" 2>&1 | tail -30 || true
155+
done
156+
fi
157+
129158
- name: Collect test data
130159
uses: ./.github/actions/collect-test-data
131160
if: ${{ !cancelled() }}

.github/workflows/codeql.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ on:
1414
schedule:
1515
- cron: '44 12 * * 1'
1616

17+
concurrency:
18+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
19+
cancel-in-progress: true
20+
1721
jobs:
1822
analyze:
1923
name: Analyze

.github/workflows/enforce-license-compliance.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ name: Enforce License Compliance
33
on:
44
pull_request:
55

6+
concurrency:
7+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
8+
cancel-in-progress: true
9+
610
jobs:
711
enforce-license-compliance:
812
runs-on: ubuntu-latest

.github/workflows/frontend-snapshots.yml

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -69,37 +69,19 @@ jobs:
6969

7070
- name: Install sentry-cli
7171
if: ${{ !cancelled() }}
72-
run: curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION=3.3.4 sh
72+
run: curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION=3.3.5 sh
7373

7474
- name: Upload snapshots
7575
id: upload
7676
if: ${{ !cancelled() }}
7777
env:
7878
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SNAPSHOTS_AUTH_TOKEN }}
79-
run: |
80-
ARGS=(
81-
--log-level=debug
82-
--auth-token "${{ secrets.SENTRY_SNAPSHOTS_AUTH_TOKEN }}"
83-
build snapshots "${{ env.SNAPSHOT_OUTPUT_DIR }}"
84-
--app-id sentry-frontend
85-
--project sentry-frontend
86-
--head-sha "${{ github.event.pull_request.head.sha || github.sha }}"
87-
--vcs-provider github
88-
--head-repo-name "${{ github.repository }}"
89-
)
90-
91-
# PR-only flags: base-sha, base-ref, base-repo-name, head-ref, pr-number
92-
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
93-
ARGS+=(
94-
--base-sha "${{ github.event.pull_request.base.sha }}"
95-
--base-repo-name "${{ github.repository }}"
96-
--head-ref "${{ github.head_ref }}"
97-
--base-ref "${{ github.base_ref }}"
98-
--pr-number "${{ github.event.number }}"
99-
)
100-
fi
101-
102-
sentry-cli "${ARGS[@]}"
79+
run: >
80+
sentry-cli
81+
--log-level=debug
82+
build snapshots "${{ env.SNAPSHOT_OUTPUT_DIR }}"
83+
--app-id sentry-frontend
84+
--project sentry-frontend
10385
10486
- name: Report upload failure to Sentry
10587
if: ${{ failure() && steps.upload.outcome == 'failure' }}

.github/workflows/frontend.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,17 @@ jobs:
131131

132132
- uses: ./.github/actions/setup-node-pnpm
133133

134+
- name: jest transform cache
135+
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
136+
with:
137+
path: |
138+
.cache/jest
139+
~/.cache/swc
140+
key: jest-cache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'jest.config.ts') }}-${{ matrix.instance }}
141+
restore-keys: |
142+
jest-cache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'jest.config.ts') }}-
143+
jest-cache-${{ runner.os }}-
144+
134145
- name: Download jest-balance.json
135146
id: download-artifact
136147
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11

.github/workflows/migrations-drift.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
run: make apply-migrations
5252

5353
- name: capture database schema before
54-
run: docker exec postgres-postgres-1 bash -c 'pg_dumpall -U postgres -s' > schema-before
54+
run: docker exec postgres-postgres-1 bash -c 'pg_dumpall -U postgres -s --restrict-key=driftcheck' > schema-before
5555

5656
- name: clear db
5757
run: make drop-db create-db
@@ -65,7 +65,7 @@ jobs:
6565
run: make drop-db apply-migrations
6666

6767
- name: capture database schema after
68-
run: docker exec postgres-postgres-1 bash -c 'pg_dumpall -U postgres -s' > schema-after
68+
run: docker exec postgres-postgres-1 bash -c 'pg_dumpall -U postgres -s --restrict-key=driftcheck' > schema-after
6969

7070
- name: compare schema
7171
run: python3 -um tools.migrations.compare --color schema-before schema-after

0 commit comments

Comments
 (0)