Skip to content

Remove Codecov Endpoints and All Codecov Access Paths#116422

Draft
calvin-codecov wants to merge 6 commits into
masterfrom
cy/remove_code_coverage_be
Draft

Remove Codecov Endpoints and All Codecov Access Paths#116422
calvin-codecov wants to merge 6 commits into
masterfrom
cy/remove_code_coverage_be

Conversation

@calvin-codecov
Copy link
Copy Markdown
Contributor

@calvin-codecov calvin-codecov commented May 28, 2026

This PR currently bases off and includes frontend commits from the feature branch for FE removal changes. (cy/remove_code_coverage)

Remove Codecov Endpoints and All Codecov Access Paths

  • 9 Prevent endpoints + their JWT client/base under src/sentry/codecov/
  • project_stacktrace_coverage REST endpoint and its codecov.client-secret callsite
  • GitHub install/uninstall hooks that POST to Codecov's /internal/account/link|unlink
  • Daily auto_enable_codecov Celery beat job
  • All three credential options (codecov.api-bridge-signing-secret, codecov.client-secret, codecov.signing_secret) and the CODECOV_API_BASE_URL Django setting
  • The Organization.flags.codecov_access bitflag + replicated OrganizationMapping.codecov_access column + RPC fields + codecovAccess API surface
  • Feature flags, API ownership, OpenAPI tag/params, codeowners, mypy exclusions, locale strings, and tests

Does not remove:

  • OIDC auth token

@calvin-codecov calvin-codecov requested review from a team as code owners May 28, 2026 19:18
@github-actions github-actions Bot added Scope: Frontend Automatically applied to PRs that change frontend components Scope: Backend Automatically applied to PRs that change backend components labels May 28, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🚨 Warning: This pull request contains Frontend and Backend changes!

It's discouraged to make changes to Sentry's Frontend and Backend in a single pull request. The Frontend and Backend are not atomically deployed. If the changes are interdependent of each other, they must be separated into two pull requests and be made forward or backwards compatible, such that the Backend or Frontend can be safely deployed independently.

Have questions? Please ask in the #discuss-dev-infra channel.

@github-actions
Copy link
Copy Markdown
Contributor

📊 Type Coverage Diff

✅ No new type safety issues introduced. Coverage: 93.58%

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 28, 2026

Backend Test Failures

Failures on a0779c4 in this run:

tests/snuba/api/endpoints/test_organization_trace_item_attributes.py::OrganizationTraceItemAttributesEndpointSpansTest::test_empty_attribute_type_for_all_attribute_typeslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/api/endpoints/test_organization_trace_item_attributes.py:1136: in test_empty_attribute_type_for_all_attribute_types
    assert ("tags[tag.boolean,number]", "number") in keys
E   AssertionError: assert ('tags[tag.boolean,number]', 'number') in {('tag.string', 'string'), ('tags[tag.boolean,boolean]', 'boolean'), ('tags[tag.number,number]', 'number')}
tests/snuba/api/endpoints/test_organization_trace_item_attributes.py::OrganizationTraceItemAttributesEndpointSpansTest::test_multiple_attribute_typeslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/api/endpoints/test_organization_trace_item_attributes.py:1161: in test_multiple_attribute_types
    assert ("tags[tag.boolean,number]", "number") in keys
E   AssertionError: assert ('tags[tag.boolean,number]', 'number') in {('tag.string', 'string'), ('tags[tag.number,number]', 'number')}
tests/symbolicator/test_payload_full.py::SymbolicatorResolvingIntegrationTest::test_missing_debug_imageslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_payload_full.py:221: in test_missing_debug_images
    insta_snapshot_native_stacktrace_data(self, event.data)
