Skip to content

Commit

Permalink
Merge pull request #11770 from getsentry/prepare-release/8.0.0-beta.4
Browse files Browse the repository at this point in the history
  • Loading branch information
lforst committed Apr 24, 2024
2 parents 7d5a375 + 25fcba0 commit d97974e
Show file tree
Hide file tree
Showing 196 changed files with 3,846 additions and 6,594 deletions.
13 changes: 10 additions & 3 deletions .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,27 @@ jobs:

# https://github.com/actions-ecosystem/action-regex-match
- uses: actions-ecosystem/action-regex-match@v2
id: version
id: version-regex
with:
# Parse version from head branch
text: ${{ github.head_ref }}
# match: preprare-release/xx.xx.xx
regex: '^prepare-release\/(\d+\.\d+\.\d+)(?:-(alpha|beta)\.\d+)?$'

- name: Extract version
id: get_version
run: |
version=${{ steps.version-regex.outputs.match }}
version=${version/'prepare-release/'/''}
echo "version=$version" >> $GITHUB_OUTPUT
- name: Prepare release
uses: getsentry/action-prepare-release@v1
if: github.event.pull_request.merged == true && steps.version.outputs.match != ''
if: github.event.pull_request.merged == true && steps.version-regex.outputs.match != '' && steps.get_version.outputs.version != ''
env:
GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }}
with:
version: ${{ steps.version.outputs.group1 }}
version: ${{ steps.get_version.outputs.version }}
force: false
merge_target: master
craft_config_from_merge_target: true
47 changes: 4 additions & 43 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -768,40 +768,6 @@ jobs:
name: playwright-traces
path: dev-packages/browser-integration-tests/test-results

