Skip to content

Commit b3a077d

Browse files
authored
[PROF-13923] Upload source maps to org2 on every deployment (#4282)
Co-authored-by: thomas.bertet <thomas.bertet@datadoghq.com>
1 parent 2b72bd3 commit b3a077d

2 files changed

Lines changed: 135 additions & 4 deletions

File tree

scripts/deploy/upload-source-maps.spec.ts

Lines changed: 110 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { Datacenter } from '../lib/datacenter.ts'
55
import { mockModule, mockCommandImplementation, replaceChunkHashes, mockFetchHandlingError } from './lib/testHelpers.ts'
66

77
const FAKE_API_KEY = 'FAKE_API_KEY'
8+
const ORG2_API_KEY = 'ORG2_API_KEY'
89
const ENV_STAGING = {
910
DATADOG_API_KEY: FAKE_API_KEY,
1011
DATADOG_SITE: 'datad0g.com',
@@ -13,6 +14,10 @@ const ENV_PROD = {
1314
DATADOG_API_KEY: FAKE_API_KEY,
1415
DATADOG_SITE: 'datadoghq.com',
1516
}
17+
const ENV_ORG2_PROD = {
18+
DATADOG_API_KEY: ORG2_API_KEY,
19+
DATADOG_SITE: 'datadoghq.com',
20+
}
1621

1722
interface CommandDetail {
1823
command: string
@@ -28,7 +33,15 @@ describe('upload-source-maps', () => {
2833
let getAllDatacentersMetadata: () => Promise<Datacenter[]>
2934

3035
function getSourceMapCommands(): CommandDetail[] {
31-
return commands.filter(({ command }) => command.includes('datadog-ci sourcemaps'))
36+
return commands.filter(
37+
({ command, env }) => command.includes('datadog-ci sourcemaps') && env?.DATADOG_API_KEY === FAKE_API_KEY
38+
)
39+
}
40+
41+
function getOrg2SourceMapCommands(): CommandDetail[] {
42+
return commands.filter(
43+
({ command, env }) => command.includes('datadog-ci sourcemaps') && env?.DATADOG_API_KEY === ORG2_API_KEY
44+
)
3245
}
3346

3447
function getFileRenamingCommands(): CommandDetail[] {
@@ -43,6 +56,7 @@ describe('upload-source-maps', () => {
4356
})
4457
await mockModule(path.resolve(import.meta.dirname, '../lib/secrets.ts'), {
4558
getTelemetryOrgApiKey: () => FAKE_API_KEY,
59+
getOrg2ApiKey: () => ORG2_API_KEY,
4660
})
4761

4862
// These MUST be dynamic imports because that is the only way to ensure the
@@ -72,7 +86,9 @@ describe('upload-source-maps', () => {
7286
await uploadSourceMaps('v6', ['root'])
7387

7488
await forEachDatacenter((site) => {
75-
const commandsByDatacenter = commands.filter(({ env }) => env?.DATADOG_SITE === site)
89+
const commandsByDatacenter = commands.filter(
90+
({ env }) => env?.DATADOG_SITE === site && env?.DATADOG_API_KEY === FAKE_API_KEY
91+
)
7692
const env = { DATADOG_API_KEY: FAKE_API_KEY, DATADOG_SITE: site }
7793

7894
// rename the files with the version suffix
@@ -117,12 +133,31 @@ describe('upload-source-maps', () => {
117133
},
118134
])
119135
})
136+
137+
// upload the source maps to org2
138+
assert.deepEqual(getOrg2SourceMapCommands(), [
139+
{
140+
command:
141+
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
142+
env: ENV_ORG2_PROD,
143+
},
144+
{
145+
command:
146+
'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk',
147+
env: ENV_ORG2_PROD,
148+
},
149+
{
150+
command:
151+
'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk',
152+
env: ENV_ORG2_PROD,
153+
},
154+
])
120155
})
121156

122157
it('should upload datacenter packages source maps', async () => {
123158
await uploadSourceMaps('v6', ['us1'])
124159

125-
assert.deepEqual(commands, [
160+
assert.deepEqual(getSourceMapCommands(), [
126161
{
127162
command:
128163
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
@@ -139,6 +174,24 @@ describe('upload-source-maps', () => {
139174
env: ENV_PROD,
140175
},
141176
])
177+
178+
assert.deepEqual(getOrg2SourceMapCommands(), [
179+
{
180+
command:
181+
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net/us1/v6 --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
182+
env: ENV_ORG2_PROD,
183+
},
184+
{
185+
command:
186+
'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net/us1/v6 --project-path @datadog/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk',
187+
env: ENV_ORG2_PROD,
188+
},
189+
{
190+
command:
191+
'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net/us1/v6 --project-path @datadog/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk',
192+
env: ENV_ORG2_PROD,
193+
},
194+
])
142195
})
143196

144197
it('should upload staging packages source maps', async () => {
@@ -200,6 +253,24 @@ describe('upload-source-maps', () => {
200253
env: ENV_PROD,
201254
},
202255
])
256+
257+
assert.deepEqual(getOrg2SourceMapCommands(), [
258+
{
259+
command:
260+
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
261+
env: ENV_ORG2_PROD,
262+
},
263+
{
264+
command:
265+
'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk',
266+
env: ENV_ORG2_PROD,
267+
},
268+
{
269+
command:
270+
'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk',
271+
env: ENV_ORG2_PROD,
272+
},
273+
])
203274
})
204275

205276
it('should upload canary packages source maps', async () => {
@@ -246,6 +317,24 @@ describe('upload-source-maps', () => {
246317
env: ENV_PROD,
247318
},
248319
])
320+
321+
assert.deepEqual(getOrg2SourceMapCommands(), [
322+
{
323+
command:
324+
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
325+
env: ENV_ORG2_PROD,
326+
},
327+
{
328+
command:
329+
'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk',
330+
env: ENV_ORG2_PROD,
331+
},
332+
{
333+
command:
334+
'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk',
335+
env: ENV_ORG2_PROD,
336+
},
337+
])
249338
})
250339

251340
it('should upload versioned canary packages source maps (e.g. v7-canary)', async () => {
@@ -293,5 +382,23 @@ describe('upload-source-maps', () => {
293382
env: ENV_PROD,
294383
},
295384
])
385+
386+
assert.deepEqual(getOrg2SourceMapCommands(), [
387+
{
388+
command:
389+
'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk',
390+
env: ENV_ORG2_PROD,
391+
},
392+
{
393+
command:
394+
'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk',
395+
env: ENV_ORG2_PROD,
396+
},
397+
{
398+
command:
399+
'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix https://d20xtzwzcl0ceb.cloudfront.net --project-path @datadog/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk',
400+
env: ENV_ORG2_PROD,
401+
},
402+
])
296403
})
297404
})

scripts/deploy/upload-source-maps.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import path from 'node:path'
22
import { printLog, runMain } from '../lib/executionUtils.ts'
33
import { command } from '../lib/command.ts'
44
import { getBuildEnvValue } from '../lib/buildEnv.ts'
5-
import { getTelemetryOrgApiKey } from '../lib/secrets.ts'
5+
import { getTelemetryOrgApiKey, getOrg2ApiKey } from '../lib/secrets.ts'
66
import { getAllDatacentersMetadata, getDatacenterMetadata } from '../lib/datacenter.ts'
77
import { forEachFile } from '../lib/filesUtils.ts'
88
import { buildRootUploadPath, buildDatacenterUploadPath, buildBundleFolder, packages } from './lib/deploymentUtils.ts'
@@ -66,6 +66,7 @@ async function uploadSourceMaps(
6666
}
6767
const prefix = path.dirname(`/${uploadPath}`)
6868
uploadToDatadog(packageName, service, prefix, bundleFolder, sites)
69+
uploadToOrg2(packageName, service, prefix, bundleFolder)
6970
}
7071
}
7172

@@ -85,6 +86,29 @@ async function renameFilesWithVersionSuffix(bundleFolder: string, version: strin
8586
})
8687
}
8788

89+
const ORG2_CLOUDFRONT_BASE_URL = 'https://d20xtzwzcl0ceb.cloudfront.net'
90+
91+
function uploadToOrg2(packageName: string, service: string, prefix: string, bundleFolder: string): void {
92+
const apiKey = getOrg2ApiKey()
93+
const org2Prefix = `${ORG2_CLOUDFRONT_BASE_URL}${prefix === '/' ? '' : prefix}`
94+
95+
printLog(`Uploading ${packageName} source maps with prefix ${org2Prefix} for org2...`)
96+
97+
command`
98+
datadog-ci sourcemaps upload ${bundleFolder}
99+
--service ${service}
100+
--release-version ${getBuildEnvValue('SDK_VERSION')}
101+
--minified-path-prefix ${org2Prefix}
102+
--project-path @datadog/browser-${packageName}/
103+
--repository-url https://www.github.com/datadog/browser-sdk
104+
`
105+
.withEnvironment({
106+
DATADOG_API_KEY: apiKey,
107+
DATADOG_SITE: 'datadoghq.com',
108+
})
109+
.run()
110+
}
111+
88112
function uploadToDatadog(
89113
packageName: string,
90114
service: string,

0 commit comments

Comments
 (0)