Repository navigation
Update java-v9 branch #20247
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Update java-v9 branch #20247
Changes from all commits
Commits
Show all changes
127 commits
Select commit
Hold shift + click to select a range
cc97b0c
Bump API schema to 2b03abf7 (#20101)
sentry-api-schema-updater[bot] 1a09849
docs(self-hosted): remove invalid mentions of copying .env.custom and…
aldy505 a01d830
Bump API schema to 1ef2ab27 (#20104)
sentry-api-schema-updater[bot] a706b45
Bump API schema to a1e7464c (#20105)
sentry-api-schema-updater[bot] d2d61f0
docs(size-analysis): Link status check rules API from Status Checks (…
sentry-junior[bot] 2c1980a
docs(develop): Remove next_trace span link type (#20113)
sentry-junior[bot] 24bf5ea
Bump API schema to 3cdad034 (#20114)
sentry-api-schema-updater[bot] ae06929
Bump API schema to a25931d5 (#20115)
sentry-api-schema-updater[bot] 6f86cef
docs(nestjs): Clarify background job scope isolation (#20079)
nicohrubec 77086df
docs: Remove outdated logs and metrics enable flags from shared pages…
dingsdax 29e6c68
docs(auth): Add SCIM 2.0 service discovery section (#19817)
saadk408 c9cb8e7
Bump API schema to f56baf12 (#20118)
sentry-api-schema-updater[bot] 24f553d
Bump API schema to 285d9cbc (#20119)
sentry-api-schema-updater[bot] dca8c33
docs(python): Fix trace_ignore_status_codes option type (#20121)
sentry-junior[bot] 84d5e59
docs(js): Load the Deno import hook with --preload (#20080)
JPeer264 8654e16
feat(docs): Apply new quick start template to .NET quick start guides…
sentry-junior[bot] f1d092b
getsentry/relay@60972d455a1178423ec2d793a2d783158c022896
untitaker e64c3ea
docs(php): Fix before_breadcrumb return type (#20122)
sentry-junior[bot] 2bd643f
docs(python): Add `data_collection` alternatives to integration docs …
sentrivana c1e408b
docs(python): Use `data_collection` in `init` snippets (#20130)
sentrivana d8a2c92
docs(python): Clarify that manual AI span attributes aren't filtered …
sentrivana 636057c
Bump API schema to dc40ad2b (#20133)
sentry-api-schema-updater[bot] 46929c9
Bump API schema to f5e2db97 (#20134)
sentry-api-schema-updater[bot] 73db022
Bump API schema to 2c407fef (#20135)
sentry-api-schema-updater[bot] 6207372
Bump API schema to 03b63c05 (#20136)
sentry-api-schema-updater[bot] 4d01b27
Bump API schema to 8de28f6d (#20138)
sentry-api-schema-updater[bot] b7fb950
Bump API schema to ceaace46 (#20139)
sentry-api-schema-updater[bot] bf18dfc
Bump API schema to e2dc40b3 (#20140)
sentry-api-schema-updater[bot] faf8b61
Bump API schema to 90906f96 (#20141)
sentry-api-schema-updater[bot] a414879
feat(Explore): New Dropped Data page, new Explore feature page, updat…
sfanahata fe396af
Bump API schema to e8dba7a5 (#20144)
sentry-api-schema-updater[bot] 39f102d
Bump API schema to f3f06b3a (#20145)
sentry-api-schema-updater[bot] 1bac950
Bump API schema to 9697fe8e (#20146)
sentry-api-schema-updater[bot] 3c5e7cc
Bump API schema to 4331a7d3 (#20147)
sentry-api-schema-updater[bot] d17048d
Bump API schema to 82d40817 (#20148)
sentry-api-schema-updater[bot] 1c5b4c9
Bump API schema to 35fcbf58 (#20149)
sentry-api-schema-updater[bot] 14991c7
docs(integrations): Consolidate code mappings onto one page (#20037)
coolguyzone 0d03193
feat(docs): Apply new quick start template to JavaScript quick start …
sentry-junior[bot] 9728d2b
chore(codeowners): Use combined @getsentry/replay team (#20117)
sentry-junior[bot] 9eb3e5c
Bump API schema to 277e2b11 (#20152)
sentry-api-schema-updater[bot] a91908f
Bump API schema to 65ff00aa (#20153)
sentry-api-schema-updater[bot] 330727b
Bump API schema to c7d6eef6 (#20154)
sentry-api-schema-updater[bot] 5aa8244
Bump API schema to 56b2ed5c (#20155)
sentry-api-schema-updater[bot] a3acb51
Bump API schema to 51baedb1 (#20156)
sentry-api-schema-updater[bot] b9d1913
Bump API schema to e3ee5395 (#20157)
sentry-api-schema-updater[bot] 92406c9
build(node): Bump Node to 22.23.4 (#20150)
sentry-junior[bot] 67a59cd
docs(uptime): Document redirect limit for uptime checks (#20160)
sentry-junior[bot] 269bae7
Bump API schema to f45d69fe (#20164)
sentry-api-schema-updater[bot] 5af5ec2
Bump API schema to 79c193f9 (#20165)
sentry-api-schema-updater[bot] 57dd396
docs(crons): Add arq setup for Python (#20056)
wedamija 20fd09e
Bump API schema to 8f61c4a4 (#20166)
sentry-api-schema-updater[bot] cf9a67c
Bump API schema to c4a364de (#20167)
sentry-api-schema-updater[bot] 7beb293
docs(crons): Add Huey setup for Python (#20057)
wedamija 92ea675
Bump API schema to 2da92393 (#20168)
sentry-api-schema-updater[bot] 3a864da
Bump API schema to 6bb07ed1 (#20169)
sentry-api-schema-updater[bot] 24fdeaa
docs(crons): Add RQ setup for Python (#20058)
wedamija ddb6cbb
docs(span-links): Add `message_origin` link type for queues (#20023)
JPeer264 78378e5
docs(react-native): Document sentryWebViewProps for connecting WebVie…
antonis 3d07604
Bump API schema to 42234aff (#20173)
sentry-api-schema-updater[bot] 7df88c0
Bump API schema to da794a6f (#20174)
sentry-api-schema-updater[bot] 9865bc4
Bump API schema to 4973d6c8 (#20175)
sentry-api-schema-updater[bot] d7c8715
Bump API schema to 81f843cd (#20176)
sentry-api-schema-updater[bot] cdaff3a
Bump API schema to 969b8a53 (#20177)
sentry-api-schema-updater[bot] 1cb3e48
Bump API schema to 3a22f564 (#20178)
sentry-api-schema-updater[bot] 723b4a4
getsentry/relay@2426e71153953a9b7cf01e0bfebe3a9072c1c96e
untitaker 145be49
Bump API schema to cb84288a (#20179)
sentry-api-schema-updater[bot] 00b561c
docs(organization): Add steps for switching SaaS data storage locatio…
sentry-junior[bot] b14b568
docs(get-started): Remove duplicate resource sections (#20158)
sentry-junior[bot] fdf3c08
Bump API schema to 969e159e (#20181)
sentry-api-schema-updater[bot] 19ca335
Bump API schema to c775f862 (#20182)
sentry-api-schema-updater[bot] c05fd10
Bump API schema to f8158928 (#20183)
sentry-api-schema-updater[bot] 28742a6
Bump API schema to 786d404c (#20184)
sentry-api-schema-updater[bot] 7138fcf
Bump API schema to e07d44d7 (#20185)
sentry-api-schema-updater[bot] 4d259b8
Bump API schema to ae87efef (#20186)
sentry-api-schema-updater[bot] ba85fc7
Bump API schema to 1f67a23b (#20187)
sentry-api-schema-updater[bot] 03beb4f
Bump API schema to fa042997 (#20188)
sentry-api-schema-updater[bot] 73e4919
docs(crons): Clarify that schedules under one minute aren't supported…
sentry-junior[bot] 8754bb0
Bump API schema to 67fda936 (#20189)
sentry-api-schema-updater[bot] c96230f
Bump API schema to a1b331b4 (#20190)
sentry-api-schema-updater[bot] 7471f43
Bump API schema to c2a832ce (#20191)
sentry-api-schema-updater[bot] 8c060f8
Bump API schema to e12fef99 (#20192)
sentry-api-schema-updater[bot] effac90
feat(sidebar): Add Overview link to sections with a hidden landing pa…
sentry-junior[bot] 2544038
Bump API schema to 789d8d03 (#20194)
sentry-api-schema-updater[bot] aae0c28
Bump API schema to 33b89d82 (#20195)
sentry-api-schema-updater[bot] 374e982
docs(agents): Add Claude Platform OTLP guide and Anthropic home card …
sentry-junior[bot] 9e0a80a
feat(develop): Adjust DSC spec to be compatible with span streaming (…
Lms24 870a461
Bump API schema to c94cc7c6 (#20197)
sentry-api-schema-updater[bot] 9ba213e
Bump API schema to d9310258 (#20198)
sentry-api-schema-updater[bot] 71c7160
Bump API schema to 3675f898 (#20201)
sentry-api-schema-updater[bot] 0a05bbc
Bump API schema to c6769d68 (#20202)
sentry-api-schema-updater[bot] 4e878c4
docs(js): Clarify where the Next.js instrumentation file goes (#20125)
s1gr1d 2591ec2
docs(js): Stop adding default AI integrations in setup snippets (#20200)
sentry-junior[bot] aa30f1d
Bump API schema to 2def58c9 (#20203)
sentry-api-schema-updater[bot] d3301f3
Bump API schema to 4e68e377 (#20204)
sentry-api-schema-updater[bot] 4641e18
Bump API schema to 9bffb4bf (#20205)
sentry-api-schema-updater[bot] 301e6f7
Bump API schema to 1a275ec7 (#20206)
sentry-api-schema-updater[bot] 16e04b3
docs(product): Update stale images on Suspect Commits page (#19994)
inventarSarah 6ad4c6a
Bump API schema to b2442fb4 (#20207)
sentry-api-schema-updater[bot] e251517
Bump API schema to 3a52c312 (#20208)
sentry-api-schema-updater[bot] 07730ce
Bump API schema to d0e86507 (#20210)
sentry-api-schema-updater[bot] d35fc11
Bump API schema to d7cdfb43 (#20211)
sentry-api-schema-updater[bot] ae20156
bug(data retention): Updating account data retention (#20196)
sfanahata bd0bfa6
Bump API schema to 285756dc (#20212)
sentry-api-schema-updater[bot] 111049f
Bump API schema to 5c2854c5 (#20213)
sentry-api-schema-updater[bot] 9d363eb
Bump API schema to ca9a742d (#20215)
sentry-api-schema-updater[bot] f44900d
Bump API schema to 6d0a2152 (#20216)
sentry-api-schema-updater[bot] 145f986
Bump API schema to 0430d19e (#20219)
sentry-api-schema-updater[bot] b771435
Bump API schema to 33b92f28 (#20220)
sentry-api-schema-updater[bot] bc06b25
Bump API schema to 7b9f8d9b (#20221)
sentry-api-schema-updater[bot] b64456f
Bump API schema to 3bfc6ce3 (#20222)
sentry-api-schema-updater[bot] d6e19be
Bump API schema to 45d2f893 (#20223)
sentry-api-schema-updater[bot] d926960
Bump API schema to 1b81cbc7 (#20224)
sentry-api-schema-updater[bot] 91b8dcf
Bump API schema to 1aaa7af8 (#20230)
sentry-api-schema-updater[bot] afab021
Bump API schema to 06f4a0f2 (#20231)
sentry-api-schema-updater[bot] c56f385
feat(llms): Updated llms instructions (#20116)
sfanahata c90a74f
Bump API schema to 46e6baad (#20232)
sentry-api-schema-updater[bot] 6388344
Bump API schema to b5335bf4 (#20233)
sentry-api-schema-updater[bot] cf82b21
feat(middleware): Serve production build URLs to the evals pin header…
jaydgoss b325a6f
ci(evals): Run the AI evals on a labeled PR's docs preview (#20214)
jaydgoss f843ca1
Bump API schema to 0c5dd3da (#20238)
sentry-api-schema-updater[bot] 33a8783
Bump API schema to 09f6633f (#20239)
sentry-api-schema-updater[bot] f1e25b1
feat(docs): Apply new quick start template to Godot quick start guide…
sentry-junior[bot] 7c6bb55
Bump API schema to 28cded78 (#20241)
sentry-api-schema-updater[bot] aa7e26d
fix(ai): Replace dead agent skill links (#20123)
dingsdax 571b0b2
fix(platform-redirect): Keep the anchor when no platform is selected …
coolguyzone 764affd
Bump API schema to 916a2cd6 (#20242)
sentry-api-schema-updater[bot] c643b50
docs(python): Correct max_request_body_size small and medium cutoffs …
sentry-junior[bot] File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,257 @@ | ||
| # Runs the getsentry/sentry-for-ai-evals suites against this PR's docs. | ||
| # | ||
| # Label a PR `ai-evals:<mark>` to run the tests with that pytest mark on each target (a | ||
| # harness with a model) that repo's plan-evals action lists, or `ai-evals:<mark>:<models>` | ||
| # to run them on the targets whose `<harness>:<model>` contains `<models>`, and a last | ||
| # `:x<count>` runs each test that many times, e.g. `ai-evals:llms_txt:sonnet-5.5:x3` for | ||
| # three runs on Sonnet 5.5 of the test that starts from llms.txt with no Sentry skills or | ||
| # MCP, only the docs. The labels are in .github/labels.yml, since sync-labels.yml deletes | ||
| # any label that isn't. Each label runs with two sets of docs and the same skills, from | ||
| # sentry-for-ai's `main`: the head reads docs.sentry.io from the PR's Vercel preview and | ||
| # the base from the production deploy of the PR's merge base. The plan job creates one run | ||
| # per label and side on evals.sentry.dev, and a job per test, target and side sends that | ||
| # test's result into it, each test in a clean container and all of them at once. A new | ||
| # push reruns every eval label still on the PR. | ||
| # | ||
| # A production deploy redirects every page to docs.sentry.io unless the request has the | ||
| # x-sentry-evals-pin header that the evals' docs proxy sends (middleware.ts). Deploys built | ||
| # before middleware.ts checked for it redirect anyway, so a merge base like that, or one | ||
| # with no production deploy, gets the live docs as the base, which is master as it is when | ||
| # the runs start. A head that's behind master is then missing what master gained since, and | ||
| # the comparison counts that as the PR's. The plan job warns then, and updating the branch, | ||
| # which reruns the evals, makes the comparison show only the PR. sentry-evals[bot] comments | ||
| # on the PR with the runs. | ||
| # | ||
| # sentry-for-ai-evals is internal, so the jobs check it out with the readonly bot's token | ||
| # and use its actions from that path. Fork PRs get no secrets, so they're skipped. This | ||
| # repo is public, so the eval outputs aren't kept as artifacts; the results go to | ||
| # evals.sentry.dev. | ||
|
|
||
| name: AI Evals | ||
|
|
||
| on: | ||
| pull_request: | ||
| types: [labeled, synchronize] | ||
|
|
||
| permissions: {} | ||
|
|
||
| jobs: | ||
| plan: | ||
| if: >- | ||
| github.event.pull_request.head.repo.full_name == github.repository && ( | ||
| (github.event.action == 'labeled' && startsWith(github.event.label.name, 'ai-evals:')) || | ||
| (github.event.action == 'synchronize' && contains(join(github.event.pull_request.labels.*.name, ','), 'ai-evals:')) | ||
| ) | ||
| runs-on: ubuntu-latest | ||
| # Mostly waiting for the preview, which is ready about 7 minutes after a push. | ||
| timeout-minutes: 30 | ||
| permissions: | ||
| contents: read | ||
| deployments: read | ||
| pull-requests: read | ||
| statuses: read | ||
| outputs: | ||
| evals-sha: ${{ steps.evals.outputs.commit }} | ||
| skills-sha: ${{ steps.skills.outputs.sha }} | ||
| docs-url: ${{ steps.preview.outputs.url }} | ||
| base-docs-url: ${{ steps.base.outputs.url }} | ||
| base-sha: ${{ steps.base.outputs.sha }} | ||
| eval-runs: ${{ steps.create.outputs.runs }} | ||
| eval-jobs: ${{ steps.create.outputs.jobs }} | ||
| steps: | ||
| - name: Get sentry-for-ai-evals token | ||
| id: token | ||
| uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 | ||
| with: | ||
| client-id: ${{ vars.SENTRY_READONLY_BOT_CLIENT_ID }} | ||
| private-key: ${{ secrets.SENTRY_READONLYBOT_PRIVATE_KEY }} | ||
| repositories: sentry-for-ai-evals | ||
| permission-contents: read | ||
|
|
||
| - id: evals | ||
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| with: | ||
| repository: getsentry/sentry-for-ai-evals | ||
| token: ${{ steps.token.outputs.token }} | ||
| path: sentry-for-ai-evals | ||
| persist-credentials: false | ||
|
|
||
| - id: plan | ||
| uses: ./sentry-for-ai-evals/.github/actions/plan-evals | ||
|
|
||
| # Both sides build the skills from the same commit, so only the docs differ. | ||
| - id: skills | ||
| run: | | ||
| ref="$(git ls-remote --exit-code https://github.com/getsentry/sentry-for-ai refs/heads/main)" | ||
| echo "sha=${ref%%$'\t'*}" >> "$GITHUB_OUTPUT" | ||
|
|
||
| # vercel[bot] sets the commit status while the preview builds and creates the | ||
| # deployment, whose status has the URL, once it's done. This waits before the runs | ||
| # are created, since evals.sentry.dev fails a run that gets no result for 30 minutes. | ||
| - name: Wait for the Vercel preview | ||
| id: preview | ||
| if: steps.plan.outputs.count != '0' | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| PR_NUMBER: ${{ github.event.pull_request.number }} | ||
| HEAD_SHA: ${{ github.event.pull_request.head.sha }} | ||
| run: | | ||
| context="Vercel – sentry-docs" | ||
| environment="Preview – sentry-docs" | ||
| for (( i = 0; i < 40; i++ )); do | ||
| (( i == 0 )) || sleep 30 | ||
| # A newer push has a run of its own, so this one stops without creating runs. | ||
| current="$(gh api "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER" --jq .head.sha)" || continue | ||
| if [[ "$current" != "$HEAD_SHA" ]]; then | ||
| echo "::notice::The PR's head is now $current, which its own run evaluates" | ||
| exit 0 | ||
| fi | ||
| statuses="$(gh api "repos/$GITHUB_REPOSITORY/commits/$HEAD_SHA/status")" || continue | ||
| IFS=$'\t' read -r state description < <(jq -r --arg c "$context" \ | ||
| '.statuses[] | select(.context == $c) | [.state, .description] | @tsv' <<<"$statuses") || true | ||
| case "$state" in | ||
| failure | error) | ||
| echo "::error::The sentry-docs preview of $HEAD_SHA failed: $description" | ||
| exit 1 | ||
| ;; | ||
| success) | ||
| ids="$(gh api -X GET "repos/$GITHUB_REPOSITORY/deployments" \ | ||
| -f sha="$HEAD_SHA" -f environment="$environment" --jq '.[].id')" || continue | ||
| url="" | ||
| for id in $ids; do | ||
| url="$(gh api "repos/$GITHUB_REPOSITORY/deployments/$id/statuses" \ | ||
| --jq 'map(select(.state == "success"))[0].environment_url // empty')" || continue | ||
| [[ -n "$url" ]] && break | ||
| done | ||
| if [[ -n "$url" ]]; then | ||
| # The agent reads the .md exports, without a bypass token. | ||
| if ! curl -fsS -o /dev/null "$url/index.md"; then | ||
| echo "::error::The preview at $url doesn't serve index.md, so the agent couldn't read docs from it" | ||
| exit 1 | ||
| fi | ||
| echo "Preview: $url" | ||
| echo "url=$url" >> "$GITHUB_OUTPUT" | ||
| exit 0 | ||
| fi | ||
| # A PR that only changes develop-docs doesn't build sentry-docs. | ||
| if [[ "$description" == *"Ignored Build Step"* ]]; then | ||
| echo "::error::Vercel didn't build a sentry-docs preview of $HEAD_SHA ($description). A PR that only changes develop-docs has no sentry-docs preview to evaluate." | ||
| exit 1 | ||
| fi | ||
| ;; | ||
| esac | ||
| done | ||
| echo "::error::No sentry-docs preview of $HEAD_SHA after 20 minutes" | ||
| exit 1 | ||
|
|
||
| # The merge base's production deploy, if it serves its own pages to the pin header. | ||
| # curl doesn't follow redirects, so a deploy that redirects anyway isn't a 200. Else | ||
| # the live docs, right before the runs start so they're the ones the runs read, and | ||
| # behind_by counts the base branch's commits the head is missing. | ||
| - id: base | ||
| if: steps.preview.outputs.url != '' | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| # The branch, not base.sha, which is a snapshot from the event and can lag it. | ||
| BASE_REF: ${{ github.event.pull_request.base.ref }} | ||
| HEAD_SHA: ${{ github.event.pull_request.head.sha }} | ||
| run: | | ||
| compare="$(gh api "repos/$GITHUB_REPOSITORY/compare/$BASE_REF...$HEAD_SHA?per_page=1" \ | ||
| --jq '"\(.merge_base_commit.sha) \(.base_commit.sha) \(.behind_by)"')" | ||
| read -r merge_base base_tip behind <<<"$compare" | ||
| ids="$(gh api -X GET "repos/$GITHUB_REPOSITORY/deployments" \ | ||
| -f sha="$merge_base" -f environment="Production – sentry-docs" --jq '.[].id')" || ids="" | ||
| url="" | ||
| for id in $ids; do | ||
| url="$(gh api "repos/$GITHUB_REPOSITORY/deployments/$id/statuses" \ | ||
| --jq 'map(select(.state == "success"))[0].environment_url // empty')" || continue | ||
| [[ -n "$url" ]] && break | ||
| done | ||
| if [[ -n "$url" ]] && [[ "$(curl -sS -o /dev/null -w '%{http_code}' \ | ||
| -H 'x-sentry-evals-pin: 1' "$url/index.md")" == 200 ]]; then | ||
| echo "Base: $url, the production deploy of the merge base $merge_base" | ||
| echo "sha=$merge_base" >> "$GITHUB_OUTPUT" | ||
| echo "url=$url" >> "$GITHUB_OUTPUT" | ||
| exit 0 | ||
| fi | ||
| echo "sha=$base_tip" >> "$GITHUB_OUTPUT" | ||
| if (( behind > 0 )); then | ||
| echo "::warning::The merge base $merge_base has no production deploy that serves its own pages, so the base reads the live docs. The head is missing $behind of the base branch's commits, so the preview lacks changes the live docs have, and the comparison counts their removal as part of this PR. Update the branch to compare only this PR's changes, which reruns the evals." | ||
| fi | ||
|
|
||
| # Each run records this repo's commits, the head and the base's (the merge base or the | ||
| # base branch's tip), and evals.sentry.dev pairs base and head runs by repository, so | ||
| # they never pair with sentry-for-ai's. | ||
| - id: create | ||
| if: steps.preview.outputs.url != '' | ||
| uses: ./sentry-for-ai-evals/.github/actions/create-runs | ||
| with: | ||
| runs: ${{ steps.plan.outputs.runs }} | ||
| skills-sha: ${{ steps.skills.outputs.sha }} | ||
| base-sha: ${{ steps.base.outputs.sha }} | ||
| evals-api-key: ${{ secrets.SENTRY_EVALS_API_KEY }} | ||
|
|
||
| eval: | ||
| needs: plan | ||
| if: needs.plan.outputs.docs-url != '' && needs.plan.outputs.eval-jobs != '[]' | ||
| # By the test's number, not its name: sentry-for-ai-evals is internal, so this public | ||
| # repo's checks and logs don't name its tests. evals.sentry.dev has each test's result. | ||
| name: ${{ matrix.job.label }} (${{ matrix.job.revision }}, ${{ matrix.job.target.name }}, test ${{ matrix.job.test-index }}) | ||
| # Per PR, label, revision, target and test, so the jobs don't cancel each other. | ||
| concurrency: | ||
| group: ai-evals-${{ github.event.pull_request.number }}-${{ matrix.job.label }}-${{ matrix.job.revision }}-${{ matrix.job.target.name }}-${{ matrix.job.test-index }} | ||
| cancel-in-progress: true | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 60 | ||
| permissions: | ||
| contents: read | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| # Each test a label selects, on each target the label picked, at each side. | ||
| job: ${{ fromJSON(needs.plan.outputs.eval-jobs) }} | ||
| steps: | ||
| - name: Get sentry-for-ai-evals token | ||
| id: token | ||
| uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 | ||
| with: | ||
| client-id: ${{ vars.SENTRY_READONLY_BOT_CLIENT_ID }} | ||
| private-key: ${{ secrets.SENTRY_READONLYBOT_PRIVATE_KEY }} | ||
| repositories: sentry-for-ai-evals | ||
| permission-contents: read | ||
|
|
||
| # Side by side, so the evals don't copy sentry-for-ai into their image. | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| with: | ||
| repository: getsentry/sentry-for-ai-evals | ||
| ref: ${{ needs.plan.outputs.evals-sha }} | ||
| token: ${{ steps.token.outputs.token }} | ||
| path: sentry-for-ai-evals | ||
| persist-credentials: false | ||
|
|
||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| with: | ||
| repository: getsentry/sentry-for-ai | ||
| ref: ${{ needs.plan.outputs.skills-sha }} | ||
| path: sentry-for-ai | ||
| persist-credentials: false | ||
|
|
||
| # Sends this test's result into the run the plan job created for the label and | ||
| # side. The head reads the preview, and the base the merge base's production deploy | ||
| # when the plan job found one, or else the live docs. No artifact-name: this repo is | ||
| # public. | ||
| - uses: ./sentry-for-ai-evals/.github/actions/run-evals | ||
| with: | ||
| marker: ${{ matrix.job.marker }} | ||
| test-index: ${{ matrix.job.test-index }} | ||
| test-total: ${{ matrix.job.test-total }} | ||
| count: ${{ matrix.job.count }} | ||
| harness: ${{ matrix.job.target.harness }} | ||
| model: ${{ matrix.job.target.model }} | ||
| revision: ${{ matrix.job.revision }} | ||
| base-sha: ${{ needs.plan.outputs.base-sha }} | ||
| sentry-for-ai-path: sentry-for-ai | ||
| docs-url: ${{ matrix.job.revision == 'head' && needs.plan.outputs.docs-url || needs.plan.outputs.base-docs-url }} | ||
| run-id: ${{ fromJSON(needs.plan.outputs.eval-runs)[format('{0}-{1}', matrix.job.label, matrix.job.revision)].id }} | ||
| openrouter-api-key: ${{ secrets.AI_EVALS_OPENROUTER_API_KEY }} | ||
| evals-api-key: ${{ secrets.SENTRY_EVALS_API_KEY }} | ||
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
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
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Base evals missing live docs URL
Medium Severity
When the merge base has no pin-capable production deploy, the
basestep setsshabut never setsurl.base-docs-urlis then empty, and base-revision eval jobs pass a blankdocs-urlintorun-evals. The comments describe falling back to the live docs, but that URL is never written.Additional Locations (1)
.github/workflows/ai-evals.yml#L253-L254Reviewed by Cursor Bugbot for commit 764affd. Configure here.