job_browser_integration_tests:
name: Browser (${{ matrix.browser }}) Tests
needs: [job_get_metadata, job_build]
if: needs.job_get_metadata.outputs.changed_browser == 'true' || github.event_name != 'pull_request'
runs-on: ubuntu-20.04
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
browser:
- ChromeHeadless
- FirefoxHeadless
- WebkitHeadless
steps:
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
uses: actions/checkout@v4
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
- name: Restore caches
uses: ./.github/actions/restore-cache
env:
DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }}
- name: Run integration tests
env:
KARMA_BROWSER: ${{ matrix.browser }}
run: |
cd packages/browser
[[ $KARMA_BROWSER == WebkitHeadless ]] && yarn run playwright install-deps webkit
yarn test:integration
job_browser_build_tests:
name: Browser Build Tests
needs: [job_get_metadata, job_build]
Expand Down Expand Up @@ -942,12 +908,10 @@ jobs:
# We want to run this if:
# - The build job was successful, not skipped
# - AND if the profiling node bindings were either successful or skipped
# AND if this is not a PR from a fork or dependabot
if: |
always() && needs.job_build.result == 'success' &&
(needs.job_compile_bindings_profiling_node.result == 'success' || needs.job_compile_bindings_profiling_node.result == 'skipped') &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]'
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
needs: [job_get_metadata, job_build, job_compile_bindings_profiling_node]
runs-on: ubuntu-20.04-large-js
timeout-minutes: 15
Expand Down Expand Up @@ -1005,13 +969,11 @@ jobs:
job_e2e_tests:
name: E2E ${{ matrix.label || matrix.test-application }} Test
# We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks
# Dependabot PRs sadly also don't have access to secrets, so we skip them as well
# We need to add the `always()` check here because the previous step has this as well :(
# See: https://github.com/actions/runner/issues/2205
if:
always() && needs.job_e2e_prepare.result == 'success' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]'
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
needs: [job_get_metadata, job_build, job_e2e_prepare]
runs-on: ubuntu-20.04
timeout-minutes: 10
Expand Down Expand Up @@ -1141,14 +1103,14 @@ jobs:
job_profiling_e2e_tests:
name: E2E ${{ matrix.label || matrix.test-application }} Test
# We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks
# Dependabot PRs sadly also don't have access to secrets, so we skip them as well
# Dependabot specifically also has access to secrets
# We need to add the `always()` check here because the previous step has this as well :(
# See: https://github.com/actions/runner/issues/2205
if:
# Only run profiling e2e tests if profiling node bindings have changed
always() && needs.job_e2e_prepare.result == 'success' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]' && (
(
(needs.job_get_metadata.outputs.changed_profiling_node_bindings == 'true') ||
(needs.job_get_metadata.outputs.is_release == 'true') ||
(github.event_name != 'pull_request')
Expand Down Expand Up @@ -1240,7 +1202,6 @@ jobs:
job_nextjs_integration_test,
job_node_integration_tests,
job_browser_playwright_tests,
job_browser_integration_tests,
job_browser_loader_tests,
job_remix_integration_tests,
job_e2e_tests,
Expand Down
30 changes: 15 additions & 15 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,35 +52,28 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'feedbackIntegration'),
gzip: true,
limit: '83 KB',
limit: '87 KB',
},
{
name: '@sentry/browser (incl. Feedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration'),
gzip: true,
limit: '37 KB',
},
{
name: '@sentry/browser (incl. Feedback, Feedback Modal)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration', 'feedbackModalIntegration'),
gzip: true,
limit: '37 KB',
limit: '40 KB',
},
{
name: '@sentry/browser (incl. Feedback, Feedback Modal, Feedback Screenshot)',
name: '@sentry/browser (incl. sendFeedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration', 'feedbackModalIntegration', 'feedbackScreenshotIntegration'),
import: createImport('init', 'sendFeedback'),
gzip: true,
limit: '40 KB',
limit: '28 KB',
},
{
name: '@sentry/browser (incl. sendFeedback)',
name: '@sentry/browser (incl. FeedbackAsync)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'sendFeedback'),
import: createImport('init', 'feedbackAsyncIntegration'),
gzip: true,
limit: '30 KB',
limit: '33 KB',
},
// React SDK (ESM)
{
Expand Down Expand Up @@ -167,6 +160,13 @@ module.exports = [
brotli: false,
limit: '220 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed',
path: createCDNPath('bundle.tracing.replay.feedback.min.js'),
gzip: false,
brotli: false,
limit: '264 KB',
},
// Next.js SDK (ESM)
{
name: '@sentry/nextjs (client)',
Expand Down
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,50 @@

- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott

## 8.0.0-beta.4

### Important Changes

- **feat(browser): Add INP support for v8 (#11650)**

INP web vital support was now forward-ported to version 8. Recording of INP data is enabled by default.

- **feat(core): Increase default transport buffer size from 30 to 64 (#11764)**

The default limit of queued events to be sent was increased from 30 to 64 events. You may observe a higher memory
footprint of the SDK. You can override this limit by setting the `transportOptions.bufferSize` option in
`Sentry.init()`.

- **feat(replay): Add "maxCanvasSize" option for replay canvases (#11617)**

A `maxCanvasSize` option was added to the `replayCanvasIntegration` to disallow capturing of canvases larger than a
certain size. This value defaults to `1280` which will not capture canvases bigger than 1280x1280 pixels.

### Other Changes

- deps: Downgrade `@opentelemetry/instrumentation-http` to `0.48.0` (#11745)
- deps(nextjs): Remove unnecessary and faulty `@opentelemetry/api` dependency from Next.js package (#11717)
- feat(aws): Add OTEL based integrations (#11548)
- feat(core): Ensure trace context only includes relevant data (#11713)
- feat(deps): Bump @opentelemetry/instrumentation-fastify from 0.33.0 to 0.35.0 (#11690)
- feat(deps): Bump @opentelemetry/instrumentation-graphql from 0.37.0 to 0.39.0 (#11692)
- feat(deps): Bump @opentelemetry/instrumentation-http from 0.48.0 to 0.50.0 (#11725)
- feat(deps): Bump @opentelemetry/instrumentation-mongoose from 0.35.0 to 0.37.0 (#11693)
- feat(deps): Bump @opentelemetry/instrumentation-mysql2 from 0.35.0 to 0.37.0 (#11726)
- feat(deps): Bump @opentelemetry/instrumentation-nestjs-core from 0.34.0 to 0.36.0 (#11727)
- feat(deps): Bump @opentelemetry/sdk-metrics from 1.21.0 to 1.23.0 (#11695)
- feat(deps): Bump @prisma/instrumentation from 5.9.0 to 5.12.1 (#11724)
- feat(feedback): Create async bundles and code to resolve helper integrations (#11621)
- feat(nextjs): Sample out low-quality spans on older Next.js versions (#11722)
- feat(opentelemetry): Support new http method attribute (#11756)
- feat(opentelemetry): Use rest args for addOpenTelemetryInstrumentation (#11721)
- feat(replay): Upgrade rrweb packages to 2.15.0 (#11736)
- fix(browser): Ensure `lazyLoadIntegration` works in NPM mode (#11673)
- fix(browser): Set custom sentry source correctly (#11735)
- fix(ember): Do not create rendering spans without transaction (#11749)
- fix(serverless): Check if cloud event callback is a function (#9044) (#11701)
- ref(nextjs): Remove unnecessary logic to filter symbolification/sentry spans (#11714)

## 8.0.0-beta.3

### Important Changes
Expand Down
13 changes: 6 additions & 7 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,10 @@ The `Transaction` integration has been removed from `@sentry/integrations`. Ther
#### @sentry/serverless

`@sentry/serverless` has been removed and will no longer be published. The serverless package has been split into two
different packages, `@sentry/aws-serverless` and `@sentry/google-cloud-serverless`. These new packages have smaller
bundle size than `@sentry/serverless`, which should improve your serverless cold-start times.
different packages, `@sentry/aws-serverless` and `@sentry/google-cloud-serverless`.

`@sentry/aws-serverless` and `@sentry/google-cloud-serverless` has also been changed to only emit CJS builds. The ESM
build for the `@sentry/serverless` package was always broken and we decided to remove it entirely. ESM support will be
re-added at a later date.
The `@sentry/google-cloud-serverless` package has also been changed to only emit CJS builds because it can only
instrument CJS. ESM support will be re-added at a later date.

In `@sentry/serverless` you had to use a namespace import to initialize the SDK. This has been removed so that you can
directly import from the SDK instead.
Expand Down Expand Up @@ -875,8 +873,9 @@ Sentry.init({

#### Breaking `sentrySvelteKit()` changes

We upgraded the `@sentry/vite-plugin` which is a dependency of the SvelteKit SDK from version 0.x to 2.x. With this
change, resolving uploaded source maps should work out of the box much more often than before
We upgraded the `@sentry/vite-plugin` from version 0.x to 2.x. This package is internally used by the
`@sentry/sveltekit` SDK. With this change, resolving uploaded source maps should work out of the box much more often
than before
([more information](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/artifact-bundles/)).

To allow future upgrades of the Vite plugin without breaking stable and public APIs in `sentrySvelteKit`, we modified
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Sentry.addBreadcrumb({
category: 'auth',
message: 'testing loader',
level: 'error',
});
Sentry.captureMessage('test');
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';

sentryTest('should add breadcrumb to message', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.message).toBe('test');
expect(eventData.breadcrumbs?.length).toBe(1);
expect(eventData.breadcrumbs).toEqual([
{
category: 'auth',
level: 'error',
message: 'testing loader',
timestamp: expect.any(Number),
},
]);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Sentry.onLoad(function () {
Sentry.init({});
Sentry.addBreadcrumb({
category: 'auth',
message: 'testing loader',
level: 'error',
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Sentry.captureMessage('test');
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';

sentryTest('should add breadcrumb from onLoad callback to message', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.message).toBe('test');
expect(eventData.breadcrumbs?.length).toBe(1);
expect(eventData.breadcrumbs).toEqual([
{
category: 'auth',
level: 'error',
message: 'testing loader',
timestamp: expect.any(Number),
},
]);
});
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,12 @@ sentryTest('captureException works', async ({ getLocalTestUrl, page }) => {

expect(eventData.message).toBe('Test exception');
});

sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
});
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,20 @@ sentryTest('captureException works inside of onLoad', async ({ getLocalTestUrl,

expect(eventData.message).toBe('Test exception');
});

sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
return route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ id: 'test-id' }),
});
});

const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import * as Sentry from '@sentry/browser';

// So we can use this in subject.js
// We specifically DO NOT set this on window.Sentry as we want to test a non-CDN bundle environment,
// where window.Sentry is usually not available
window._testSentry = { ...Sentry };

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [],
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
window._testLazyLoadIntegration = async function run() {
const integration = await window._testSentry.lazyLoadIntegration('httpClientIntegration');

window._testSentry.getClient()?.addIntegration(integration());

window._integrationLoaded = true;
};

0 comments on commit d97974e

Please sign in to comment.