tests/symbolicator/__init__.py:68: in insta_snapshot_native_stacktrace_data
    self.insta_snapshot(
E   Failed: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E   Snapshot /home/runner/work/sentry/sentry/tests/symbolicator/snapshots/SymbolicatorResolvingIntegrationTest/test_missing_debug_images.pysnap changed!
E   
E   
E   Re-run pytest with SENTRY_SNAPSHOTS_WRITEBACK=new and then use 'make review-python-snapshots' to review.
E   
E   Or: Use SENTRY_SNAPSHOTS_WRITEBACK=1 to update snapshots directly.
E   
E   
E   --- 
E   
E   +++ 
E   
E   @@ -1,4 +1,9 @@
E   
E   -contexts: null
E   +contexts:
E   +  trace:
E   +    span_id: 589305d28e9246b9
E   +    status: unknown
E   +    trace_id: 589305d28e9246b9bb02c35d2428b3c4
E   +    type: trace
E    debug_meta: null
E    errors: []
E    exception:
E   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/symbolicator/test_minidump_full.py::SymbolicatorMinidumpIntegrationTest::test_reprocessinglog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_minidump_full.py:173: in test_reprocessing
    insta_snapshot_native_stacktrace_data(self, event.data, subname="initial")
tests/symbolicator/__init__.py:68: in insta_snapshot_native_stacktrace_data
    self.insta_snapshot(
E   Failed: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E   Snapshot /home/runner/work/sentry/sentry/tests/symbolicator/snapshots/SymbolicatorMinidumpIntegrationTest/test_reprocessing_initial.pysnap changed!
E   
E   
E   Re-run pytest with SENTRY_SNAPSHOTS_WRITEBACK=new and then use 'make review-python-snapshots' to review.
E   
E   Or: Use SENTRY_SNAPSHOTS_WRITEBACK=1 to update snapshots directly.
E   
E   
E   --- 
E   
E   +++ 
E   
E   @@ -6,6 +6,11 @@
E   
E        name: Windows
E        type: os
E        version: 10.0.14393
E   +  trace:
E   +    span_id: d35676557fa04b17
E   +    status: unknown
E   +    trace_id: d35676557fa04b17aed91fff33660b3b
E   +    type: trace
E    debug_meta:
E      images:
E      - candidates:
E   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/symbolicator/test_payload_full.py::SymbolicatorResolvingIntegrationTest::test_debug_id_resolvinglog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_payload_full.py:203: in test_debug_id_resolving
    insta_snapshot_native_stacktrace_data(self, event.data)
tests/symbolicator/__init__.py:68: in insta_snapshot_native_stacktrace_data
    self.insta_snapshot(
E   Failed: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E   Snapshot /home/runner/work/sentry/sentry/tests/symbolicator/snapshots/SymbolicatorResolvingIntegrationTest/test_debug_id_resolving.pysnap changed!
E   
E   
E   Re-run pytest with SENTRY_SNAPSHOTS_WRITEBACK=new and then use 'make review-python-snapshots' to review.
E   
E   Or: Use SENTRY_SNAPSHOTS_WRITEBACK=1 to update snapshots directly.
E   
E   
E   --- 
E   
E   +++ 
E   
E   @@ -8,6 +8,11 @@
E   
E        os: Windows 10.0.14393
E        type: os
E        version: 10.0.14393
E   +  trace:
E   +    span_id: f8e10df93f2b4891
E   +    status: unknown
E   +    trace_id: f8e10df93f2b48919034a72fb1a92597
E   +    type: trace
E    debug_meta:
E      images:
E      - arch: x86
E   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/symbolicator/test_minidump_full.py::SymbolicatorMinidumpIntegrationTest::test_missing_dsymlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_minidump_full.py:155: in test_missing_dsym
    insta_snapshot_native_stacktrace_data(self, event.data)
tests/symbolicator/__init__.py:68: in insta_snapshot_native_stacktrace_data
    self.insta_snapshot(
E   Failed: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E   Snapshot /home/runner/work/sentry/sentry/tests/symbolicator/snapshots/SymbolicatorMinidumpIntegrationTest/test_missing_dsym.pysnap changed!
E   
E   
E   Re-run pytest with SENTRY_SNAPSHOTS_WRITEBACK=new and then use 'make review-python-snapshots' to review.
E   
E   Or: Use SENTRY_SNAPSHOTS_WRITEBACK=1 to update snapshots directly.
E   
E   
E   --- 
E   
E   +++ 
E   
E   @@ -6,6 +6,11 @@
E   
E        name: Windows
E        type: os
E        version: 10.0.14393
E   +  trace:
E   +    span_id: 80d902ff94344cb6
E   +    status: unknown
E   +    trace_id: 80d902ff94344cb6857347dba3c03c76
E   +    type: trace
E    debug_meta:
E      images:
E      - candidates:
E   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/symbolicator/test_payload_full.py::SymbolicatorResolvingIntegrationTest::test_real_resolvinglog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_payload_full.py:140: in test_real_resolving
    insta_snapshot_native_stacktrace_data(self, event.data)
tests/symbolicator/__init__.py:68: in insta_snapshot_native_stacktrace_data
    self.insta_snapshot(
E   Failed: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E   Snapshot /home/runner/work/sentry/sentry/tests/symbolicator/snapshots/SymbolicatorResolvingIntegrationTest/test_real_resolving.pysnap changed!
E   
E   
E   Re-run pytest with SENTRY_SNAPSHOTS_WRITEBACK=new and then use 'make review-python-snapshots' to review.
E   
E   Or: Use SENTRY_SNAPSHOTS_WRITEBACK=1 to update snapshots directly.
E   
E   
E   --- 
E   
E   +++ 
E   
E   @@ -1,4 +1,9 @@
E   
E   -contexts: null
E   +contexts:
E   +  trace:
E   +    span_id: 9f9f5f83840d4a9f
E   +    status: unknown
E   +    trace_id: 9f9f5f83840d4a9f926284dc348df7cc
E   +    type: trace
E    debug_meta:
E      images:
E      - arch: x86_64
E   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tests/sentry/backup/test_validate.py::test_auto_assign_email_obfuscating_comparatorlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/backup/test_validate.py:292: in test_auto_assign_email_obfuscating_comparator
    assert findings[0].kind == ComparatorFindingKind.EmailObfuscatingComparator
E   assert <ComparatorFindingKind.UnequalJSON: 5> == <ComparatorFindingKind.EmailObfuscatingComparator: 12>
E    +  where <ComparatorFindingKind.UnequalJSON: 5> = ComparatorFinding(on=InstanceID(model='sentry.email', ordinal=1), left_pk=1, right_pk=1, reason='\n    --- \n\n    +++...mail": "testing@example.com"\n    +  "email": "foo@example.fake"\n     }', kind=<ComparatorFindingKind.UnequalJSON: 5>).kind
E    +  and   <ComparatorFindingKind.EmailObfuscatingComparator: 12> = ComparatorFindingKind.EmailObfuscatingComparator
tests/sentry/backup/test_validate.py::test_bad_missing_custom_ordinallog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/backup/test_validate.py:529: in test_bad_missing_custom_ordinal
    assert findings[0].kind == ComparatorFindingKind.EmailObfuscatingComparator
E   assert <ComparatorFindingKind.UnequalJSON: 5> == <ComparatorFindingKind.EmailObfuscatingComparator: 12>
E    +  where <ComparatorFindingKind.UnequalJSON: 5> = ComparatorFinding(on=InstanceID(model='sentry.email', ordinal=2), left_pk=2, right_pk=1, reason='\n    --- \n\n    +++...    -  "email": "b@example.com"\n    +  "email": "c@example.com"\n     }', kind=<ComparatorFindingKind.UnequalJSON: 5>).kind
E    +  and   <ComparatorFindingKind.EmailObfuscatingComparator: 12> = ComparatorFindingKind.EmailObfuscatingComparator
tests/symbolicator/test_minidump_full.py::SymbolicatorMinidumpIntegrationTest::test_full_minidumplog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/symbolicator/test_minidump_full.py:87: in test_full_minidump
    event = self.post_and_retrieve_minidump(
src/sentry/testutils/relay.py:127: in post_and_retrieve_minidump
    assert resp.ok
E   assert False
E    +  where False = <Response [503]>.ok
tests/snuba/api/endpoints/test_organization_events_span_indexed.py::OrganizationEventsSpansEndpointTest::test_typed_attributes_with_colonslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/api/endpoints/test_organization_events_span_indexed.py:5026: in test_typed_attributes_with_colons
    assert response.data["data"] == [
E   AssertionError: assert [] == [{'id': 'eefa...,number]': 1}]
E     
E     Right contains one more item: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33meefabea988b841ee�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mproject.name�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mbar�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mtags[flag.evaluation.feature.organizations:foo,number]�[39;49;00m�[33m'�[39;49;00m: �[94m1�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[92m+ []�[39;49;00m�[90m�[39;49;00m
E     �[91m- [�[39;49;00m�[90m�[39;49;00m
E     �[91m-     {�[39;49;00m�[90m�[39;49;00m
E     �[91m-         'id': 'eefabea988b841ee',�[39;49;00m�[90m�[39;49;00m
E     �[91m-         'project.name': 'bar',�[39;49;00m�[90m�[39;49;00m
E     �[91m-         'tags[flag.evaluation.feature.organizations:foo,number]': 1,�[39;49;00m�[90m�[39;49;00m
E     �[91m-     },�[39;49;00m�[90m�[39;49;00m
E     �[91m- ]�[39;49;00m�[90m�[39;49;00m
tests/snuba/api/endpoints/test_organization_events_meta.py::OrganizationSpansSamplesEndpoint::test_is_using_sample_ratelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/api/endpoints/test_organization_events_meta.py:537: in test_is_using_sample_rate
    assert response.status_code == 200, response.content
E   AssertionError: b'{"detail":"Internal error. Please try again."}'
E   assert 500 == 200
E    +  where 500 = <Response status_code=500, "application/json">.status_code

@calvin-codecov calvin-codecov marked this pull request as draft May 28, 2026 21:27
Base automatically changed from cy/remove_code_coverage to master May 29, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant