@expo/build-tools 1.0.266 → 1.0.268

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -58,18 +58,13 @@ async function setupAsync(ctx) {
58
58
  await (0, hooks_1.runHookIfPresent)(ctx, hooks_1.Hook.PRE_INSTALL);
59
59
  });
60
60
  await ctx.runBuildPhase(eas_build_job_1.BuildPhase.READ_EAS_JSON, async () => {
61
- const projectDir = ctx.getReactNativeProjectDirectory();
62
- const easJsonPath = path_1.default.join(projectDir, 'eas.json');
63
- if (!fs_extra_1.default.pathExistsSync(easJsonPath)) {
64
- ctx.logger.error(`eas.json does not exist in ${projectDir}.`);
65
- }
66
61
  try {
67
- const easJson = fs_extra_1.default.readJSONSync(easJsonPath);
62
+ const easJsonContents = (0, project_1.readEasJsonContents)(ctx.getReactNativeProjectDirectory());
68
63
  ctx.logger.info('Using eas.json:');
69
- ctx.logger.info(JSON.stringify(easJson, null, 2));
64
+ ctx.logger.info(easJsonContents);
70
65
  }
71
66
  catch (err) {
72
- ctx.logger.error({ err }, `Failed to parse or read eas.json.`);
67
+ ctx.logger.error({ err }, `Failed to read eas.json.`);
73
68
  }
74
69
  });
75
70
  const packageJson = await ctx.runBuildPhase(eas_build_job_1.BuildPhase.READ_PACKAGE_JSON, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/common/setup.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport { BuildJob, BuildPhase, Ios, Job, Platform } from '@expo/eas-build-job';\nimport { BuildTrigger } from '@expo/eas-build-job/dist/common';\nimport nullthrows from 'nullthrows';\nimport { ExpoConfig } from '@expo/config';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { BuildContext } from '../context';\nimport { deleteXcodeEnvLocalIfExistsAsync } from '../ios/xcodeEnv';\nimport { Hook, runHookIfPresent } from '../utils/hooks';\nimport { setUpNpmrcAsync } from '../utils/npmrc';\nimport {\n shouldUseFrozenLockfile,\n isAtLeastNpm7Async,\n getPackageVersionFromPackageJson,\n} from '../utils/packageManager';\nimport { readPackageJson } from '../utils/project';\nimport { getParentAndDescendantProcessPidsAsync } from '../utils/processes';\nimport { retryAsync } from '../utils/retry';\n\nimport { prepareProjectSourcesAsync } from './projectSources';\nimport { installDependenciesAsync, resolvePackagerDir } from './installDependencies';\nimport { resolveEnvFromBuildProfileAsync, runEasBuildInternalAsync } from './easBuildInternal';\n\nconst MAX_EXPO_DOCTOR_TIMEOUT_MS = 30 * 1000;\nconst INSTALL_DEPENDENCIES_WARN_TIMEOUT_MS = 15 * 60 * 1000;\nconst INSTALL_DEPENDENCIES_KILL_TIMEOUT_MS = 30 * 60 * 1000;\n\nclass DoctorTimeoutError extends Error {}\nclass InstallDependenciesTimeoutError extends Error {}\n\nexport async function setupAsync<TJob extends BuildJob>(ctx: BuildContext<TJob>): Promise<void> {\n await ctx.runBuildPhase(BuildPhase.PREPARE_PROJECT, async () => {\n await retryAsync(\n async () => {\n await fs.rm(ctx.buildDirectory, { recursive: true, force: true });\n await fs.mkdir(ctx.buildDirectory, { recursive: true });\n\n await prepareProjectSourcesAsync(ctx, ctx.buildDirectory);\n },\n {\n retryOptions: {\n retries: 3,\n retryIntervalMs: 1_000,\n },\n }\n );\n\n await setUpNpmrcAsync(ctx, ctx.logger);\n if (ctx.job.platform === Platform.IOS && ctx.env.EAS_BUILD_RUNNER === 'eas-build') {\n await deleteXcodeEnvLocalIfExistsAsync(ctx as BuildContext<Ios.Job>);\n }\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n // We need to setup envs from eas.json before\n // eas-build-pre-install hook is called.\n const env = await resolveEnvFromBuildProfileAsync(ctx, {\n cwd: ctx.getReactNativeProjectDirectory(),\n });\n ctx.updateEnv(env);\n }\n });\n\n await ctx.runBuildPhase(BuildPhase.PRE_INSTALL_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.PRE_INSTALL);\n });\n\n await ctx.runBuildPhase(BuildPhase.READ_EAS_JSON, async () => {\n const projectDir = ctx.getReactNativeProjectDirectory();\n const easJsonPath = path.join(projectDir, 'eas.json');\n if (!fs.pathExistsSync(easJsonPath)) {\n ctx.logger.error(`eas.json does not exist in ${projectDir}.`);\n }\n\n try {\n const easJson = fs.readJSONSync(easJsonPath);\n\n ctx.logger.info('Using eas.json:');\n ctx.logger.info(JSON.stringify(easJson, null, 2));\n } catch (err) {\n ctx.logger.error({ err }, `Failed to parse or read eas.json.`);\n }\n });\n\n const packageJson = await ctx.runBuildPhase(BuildPhase.READ_PACKAGE_JSON, async () => {\n ctx.logger.info('Using package.json:');\n const packageJson = readPackageJson(ctx.getReactNativeProjectDirectory());\n ctx.logger.info(JSON.stringify(packageJson, null, 2));\n return packageJson;\n });\n\n await ctx.runBuildPhase(BuildPhase.INSTALL_DEPENDENCIES, async () => {\n const expoVersion =\n ctx.metadata?.sdkVersion ??\n getPackageVersionFromPackageJson({\n packageJson,\n packageName: 'expo',\n });\n\n const reactNativeVersion =\n ctx.metadata?.reactNativeVersion ??\n getPackageVersionFromPackageJson({\n packageJson,\n packageName: 'react-native',\n });\n\n await runInstallDependenciesAsync(ctx, {\n useFrozenLockfile: shouldUseFrozenLockfile({\n env: ctx.env,\n sdkVersion: expoVersion,\n reactNativeVersion,\n }),\n });\n });\n\n await ctx.runBuildPhase(BuildPhase.READ_APP_CONFIG, async () => {\n const appConfig = ctx.appConfig;\n ctx.logger.info('Using app configuration:');\n ctx.logger.info(JSON.stringify(appConfig, null, 2));\n await validateAppConfigAsync(ctx, appConfig);\n });\n\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n await ctx.runBuildPhase(BuildPhase.EAS_BUILD_INTERNAL, async () => {\n if (!ctx.appConfig.ios?.bundleIdentifier && ctx.job.platform === Platform.IOS) {\n throw new Error(\n 'The \"ios.bundleIdentifier\" is required to be set in app config for builds triggered by GitHub integration. Learn more: https://docs.expo.dev/versions/latest/config/app/#bundleidentifier.'\n );\n }\n if (!ctx.appConfig.android?.package && ctx.job.platform === Platform.ANDROID) {\n throw new Error(\n 'The \"android.package\" is required to be set in app config for builds triggered by GitHub integration. Learn more: https://docs.expo.dev/versions/latest/config/app/#package.'\n );\n }\n const { newJob, newMetadata } = await runEasBuildInternalAsync({\n job: ctx.job,\n env: ctx.env,\n logger: ctx.logger,\n cwd: ctx.getReactNativeProjectDirectory(),\n projectRootOverride: ctx.env.EAS_NO_VCS ? ctx.buildDirectory : undefined,\n });\n ctx.updateJobInformation(newJob, newMetadata);\n });\n }\n\n const hasExpoPackage = !!packageJson.dependencies?.expo;\n if (!ctx.env.EAS_BUILD_DISABLE_EXPO_DOCTOR_STEP && hasExpoPackage) {\n await ctx.runBuildPhase(BuildPhase.RUN_EXPO_DOCTOR, async () => {\n try {\n await runExpoDoctor(ctx);\n } catch (err) {\n if (err instanceof DoctorTimeoutError) {\n ctx.logger.error(err.message);\n } else {\n ctx.logger.error({ err }, 'Command \"expo doctor\" failed.');\n }\n ctx.markBuildPhaseHasWarnings();\n }\n });\n }\n}\n\nasync function runExpoDoctor<TJob extends Job>(ctx: BuildContext<TJob>): Promise<SpawnResult> {\n ctx.logger.info('Running \"expo doctor\"');\n let timeout: NodeJS.Timeout | undefined;\n let timedOut = false;\n const isAtLeastNpm7 = await isAtLeastNpm7Async();\n try {\n const argsPrefix = isAtLeastNpm7 ? ['-y'] : [];\n const promise = spawn('npx', [...argsPrefix, 'expo-doctor'], {\n cwd: ctx.getReactNativeProjectDirectory(),\n logger: ctx.logger,\n env: ctx.env,\n });\n timeout = setTimeout(async () => {\n timedOut = true;\n const ppid = nullthrows(promise.child.pid);\n const pids = await getParentAndDescendantProcessPidsAsync(ppid);\n pids.forEach((pid) => {\n process.kill(pid);\n });\n ctx.reportError?.(`\"expo doctor\" timed out`, undefined, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n }, MAX_EXPO_DOCTOR_TIMEOUT_MS);\n return await promise;\n } catch (err: any) {\n if (timedOut) {\n throw new DoctorTimeoutError('\"expo doctor\" timed out, skipping...');\n }\n throw err;\n } finally {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n}\n\nasync function runInstallDependenciesAsync<TJob extends Job>(\n ctx: BuildContext<TJob>,\n {\n useFrozenLockfile,\n }: {\n useFrozenLockfile: boolean;\n }\n): Promise<void> {\n let warnTimeout: NodeJS.Timeout | undefined;\n let killTimeout: NodeJS.Timeout | undefined;\n let killTimedOut: boolean = false;\n try {\n const installDependenciesSpawnPromise = (\n await installDependenciesAsync({\n packageManager: ctx.packageManager,\n env: ctx.env,\n logger: ctx.logger,\n infoCallbackFn: () => {\n if (warnTimeout) {\n warnTimeout.refresh();\n }\n if (killTimeout) {\n killTimeout.refresh();\n }\n },\n cwd: resolvePackagerDir(ctx),\n useFrozenLockfile,\n })\n ).spawnPromise;\n\n warnTimeout = setTimeout(() => {\n ctx.logger.warn(\n '\"Install dependencies\" phase takes longer then expected and it did not produce any logs in the past 15 minutes. Consider evaluating your package.json file for possible issues with dependencies'\n );\n }, INSTALL_DEPENDENCIES_WARN_TIMEOUT_MS);\n\n killTimeout = setTimeout(async () => {\n killTimedOut = true;\n ctx.logger.error(\n '\"Install dependencies\" phase takes a very long time and it did not produce any logs in the past 30 minutes. Most likely an unexpected error happened with your dependencies which caused the process to hang and it will be terminated'\n );\n const ppid = nullthrows(installDependenciesSpawnPromise.child.pid);\n const pids = await getParentAndDescendantProcessPidsAsync(ppid);\n pids.forEach((pid) => {\n process.kill(pid);\n });\n ctx.reportError?.('\"Install dependencies\" phase takes a very long time', undefined, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n }, INSTALL_DEPENDENCIES_KILL_TIMEOUT_MS);\n\n await installDependenciesSpawnPromise;\n } catch (err: any) {\n if (killTimedOut) {\n throw new InstallDependenciesTimeoutError(\n '\"Install dependencies\" phase was inactive for over 30 minutes. Please evaluate your package.json file'\n );\n }\n throw err;\n } finally {\n if (warnTimeout) {\n clearTimeout(warnTimeout);\n }\n if (killTimeout) {\n clearTimeout(killTimeout);\n }\n }\n}\n\nasync function validateAppConfigAsync(\n ctx: BuildContext<Job>,\n appConfig: ExpoConfig\n): Promise<void> {\n if (\n appConfig?.extra?.eas?.projectId &&\n ctx.env.EAS_BUILD_PROJECT_ID &&\n appConfig.extra.eas.projectId !== ctx.env.EAS_BUILD_PROJECT_ID\n ) {\n const isUsingDynamicConfig =\n (await fs.pathExists(path.join(ctx.getReactNativeProjectDirectory(), 'app.config.ts'))) ||\n (await fs.pathExists(path.join(ctx.getReactNativeProjectDirectory(), 'app.config.js')));\n const isGitHubBuild = ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION;\n let extraMessage = '';\n if (isGitHubBuild && isUsingDynamicConfig) {\n extraMessage =\n 'Make sure you connected your GitHub repository to the correct Expo project and if you are using environment variables to switch between projects in app.config.js/app.config.ts remember to set those variables in eas.json too. ';\n } else if (isGitHubBuild) {\n extraMessage = 'Make sure you connected your GitHub repository to the correct Expo project. ';\n } else if (isUsingDynamicConfig) {\n extraMessage =\n 'If you are using environment variables to switch between projects in app.config.js/app.config.ts, make sure those variables are also set inside EAS Build. You can do that using \"env\" field in eas.json or EAS environment variables. ';\n }\n throw new UserFacingError(\n 'EAS_BUILD_PROJECT_ID_MISMATCH',\n `The value of the \"extra.eas.projectId\" field (${appConfig.extra.eas.projectId}) in the app config does not match the current project id (${ctx.env.EAS_BUILD_PROJECT_ID}). ${extraMessage}Learn more: https://expo.fyi/eas-config-mismatch.`\n );\n } else if (ctx.env.EAS_BUILD_PROJECT_ID && !appConfig?.extra?.eas?.projectId) {\n ctx.logger.error(`The \"extra.eas.projectId\" field is missing from your app config.`);\n ctx.markBuildPhaseHasWarnings();\n }\n}\n"]}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/common/setup.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport { BuildJob, BuildPhase, Ios, Job, Platform } from '@expo/eas-build-job';\nimport { BuildTrigger } from '@expo/eas-build-job/dist/common';\nimport nullthrows from 'nullthrows';\nimport { ExpoConfig } from '@expo/config';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { BuildContext } from '../context';\nimport { deleteXcodeEnvLocalIfExistsAsync } from '../ios/xcodeEnv';\nimport { Hook, runHookIfPresent } from '../utils/hooks';\nimport { setUpNpmrcAsync } from '../utils/npmrc';\nimport {\n shouldUseFrozenLockfile,\n isAtLeastNpm7Async,\n getPackageVersionFromPackageJson,\n} from '../utils/packageManager';\nimport { readEasJsonContents, readPackageJson } from '../utils/project';\nimport { getParentAndDescendantProcessPidsAsync } from '../utils/processes';\nimport { retryAsync } from '../utils/retry';\n\nimport { prepareProjectSourcesAsync } from './projectSources';\nimport { installDependenciesAsync, resolvePackagerDir } from './installDependencies';\nimport { resolveEnvFromBuildProfileAsync, runEasBuildInternalAsync } from './easBuildInternal';\n\nconst MAX_EXPO_DOCTOR_TIMEOUT_MS = 30 * 1000;\nconst INSTALL_DEPENDENCIES_WARN_TIMEOUT_MS = 15 * 60 * 1000;\nconst INSTALL_DEPENDENCIES_KILL_TIMEOUT_MS = 30 * 60 * 1000;\n\nclass DoctorTimeoutError extends Error {}\nclass InstallDependenciesTimeoutError extends Error {}\n\nexport async function setupAsync<TJob extends BuildJob>(ctx: BuildContext<TJob>): Promise<void> {\n await ctx.runBuildPhase(BuildPhase.PREPARE_PROJECT, async () => {\n await retryAsync(\n async () => {\n await fs.rm(ctx.buildDirectory, { recursive: true, force: true });\n await fs.mkdir(ctx.buildDirectory, { recursive: true });\n\n await prepareProjectSourcesAsync(ctx, ctx.buildDirectory);\n },\n {\n retryOptions: {\n retries: 3,\n retryIntervalMs: 1_000,\n },\n }\n );\n\n await setUpNpmrcAsync(ctx, ctx.logger);\n if (ctx.job.platform === Platform.IOS && ctx.env.EAS_BUILD_RUNNER === 'eas-build') {\n await deleteXcodeEnvLocalIfExistsAsync(ctx as BuildContext<Ios.Job>);\n }\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n // We need to setup envs from eas.json before\n // eas-build-pre-install hook is called.\n const env = await resolveEnvFromBuildProfileAsync(ctx, {\n cwd: ctx.getReactNativeProjectDirectory(),\n });\n ctx.updateEnv(env);\n }\n });\n\n await ctx.runBuildPhase(BuildPhase.PRE_INSTALL_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.PRE_INSTALL);\n });\n\n await ctx.runBuildPhase(BuildPhase.READ_EAS_JSON, async () => {\n try {\n const easJsonContents = readEasJsonContents(ctx.getReactNativeProjectDirectory());\n ctx.logger.info('Using eas.json:');\n ctx.logger.info(easJsonContents);\n } catch (err) {\n ctx.logger.error({ err }, `Failed to read eas.json.`);\n }\n });\n\n const packageJson = await ctx.runBuildPhase(BuildPhase.READ_PACKAGE_JSON, async () => {\n ctx.logger.info('Using package.json:');\n const packageJson = readPackageJson(ctx.getReactNativeProjectDirectory());\n ctx.logger.info(JSON.stringify(packageJson, null, 2));\n return packageJson;\n });\n\n await ctx.runBuildPhase(BuildPhase.INSTALL_DEPENDENCIES, async () => {\n const expoVersion =\n ctx.metadata?.sdkVersion ??\n getPackageVersionFromPackageJson({\n packageJson,\n packageName: 'expo',\n });\n\n const reactNativeVersion =\n ctx.metadata?.reactNativeVersion ??\n getPackageVersionFromPackageJson({\n packageJson,\n packageName: 'react-native',\n });\n\n await runInstallDependenciesAsync(ctx, {\n useFrozenLockfile: shouldUseFrozenLockfile({\n env: ctx.env,\n sdkVersion: expoVersion,\n reactNativeVersion,\n }),\n });\n });\n\n await ctx.runBuildPhase(BuildPhase.READ_APP_CONFIG, async () => {\n const appConfig = ctx.appConfig;\n ctx.logger.info('Using app configuration:');\n ctx.logger.info(JSON.stringify(appConfig, null, 2));\n await validateAppConfigAsync(ctx, appConfig);\n });\n\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n await ctx.runBuildPhase(BuildPhase.EAS_BUILD_INTERNAL, async () => {\n if (!ctx.appConfig.ios?.bundleIdentifier && ctx.job.platform === Platform.IOS) {\n throw new Error(\n 'The \"ios.bundleIdentifier\" is required to be set in app config for builds triggered by GitHub integration. Learn more: https://docs.expo.dev/versions/latest/config/app/#bundleidentifier.'\n );\n }\n if (!ctx.appConfig.android?.package && ctx.job.platform === Platform.ANDROID) {\n throw new Error(\n 'The \"android.package\" is required to be set in app config for builds triggered by GitHub integration. Learn more: https://docs.expo.dev/versions/latest/config/app/#package.'\n );\n }\n const { newJob, newMetadata } = await runEasBuildInternalAsync({\n job: ctx.job,\n env: ctx.env,\n logger: ctx.logger,\n cwd: ctx.getReactNativeProjectDirectory(),\n projectRootOverride: ctx.env.EAS_NO_VCS ? ctx.buildDirectory : undefined,\n });\n ctx.updateJobInformation(newJob, newMetadata);\n });\n }\n\n const hasExpoPackage = !!packageJson.dependencies?.expo;\n if (!ctx.env.EAS_BUILD_DISABLE_EXPO_DOCTOR_STEP && hasExpoPackage) {\n await ctx.runBuildPhase(BuildPhase.RUN_EXPO_DOCTOR, async () => {\n try {\n await runExpoDoctor(ctx);\n } catch (err) {\n if (err instanceof DoctorTimeoutError) {\n ctx.logger.error(err.message);\n } else {\n ctx.logger.error({ err }, 'Command \"expo doctor\" failed.');\n }\n ctx.markBuildPhaseHasWarnings();\n }\n });\n }\n}\n\nasync function runExpoDoctor<TJob extends Job>(ctx: BuildContext<TJob>): Promise<SpawnResult> {\n ctx.logger.info('Running \"expo doctor\"');\n let timeout: NodeJS.Timeout | undefined;\n let timedOut = false;\n const isAtLeastNpm7 = await isAtLeastNpm7Async();\n try {\n const argsPrefix = isAtLeastNpm7 ? ['-y'] : [];\n const promise = spawn('npx', [...argsPrefix, 'expo-doctor'], {\n cwd: ctx.getReactNativeProjectDirectory(),\n logger: ctx.logger,\n env: ctx.env,\n });\n timeout = setTimeout(async () => {\n timedOut = true;\n const ppid = nullthrows(promise.child.pid);\n const pids = await getParentAndDescendantProcessPidsAsync(ppid);\n pids.forEach((pid) => {\n process.kill(pid);\n });\n ctx.reportError?.(`\"expo doctor\" timed out`, undefined, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n }, MAX_EXPO_DOCTOR_TIMEOUT_MS);\n return await promise;\n } catch (err: any) {\n if (timedOut) {\n throw new DoctorTimeoutError('\"expo doctor\" timed out, skipping...');\n }\n throw err;\n } finally {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n}\n\nasync function runInstallDependenciesAsync<TJob extends Job>(\n ctx: BuildContext<TJob>,\n {\n useFrozenLockfile,\n }: {\n useFrozenLockfile: boolean;\n }\n): Promise<void> {\n let warnTimeout: NodeJS.Timeout | undefined;\n let killTimeout: NodeJS.Timeout | undefined;\n let killTimedOut: boolean = false;\n try {\n const installDependenciesSpawnPromise = (\n await installDependenciesAsync({\n packageManager: ctx.packageManager,\n env: ctx.env,\n logger: ctx.logger,\n infoCallbackFn: () => {\n if (warnTimeout) {\n warnTimeout.refresh();\n }\n if (killTimeout) {\n killTimeout.refresh();\n }\n },\n cwd: resolvePackagerDir(ctx),\n useFrozenLockfile,\n })\n ).spawnPromise;\n\n warnTimeout = setTimeout(() => {\n ctx.logger.warn(\n '\"Install dependencies\" phase takes longer then expected and it did not produce any logs in the past 15 minutes. Consider evaluating your package.json file for possible issues with dependencies'\n );\n }, INSTALL_DEPENDENCIES_WARN_TIMEOUT_MS);\n\n killTimeout = setTimeout(async () => {\n killTimedOut = true;\n ctx.logger.error(\n '\"Install dependencies\" phase takes a very long time and it did not produce any logs in the past 30 minutes. Most likely an unexpected error happened with your dependencies which caused the process to hang and it will be terminated'\n );\n const ppid = nullthrows(installDependenciesSpawnPromise.child.pid);\n const pids = await getParentAndDescendantProcessPidsAsync(ppid);\n pids.forEach((pid) => {\n process.kill(pid);\n });\n ctx.reportError?.('\"Install dependencies\" phase takes a very long time', undefined, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n }, INSTALL_DEPENDENCIES_KILL_TIMEOUT_MS);\n\n await installDependenciesSpawnPromise;\n } catch (err: any) {\n if (killTimedOut) {\n throw new InstallDependenciesTimeoutError(\n '\"Install dependencies\" phase was inactive for over 30 minutes. Please evaluate your package.json file'\n );\n }\n throw err;\n } finally {\n if (warnTimeout) {\n clearTimeout(warnTimeout);\n }\n if (killTimeout) {\n clearTimeout(killTimeout);\n }\n }\n}\n\nasync function validateAppConfigAsync(\n ctx: BuildContext<Job>,\n appConfig: ExpoConfig\n): Promise<void> {\n if (\n appConfig?.extra?.eas?.projectId &&\n ctx.env.EAS_BUILD_PROJECT_ID &&\n appConfig.extra.eas.projectId !== ctx.env.EAS_BUILD_PROJECT_ID\n ) {\n const isUsingDynamicConfig =\n (await fs.pathExists(path.join(ctx.getReactNativeProjectDirectory(), 'app.config.ts'))) ||\n (await fs.pathExists(path.join(ctx.getReactNativeProjectDirectory(), 'app.config.js')));\n const isGitHubBuild = ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION;\n let extraMessage = '';\n if (isGitHubBuild && isUsingDynamicConfig) {\n extraMessage =\n 'Make sure you connected your GitHub repository to the correct Expo project and if you are using environment variables to switch between projects in app.config.js/app.config.ts remember to set those variables in eas.json too. ';\n } else if (isGitHubBuild) {\n extraMessage = 'Make sure you connected your GitHub repository to the correct Expo project. ';\n } else if (isUsingDynamicConfig) {\n extraMessage =\n 'If you are using environment variables to switch between projects in app.config.js/app.config.ts, make sure those variables are also set inside EAS Build. You can do that using \"env\" field in eas.json or EAS environment variables. ';\n }\n throw new UserFacingError(\n 'EAS_BUILD_PROJECT_ID_MISMATCH',\n `The value of the \"extra.eas.projectId\" field (${appConfig.extra.eas.projectId}) in the app config does not match the current project id (${ctx.env.EAS_BUILD_PROJECT_ID}). ${extraMessage}Learn more: https://expo.fyi/eas-config-mismatch.`\n );\n } else if (ctx.env.EAS_BUILD_PROJECT_ID && !appConfig?.extra?.eas?.projectId) {\n ctx.logger.error(`The \"extra.eas.projectId\" field is missing from your app config.`);\n ctx.markBuildPhaseHasWarnings();\n }\n}\n"]}
@@ -15,6 +15,10 @@ export declare class CustomBuildContext<TJob extends Job = Job> implements Exter
15
15
  readonly projectTargetDirectory: string;
16
16
  readonly defaultWorkingDirectory: string;
17
17
  readonly buildLogsDirectory: string;
18
+ /**
19
+ * Time of the start of the build.
20
+ */
21
+ readonly startTime: Date;
18
22
  readonly logger: bunyan;
19
23
  readonly runtimeApi: BuilderRuntimeApi;
20
24
  job: TJob;
@@ -25,6 +25,7 @@ class CustomBuildContext {
25
25
  this.runtimeApi = {
26
26
  uploadArtifact: (...args) => buildCtx['uploadArtifact'](...args),
27
27
  };
28
+ this.startTime = new Date();
28
29
  }
29
30
  hasBuildJob() {
30
31
  return Boolean(this.job.platform);
@@ -1 +1 @@
1
- {"version":3,"file":"customBuildContext.js","sourceRoot":"","sources":["../src/customBuildContext.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport {\n BuildJob,\n BuildPhase,\n BuildTrigger,\n Env,\n Job,\n Metadata,\n Platform,\n StaticJobInterpolationContext,\n} from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { ExternalBuildContextProvider, BuildRuntimePlatform } from '@expo/steps';\n\nimport { ArtifactToUpload, BuildContext } from './context';\n\nconst platformToBuildRuntimePlatform: Record<Platform, BuildRuntimePlatform> = {\n [Platform.ANDROID]: BuildRuntimePlatform.LINUX,\n [Platform.IOS]: BuildRuntimePlatform.DARWIN,\n};\n\nexport interface BuilderRuntimeApi {\n uploadArtifact: (spec: { artifact: ArtifactToUpload; logger: bunyan }) => Promise<{\n artifactId: string | null;\n }>;\n}\n\nexport class CustomBuildContext<TJob extends Job = Job> implements ExternalBuildContextProvider {\n /*\n * Directory that contains project sources before eas/checkout.\n */\n public readonly projectSourceDirectory: string;\n\n /*\n * Directory where build is executed. eas/checkout will copy sources here.\n */\n public readonly projectTargetDirectory: string;\n\n /*\n * Directory where all build steps will be executed unless configured otherwise.\n */\n public readonly defaultWorkingDirectory: string;\n\n /*\n * Directory where build logs will be stored unless configure otherwise.\n */\n public readonly buildLogsDirectory: string;\n\n public readonly logger: bunyan;\n public readonly runtimeApi: BuilderRuntimeApi;\n public job: TJob;\n public metadata?: Metadata;\n\n private _env: Env;\n\n constructor(buildCtx: BuildContext<TJob>) {\n this._env = buildCtx.env;\n this.job = buildCtx.job;\n this.metadata = buildCtx.metadata;\n\n this.logger = buildCtx.logger.child({ phase: BuildPhase.CUSTOM });\n this.projectSourceDirectory = path.join(buildCtx.workingdir, 'temporary-custom-build');\n this.projectTargetDirectory = path.join(buildCtx.workingdir, 'build');\n this.defaultWorkingDirectory = buildCtx.getReactNativeProjectDirectory();\n this.buildLogsDirectory = path.join(buildCtx.workingdir, 'logs');\n this.runtimeApi = {\n uploadArtifact: (...args) => buildCtx['uploadArtifact'](...args),\n };\n }\n\n public hasBuildJob(): this is CustomBuildContext<BuildJob> {\n return Boolean(this.job.platform);\n }\n\n public get runtimePlatform(): BuildRuntimePlatform {\n // Generic jobs are not per-platform.\n if (!this.job.platform) {\n assert(\n process.platform === 'linux' || process.platform === 'darwin',\n `Invalid platform, expected linux or darwin, got: ${process.platform}`\n );\n return {\n linux: BuildRuntimePlatform.LINUX,\n darwin: BuildRuntimePlatform.DARWIN,\n }[process.platform];\n }\n\n return platformToBuildRuntimePlatform[this.job.platform];\n }\n\n public get env(): Env {\n return this._env;\n }\n\n // We omit steps, because CustomBuildContext does not have steps.\n public staticContext(): Omit<StaticJobInterpolationContext, 'steps'> {\n return {\n ...this.job.workflowInterpolationContext,\n expoApiServerURL: this.env.__API_SERVER_URL,\n job: this.job,\n metadata: this.metadata ?? null,\n };\n }\n\n public updateEnv(env: Env): void {\n this._env = env;\n }\n\n public updateJobInformation(job: TJob, metadata: Metadata): void {\n if (this.job.triggeredBy !== BuildTrigger.GIT_BASED_INTEGRATION) {\n throw new Error(\n 'Updating job information is only allowed when build was triggered by a git-based integration.'\n );\n }\n this.job = {\n ...this.job,\n ...job,\n workflowInterpolationContext:\n job.workflowInterpolationContext ?? this.job.workflowInterpolationContext,\n triggeredBy: this.job.triggeredBy,\n secrets: {\n ...this.job.secrets,\n ...job.secrets,\n robotAccessToken: job.secrets?.robotAccessToken ?? this.job.secrets?.robotAccessToken,\n environmentSecrets: [\n // Latter secrets override former ones.\n ...(this.job.secrets?.environmentSecrets ?? []),\n ...(job.secrets?.environmentSecrets ?? []),\n ],\n },\n ...(this.job.platform ? { expoBuildUrl: this.job.expoBuildUrl } : null),\n };\n this.metadata = metadata;\n }\n}\n"]}
1
+ {"version":3,"file":"customBuildContext.js","sourceRoot":"","sources":["../src/customBuildContext.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport {\n BuildJob,\n BuildPhase,\n BuildTrigger,\n Env,\n Job,\n Metadata,\n Platform,\n StaticJobInterpolationContext,\n} from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { ExternalBuildContextProvider, BuildRuntimePlatform } from '@expo/steps';\n\nimport { ArtifactToUpload, BuildContext } from './context';\n\nconst platformToBuildRuntimePlatform: Record<Platform, BuildRuntimePlatform> = {\n [Platform.ANDROID]: BuildRuntimePlatform.LINUX,\n [Platform.IOS]: BuildRuntimePlatform.DARWIN,\n};\n\nexport interface BuilderRuntimeApi {\n uploadArtifact: (spec: { artifact: ArtifactToUpload; logger: bunyan }) => Promise<{\n artifactId: string | null;\n }>;\n}\n\nexport class CustomBuildContext<TJob extends Job = Job> implements ExternalBuildContextProvider {\n /*\n * Directory that contains project sources before eas/checkout.\n */\n public readonly projectSourceDirectory: string;\n\n /*\n * Directory where build is executed. eas/checkout will copy sources here.\n */\n public readonly projectTargetDirectory: string;\n\n /*\n * Directory where all build steps will be executed unless configured otherwise.\n */\n public readonly defaultWorkingDirectory: string;\n\n /*\n * Directory where build logs will be stored unless configure otherwise.\n */\n public readonly buildLogsDirectory: string;\n\n /**\n * Time of the start of the build.\n */\n public readonly startTime: Date;\n\n public readonly logger: bunyan;\n public readonly runtimeApi: BuilderRuntimeApi;\n public job: TJob;\n public metadata?: Metadata;\n\n private _env: Env;\n\n constructor(buildCtx: BuildContext<TJob>) {\n this._env = buildCtx.env;\n this.job = buildCtx.job;\n this.metadata = buildCtx.metadata;\n\n this.logger = buildCtx.logger.child({ phase: BuildPhase.CUSTOM });\n this.projectSourceDirectory = path.join(buildCtx.workingdir, 'temporary-custom-build');\n this.projectTargetDirectory = path.join(buildCtx.workingdir, 'build');\n this.defaultWorkingDirectory = buildCtx.getReactNativeProjectDirectory();\n this.buildLogsDirectory = path.join(buildCtx.workingdir, 'logs');\n this.runtimeApi = {\n uploadArtifact: (...args) => buildCtx['uploadArtifact'](...args),\n };\n this.startTime = new Date();\n }\n\n public hasBuildJob(): this is CustomBuildContext<BuildJob> {\n return Boolean(this.job.platform);\n }\n\n public get runtimePlatform(): BuildRuntimePlatform {\n // Generic jobs are not per-platform.\n if (!this.job.platform) {\n assert(\n process.platform === 'linux' || process.platform === 'darwin',\n `Invalid platform, expected linux or darwin, got: ${process.platform}`\n );\n return {\n linux: BuildRuntimePlatform.LINUX,\n darwin: BuildRuntimePlatform.DARWIN,\n }[process.platform];\n }\n\n return platformToBuildRuntimePlatform[this.job.platform];\n }\n\n public get env(): Env {\n return this._env;\n }\n\n // We omit steps, because CustomBuildContext does not have steps.\n public staticContext(): Omit<StaticJobInterpolationContext, 'steps'> {\n return {\n ...this.job.workflowInterpolationContext,\n expoApiServerURL: this.env.__API_SERVER_URL,\n job: this.job,\n metadata: this.metadata ?? null,\n };\n }\n\n public updateEnv(env: Env): void {\n this._env = env;\n }\n\n public updateJobInformation(job: TJob, metadata: Metadata): void {\n if (this.job.triggeredBy !== BuildTrigger.GIT_BASED_INTEGRATION) {\n throw new Error(\n 'Updating job information is only allowed when build was triggered by a git-based integration.'\n );\n }\n this.job = {\n ...this.job,\n ...job,\n workflowInterpolationContext:\n job.workflowInterpolationContext ?? this.job.workflowInterpolationContext,\n triggeredBy: this.job.triggeredBy,\n secrets: {\n ...this.job.secrets,\n ...job.secrets,\n robotAccessToken: job.secrets?.robotAccessToken ?? this.job.secrets?.robotAccessToken,\n environmentSecrets: [\n // Latter secrets override former ones.\n ...(this.job.secrets?.environmentSecrets ?? []),\n ...(job.secrets?.environmentSecrets ?? []),\n ],\n },\n ...(this.job.platform ? { expoBuildUrl: this.job.expoBuildUrl } : null),\n };\n this.metadata = metadata;\n }\n}\n"]}
@@ -32,6 +32,8 @@ const downloadArtifact_1 = require("./functions/downloadArtifact");
32
32
  const restoreCache_1 = require("./functions/restoreCache");
33
33
  const saveCache_1 = require("./functions/saveCache");
34
34
  const internalMaestroTest_1 = require("./functions/internalMaestroTest");
35
+ const saveBuildCache_1 = require("./functions/saveBuildCache");
36
+ const restoreBuildCache_1 = require("./functions/restoreBuildCache");
35
37
  function getEasFunctions(ctx) {
36
38
  const functions = [
37
39
  (0, checkout_1.createCheckoutBuildFunction)(),
@@ -43,7 +45,10 @@ function getEasFunctions(ctx) {
43
45
  (0, downloadBuild_1.createDownloadBuildFunction)(),
44
46
  (0, repack_1.createRepackBuildFunction)(),
45
47
  (0, restoreCache_1.createRestoreCacheFunction)(),
48
+ (0, restoreBuildCache_1.createRestoreBuildCacheFunction)(),
46
49
  (0, saveCache_1.createSaveCacheFunction)(),
50
+ (0, saveBuildCache_1.createSaveBuildCacheFunction)(ctx.startTime),
51
+ (0, restoreBuildCache_1.createCacheStatsBuildFunction)(),
47
52
  (0, configureEASUpdateIfInstalled_1.configureEASUpdateIfInstalledFunction)(),
48
53
  (0, injectAndroidCredentials_1.injectAndroidCredentialsFunction)(),
49
54
  (0, configureAndroidVersion_1.configureAndroidVersionFunction)(),
@@ -1 +1 @@
1
- {"version":3,"file":"easFunctions.js","sourceRoot":"","sources":["../../src/steps/easFunctions.ts"],"names":[],"mappings":";;AAoCA,0CAiDC;AAjFD,+DAA+E;AAC/E,mDAAmE;AACnE,yDAAwE;AACxE,uEAAuF;AACvF,mDAAmE;AACnE,yFAAyG;AACzG,6FAAkG;AAClG,mFAAwF;AACxF,iFAAsF;AACtF,qDAA0D;AAC1D,qGAA0G;AAC1G,iFAAsF;AACtF,yEAA8E;AAC9E,yFAA8F;AAC9F,yDAA8D;AAC9D,2EAA2F;AAC3F,qEAAqF;AACrF,+DAA+E;AAC/E,uIAA0I;AAC1I,yDAAyE;AACzE,mEAA8E;AAC9E,uEAAuF;AACvF,mGAAwG;AACxG,yDAAmE;AACnE,+EAAoF;AACpF,6DAAwE;AACxE,+CAA+D;AAC/D,mEAA8E;AAC9E,2DAAsE;AACtE,qDAAgE;AAChE,yEAAuF;AAEvF,SAAgB,eAAe,CAAC,GAAuB;IACrD,MAAM,SAAS,GAAG;QAChB,IAAA,sCAA2B,GAAE;QAC7B,IAAA,iDAA8B,GAAE;QAChC,IAAA,kDAAiC,EAAC,GAAG,CAAC;QACtC,IAAA,2CAA6B,GAAE;QAC/B,IAAA,0DAAqC,GAAE;QACvC,IAAA,sCAA2B,GAAE;QAC7B,IAAA,2CAA2B,GAAE;QAC7B,IAAA,kCAAyB,GAAE;QAE3B,IAAA,yCAA0B,GAAE;QAC5B,IAAA,mCAAuB,GAAE;QAEzB,IAAA,qEAAqC,GAAE;QACvC,IAAA,2DAAgC,GAAE;QAClC,IAAA,yDAA+B,GAAE;QACjC,IAAA,sCAAwB,GAAE;QAC1B,IAAA,6BAAiB,GAAE;QACnB,IAAA,6EAAyC,GAAE;QAC3C,IAAA,yDAA+B,GAAE;QACjC,IAAA,iDAA2B,GAAE;QAC7B,IAAA,iEAAmC,GAAE;QACrC,IAAA,iCAAmB,GAAE;QACrB,IAAA,8DAAuC,GAAE;QACzC,IAAA,wDAAoC,GAAE;QACtC,IAAA,kDAAiC,GAAE;QAEnC,IAAA,4CAA8B,GAAE;QAChC,IAAA,iDAA8B,GAAE;QAEhC,IAAA,2EAAwC,GAAE;QAE1C,IAAA,uDAA8B,GAAE;QAEhC,IAAA,0DAAoC,EAAC,GAAG,CAAC;KAC1C,CAAC;IAEF,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,GAAG;YACD,IAAA,4EAA8C,EAAC,GAAG,CAAC;YACnD,IAAA,0DAAqC,EAAC,GAAG,CAAC;YAC1C,IAAA,6GAAwD,EAAC,GAAG,CAAC;SAC9D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { BuildFunction } from '@expo/steps';\n\nimport { CustomBuildContext } from '../customBuildContext';\n\nimport { createUploadArtifactBuildFunction } from './functions/uploadArtifact';\nimport { createCheckoutBuildFunction } from './functions/checkout';\nimport { createSetUpNpmrcBuildFunction } from './functions/useNpmToken';\nimport { createInstallNodeModulesBuildFunction } from './functions/installNodeModules';\nimport { createPrebuildBuildFunction } from './functions/prebuild';\nimport { createFindAndUploadBuildArtifactsBuildFunction } from './functions/findAndUploadBuildArtifacts';\nimport { configureEASUpdateIfInstalledFunction } from './functions/configureEASUpdateIfInstalled';\nimport { injectAndroidCredentialsFunction } from './functions/injectAndroidCredentials';\nimport { configureAndroidVersionFunction } from './functions/configureAndroidVersion';\nimport { runGradleFunction } from './functions/runGradle';\nimport { resolveAppleTeamIdFromCredentialsFunction } from './functions/resolveAppleTeamIdFromCredentials';\nimport { configureIosCredentialsFunction } from './functions/configureIosCredentials';\nimport { configureIosVersionFunction } from './functions/configureIosVersion';\nimport { generateGymfileFromTemplateFunction } from './functions/generateGymfileFromTemplate';\nimport { runFastlaneFunction } from './functions/runFastlane';\nimport { createStartAndroidEmulatorBuildFunction } from './functions/startAndroidEmulator';\nimport { createStartIosSimulatorBuildFunction } from './functions/startIosSimulator';\nimport { createInstallMaestroBuildFunction } from './functions/installMaestro';\nimport { createGetCredentialsForBuildTriggeredByGithubIntegration } from './functions/getCredentialsForBuildTriggeredByGitHubIntegration';\nimport { createInstallPodsBuildFunction } from './functions/installPods';\nimport { createSendSlackMessageFunction } from './functions/sendSlackMessage';\nimport { createResolveBuildConfigBuildFunction } from './functions/resolveBuildConfig';\nimport { calculateEASUpdateRuntimeVersionFunction } from './functions/calculateEASUpdateRuntimeVersion';\nimport { eagerBundleBuildFunction } from './functions/eagerBundle';\nimport { createSubmissionEntityFunction } from './functions/createSubmissionEntity';\nimport { createDownloadBuildFunction } from './functions/downloadBuild';\nimport { createRepackBuildFunction } from './functions/repack';\nimport { createDownloadArtifactFunction } from './functions/downloadArtifact';\nimport { createRestoreCacheFunction } from './functions/restoreCache';\nimport { createSaveCacheFunction } from './functions/saveCache';\nimport { createInternalEasMaestroTestFunction } from './functions/internalMaestroTest';\n\nexport function getEasFunctions(ctx: CustomBuildContext): BuildFunction[] {\n const functions = [\n createCheckoutBuildFunction(),\n createDownloadArtifactFunction(),\n createUploadArtifactBuildFunction(ctx),\n createSetUpNpmrcBuildFunction(),\n createInstallNodeModulesBuildFunction(),\n createPrebuildBuildFunction(),\n createDownloadBuildFunction(),\n createRepackBuildFunction(),\n\n createRestoreCacheFunction(),\n createSaveCacheFunction(),\n\n configureEASUpdateIfInstalledFunction(),\n injectAndroidCredentialsFunction(),\n configureAndroidVersionFunction(),\n eagerBundleBuildFunction(),\n runGradleFunction(),\n resolveAppleTeamIdFromCredentialsFunction(),\n configureIosCredentialsFunction(),\n configureIosVersionFunction(),\n generateGymfileFromTemplateFunction(),\n runFastlaneFunction(),\n createStartAndroidEmulatorBuildFunction(),\n createStartIosSimulatorBuildFunction(),\n createInstallMaestroBuildFunction(),\n\n createInstallPodsBuildFunction(),\n createSendSlackMessageFunction(),\n\n calculateEASUpdateRuntimeVersionFunction(),\n\n createSubmissionEntityFunction(),\n\n createInternalEasMaestroTestFunction(ctx),\n ];\n\n if (ctx.hasBuildJob()) {\n functions.push(\n ...[\n createFindAndUploadBuildArtifactsBuildFunction(ctx),\n createResolveBuildConfigBuildFunction(ctx),\n createGetCredentialsForBuildTriggeredByGithubIntegration(ctx),\n ]\n );\n }\n\n return functions;\n}\n"]}
1
+ {"version":3,"file":"easFunctions.js","sourceRoot":"","sources":["../../src/steps/easFunctions.ts"],"names":[],"mappings":";;AAyCA,0CAkDC;AAvFD,+DAA+E;AAC/E,mDAAmE;AACnE,yDAAwE;AACxE,uEAAuF;AACvF,mDAAmE;AACnE,yFAAyG;AACzG,6FAAkG;AAClG,mFAAwF;AACxF,iFAAsF;AACtF,qDAA0D;AAC1D,qGAA0G;AAC1G,iFAAsF;AACtF,yEAA8E;AAC9E,yFAA8F;AAC9F,yDAA8D;AAC9D,2EAA2F;AAC3F,qEAAqF;AACrF,+DAA+E;AAC/E,uIAA0I;AAC1I,yDAAyE;AACzE,mEAA8E;AAC9E,uEAAuF;AACvF,mGAAwG;AACxG,yDAAmE;AACnE,+EAAoF;AACpF,6DAAwE;AACxE,+CAA+D;AAC/D,mEAA8E;AAC9E,2DAAsE;AACtE,qDAAgE;AAChE,yEAAuF;AACvF,+DAA0E;AAC1E,qEAGuC;AAEvC,SAAgB,eAAe,CAAC,GAAuB;IACrD,MAAM,SAAS,GAAG;QAChB,IAAA,sCAA2B,GAAE;QAC7B,IAAA,iDAA8B,GAAE;QAChC,IAAA,kDAAiC,EAAC,GAAG,CAAC;QACtC,IAAA,2CAA6B,GAAE;QAC/B,IAAA,0DAAqC,GAAE;QACvC,IAAA,sCAA2B,GAAE;QAC7B,IAAA,2CAA2B,GAAE;QAC7B,IAAA,kCAAyB,GAAE;QAC3B,IAAA,yCAA0B,GAAE;QAC5B,IAAA,mDAA+B,GAAE;QACjC,IAAA,mCAAuB,GAAE;QACzB,IAAA,6CAA4B,EAAC,GAAG,CAAC,SAAS,CAAC;QAC3C,IAAA,iDAA6B,GAAE;QAC/B,IAAA,qEAAqC,GAAE;QACvC,IAAA,2DAAgC,GAAE;QAClC,IAAA,yDAA+B,GAAE;QACjC,IAAA,sCAAwB,GAAE;QAC1B,IAAA,6BAAiB,GAAE;QACnB,IAAA,6EAAyC,GAAE;QAC3C,IAAA,yDAA+B,GAAE;QACjC,IAAA,iDAA2B,GAAE;QAC7B,IAAA,iEAAmC,GAAE;QACrC,IAAA,iCAAmB,GAAE;QACrB,IAAA,8DAAuC,GAAE;QACzC,IAAA,wDAAoC,GAAE;QACtC,IAAA,kDAAiC,GAAE;QAEnC,IAAA,4CAA8B,GAAE;QAChC,IAAA,iDAA8B,GAAE;QAEhC,IAAA,2EAAwC,GAAE;QAE1C,IAAA,uDAA8B,GAAE;QAEhC,IAAA,0DAAoC,EAAC,GAAG,CAAC;KAC1C,CAAC;IAEF,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,GAAG;YACD,IAAA,4EAA8C,EAAC,GAAG,CAAC;YACnD,IAAA,0DAAqC,EAAC,GAAG,CAAC;YAC1C,IAAA,6GAAwD,EAAC,GAAG,CAAC;SAC9D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { BuildFunction } from '@expo/steps';\n\nimport { CustomBuildContext } from '../customBuildContext';\n\nimport { createUploadArtifactBuildFunction } from './functions/uploadArtifact';\nimport { createCheckoutBuildFunction } from './functions/checkout';\nimport { createSetUpNpmrcBuildFunction } from './functions/useNpmToken';\nimport { createInstallNodeModulesBuildFunction } from './functions/installNodeModules';\nimport { createPrebuildBuildFunction } from './functions/prebuild';\nimport { createFindAndUploadBuildArtifactsBuildFunction } from './functions/findAndUploadBuildArtifacts';\nimport { configureEASUpdateIfInstalledFunction } from './functions/configureEASUpdateIfInstalled';\nimport { injectAndroidCredentialsFunction } from './functions/injectAndroidCredentials';\nimport { configureAndroidVersionFunction } from './functions/configureAndroidVersion';\nimport { runGradleFunction } from './functions/runGradle';\nimport { resolveAppleTeamIdFromCredentialsFunction } from './functions/resolveAppleTeamIdFromCredentials';\nimport { configureIosCredentialsFunction } from './functions/configureIosCredentials';\nimport { configureIosVersionFunction } from './functions/configureIosVersion';\nimport { generateGymfileFromTemplateFunction } from './functions/generateGymfileFromTemplate';\nimport { runFastlaneFunction } from './functions/runFastlane';\nimport { createStartAndroidEmulatorBuildFunction } from './functions/startAndroidEmulator';\nimport { createStartIosSimulatorBuildFunction } from './functions/startIosSimulator';\nimport { createInstallMaestroBuildFunction } from './functions/installMaestro';\nimport { createGetCredentialsForBuildTriggeredByGithubIntegration } from './functions/getCredentialsForBuildTriggeredByGitHubIntegration';\nimport { createInstallPodsBuildFunction } from './functions/installPods';\nimport { createSendSlackMessageFunction } from './functions/sendSlackMessage';\nimport { createResolveBuildConfigBuildFunction } from './functions/resolveBuildConfig';\nimport { calculateEASUpdateRuntimeVersionFunction } from './functions/calculateEASUpdateRuntimeVersion';\nimport { eagerBundleBuildFunction } from './functions/eagerBundle';\nimport { createSubmissionEntityFunction } from './functions/createSubmissionEntity';\nimport { createDownloadBuildFunction } from './functions/downloadBuild';\nimport { createRepackBuildFunction } from './functions/repack';\nimport { createDownloadArtifactFunction } from './functions/downloadArtifact';\nimport { createRestoreCacheFunction } from './functions/restoreCache';\nimport { createSaveCacheFunction } from './functions/saveCache';\nimport { createInternalEasMaestroTestFunction } from './functions/internalMaestroTest';\nimport { createSaveBuildCacheFunction } from './functions/saveBuildCache';\nimport {\n createCacheStatsBuildFunction,\n createRestoreBuildCacheFunction,\n} from './functions/restoreBuildCache';\n\nexport function getEasFunctions(ctx: CustomBuildContext): BuildFunction[] {\n const functions = [\n createCheckoutBuildFunction(),\n createDownloadArtifactFunction(),\n createUploadArtifactBuildFunction(ctx),\n createSetUpNpmrcBuildFunction(),\n createInstallNodeModulesBuildFunction(),\n createPrebuildBuildFunction(),\n createDownloadBuildFunction(),\n createRepackBuildFunction(),\n createRestoreCacheFunction(),\n createRestoreBuildCacheFunction(),\n createSaveCacheFunction(),\n createSaveBuildCacheFunction(ctx.startTime),\n createCacheStatsBuildFunction(),\n configureEASUpdateIfInstalledFunction(),\n injectAndroidCredentialsFunction(),\n configureAndroidVersionFunction(),\n eagerBundleBuildFunction(),\n runGradleFunction(),\n resolveAppleTeamIdFromCredentialsFunction(),\n configureIosCredentialsFunction(),\n configureIosVersionFunction(),\n generateGymfileFromTemplateFunction(),\n runFastlaneFunction(),\n createStartAndroidEmulatorBuildFunction(),\n createStartIosSimulatorBuildFunction(),\n createInstallMaestroBuildFunction(),\n\n createInstallPodsBuildFunction(),\n createSendSlackMessageFunction(),\n\n calculateEASUpdateRuntimeVersionFunction(),\n\n createSubmissionEntityFunction(),\n\n createInternalEasMaestroTestFunction(ctx),\n ];\n\n if (ctx.hasBuildJob()) {\n functions.push(\n ...[\n createFindAndUploadBuildArtifactsBuildFunction(ctx),\n createResolveBuildConfigBuildFunction(ctx),\n createGetCredentialsForBuildTriggeredByGithubIntegration(ctx),\n ]\n );\n }\n\n return functions;\n}\n"]}
@@ -112,11 +112,15 @@ async function restoreCcacheAsync({ logger, workingDirectory, platform, env, sec
112
112
  logger.info(`Cache restored successfully ${matchedKey === cacheKey ? '(direct hit)' : '(prefix match)'}`);
113
113
  }
114
114
  catch (err) {
115
- if (env.EAS_USE_PUBLIC_CACHE === '1' &&
116
- err instanceof turtleFetch_1.TurtleFetchError &&
117
- ((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
115
+ if (err instanceof turtleFetch_1.TurtleFetchError && ((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
116
+ logger.info('No cache found for this key');
117
+ }
118
+ else {
119
+ logger.warn('Failed to restore cache: ', err);
120
+ }
121
+ if (env.EAS_USE_PUBLIC_CACHE === '1') {
118
122
  try {
119
- logger.info('No cache found for this key. Downloading public cache...');
123
+ logger.info('Downloading public cache...');
120
124
  const { archivePath } = await (0, restoreCache_1.downloadPublicCacheAsync)({
121
125
  logger,
122
126
  expoApiServerURL,
@@ -135,9 +139,6 @@ async function restoreCcacheAsync({ logger, workingDirectory, platform, env, sec
135
139
  logger.warn({ err }, 'Failed to download public cache');
136
140
  }
137
141
  }
138
- else {
139
- logger.warn({ err }, 'Failed to restore cache');
140
- }
141
142
  }
142
143
  }
143
144
  async function cacheStatsAsync({ logger, env, secrets, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"restoreBuildCache.js","sourceRoot":"","sources":["../../../src/steps/functions/restoreBuildCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n spawnAsync,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { asyncResult } from '@expo/results';\nimport nullthrows from 'nullthrows';\n\nimport {\n CACHE_KEY_PREFIX_BY_PLATFORM,\n generateDefaultBuildCacheKeyAsync,\n getCcachePath,\n} from '../../utils/cacheKey';\nimport { TurtleFetchError } from '../../utils/turtleFetch';\n\nimport { downloadCacheAsync, decompressCacheAsync, downloadPublicCacheAsync } from './restoreCache';\nimport { sendCcacheStatsAsync } from './ccacheStats';\n\nexport function createRestoreBuildCacheFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'restore_build_cache',\n name: 'Restore Cache',\n __metricsId: 'eas/restore_build_cache',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'platform',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n const { logger } = stepCtx;\n const workingDirectory = stepCtx.workingDirectory;\n const platform =\n (inputs.platform.value as Platform | undefined) ??\n stepCtx.global.staticContext.job.platform;\n if (!platform || ![Platform.ANDROID, Platform.IOS].includes(platform)) {\n throw new Error(\n `Unsupported platform: ${platform}. Platform must be \"${Platform.ANDROID}\" or \"${Platform.IOS}\"`\n );\n }\n\n await restoreCcacheAsync({\n logger,\n workingDirectory,\n platform,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport function createCacheStatsBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'cache_stats',\n name: 'Cache Stats',\n __metricsId: 'eas/cache_stats',\n fn: async (stepCtx, { env }) => {\n const platform = stepCtx.global.staticContext.job.platform;\n if (!platform) {\n stepCtx.logger.warn('Platform not set, skipping cache stats');\n return;\n }\n await cacheStatsAsync({\n logger: stepCtx.logger,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport async function restoreCcacheAsync({\n logger,\n workingDirectory,\n platform,\n env,\n secrets,\n}: {\n logger: bunyan;\n workingDirectory: string;\n platform: Platform;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_RESTORE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_RESTORE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n const robotAccessToken = nullthrows(\n secrets?.robotAccessToken,\n 'Robot access token is required for cache operations'\n );\n const expoApiServerURL = nullthrows(env.__API_SERVER_URL, '__API_SERVER_URL is not set');\n const cachePath = getCcachePath(env);\n\n // Check if ccache is installed before proceeding\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n try {\n // Zero ccache stats for accurate tracking\n await asyncResult(\n spawnAsync('ccache', ['--zero-stats'], {\n env,\n stdio: 'pipe',\n })\n );\n\n const cacheKey = await generateDefaultBuildCacheKeyAsync(workingDirectory, platform);\n logger.info(`Restoring cache key: ${cacheKey}`);\n\n const jobId = nullthrows(env.EAS_BUILD_ID, 'EAS_BUILD_ID is not set');\n const { archivePath, matchedKey } = await downloadCacheAsync({\n logger,\n jobId,\n expoApiServerURL,\n robotAccessToken,\n paths: [cachePath],\n key: cacheKey,\n keyPrefixes: [CACHE_KEY_PREFIX_BY_PLATFORM[platform]],\n platform,\n });\n\n await decompressCacheAsync({\n archivePath,\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n\n logger.info(\n `Cache restored successfully ${matchedKey === cacheKey ? '(direct hit)' : '(prefix match)'}`\n );\n } catch (err: unknown) {\n if (\n env.EAS_USE_PUBLIC_CACHE === '1' &&\n err instanceof TurtleFetchError &&\n err.response?.status === 404\n ) {\n try {\n logger.info('No cache found for this key. Downloading public cache...');\n const { archivePath } = await downloadPublicCacheAsync({\n logger,\n expoApiServerURL,\n robotAccessToken,\n paths: [cachePath],\n platform,\n });\n await decompressCacheAsync({\n archivePath,\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n } catch (err: unknown) {\n logger.warn({ err }, 'Failed to download public cache');\n }\n } else {\n logger.warn({ err }, 'Failed to restore cache');\n }\n }\n}\n\nexport async function cacheStatsAsync({\n logger,\n env,\n secrets,\n}: {\n logger: bunyan;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_RESTORE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_RESTORE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n\n // Check if ccache is installed\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n await asyncResult(\n spawnAsync('ccache', ['--show-stats', '-v'], {\n env,\n logger,\n stdio: 'pipe',\n })\n );\n\n const robotAccessToken = secrets?.robotAccessToken;\n const expoApiServerURL = env.__API_SERVER_URL;\n const buildId = env.EAS_BUILD_ID;\n\n if (robotAccessToken && expoApiServerURL && buildId) {\n await sendCcacheStatsAsync({\n env,\n expoApiServerURL,\n robotAccessToken,\n buildId,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"restoreBuildCache.js","sourceRoot":"","sources":["../../../src/steps/functions/restoreBuildCache.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n spawnAsync,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { asyncResult } from '@expo/results';\nimport nullthrows from 'nullthrows';\n\nimport {\n CACHE_KEY_PREFIX_BY_PLATFORM,\n generateDefaultBuildCacheKeyAsync,\n getCcachePath,\n} from '../../utils/cacheKey';\nimport { TurtleFetchError } from '../../utils/turtleFetch';\n\nimport { downloadCacheAsync, decompressCacheAsync, downloadPublicCacheAsync } from './restoreCache';\nimport { sendCcacheStatsAsync } from './ccacheStats';\n\nexport function createRestoreBuildCacheFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'restore_build_cache',\n name: 'Restore Cache',\n __metricsId: 'eas/restore_build_cache',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'platform',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n const { logger } = stepCtx;\n const workingDirectory = stepCtx.workingDirectory;\n const platform =\n (inputs.platform.value as Platform | undefined) ??\n stepCtx.global.staticContext.job.platform;\n if (!platform || ![Platform.ANDROID, Platform.IOS].includes(platform)) {\n throw new Error(\n `Unsupported platform: ${platform}. Platform must be \"${Platform.ANDROID}\" or \"${Platform.IOS}\"`\n );\n }\n\n await restoreCcacheAsync({\n logger,\n workingDirectory,\n platform,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport function createCacheStatsBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'cache_stats',\n name: 'Cache Stats',\n __metricsId: 'eas/cache_stats',\n fn: async (stepCtx, { env }) => {\n const platform = stepCtx.global.staticContext.job.platform;\n if (!platform) {\n stepCtx.logger.warn('Platform not set, skipping cache stats');\n return;\n }\n await cacheStatsAsync({\n logger: stepCtx.logger,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport async function restoreCcacheAsync({\n logger,\n workingDirectory,\n platform,\n env,\n secrets,\n}: {\n logger: bunyan;\n workingDirectory: string;\n platform: Platform;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_RESTORE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_RESTORE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n const robotAccessToken = nullthrows(\n secrets?.robotAccessToken,\n 'Robot access token is required for cache operations'\n );\n const expoApiServerURL = nullthrows(env.__API_SERVER_URL, '__API_SERVER_URL is not set');\n const cachePath = getCcachePath(env);\n\n // Check if ccache is installed before proceeding\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n try {\n // Zero ccache stats for accurate tracking\n await asyncResult(\n spawnAsync('ccache', ['--zero-stats'], {\n env,\n stdio: 'pipe',\n })\n );\n\n const cacheKey = await generateDefaultBuildCacheKeyAsync(workingDirectory, platform);\n logger.info(`Restoring cache key: ${cacheKey}`);\n\n const jobId = nullthrows(env.EAS_BUILD_ID, 'EAS_BUILD_ID is not set');\n const { archivePath, matchedKey } = await downloadCacheAsync({\n logger,\n jobId,\n expoApiServerURL,\n robotAccessToken,\n paths: [cachePath],\n key: cacheKey,\n keyPrefixes: [CACHE_KEY_PREFIX_BY_PLATFORM[platform]],\n platform,\n });\n\n await decompressCacheAsync({\n archivePath,\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n\n logger.info(\n `Cache restored successfully ${matchedKey === cacheKey ? '(direct hit)' : '(prefix match)'}`\n );\n } catch (err: unknown) {\n if (err instanceof TurtleFetchError && err.response?.status === 404) {\n logger.info('No cache found for this key');\n } else {\n logger.warn('Failed to restore cache: ', err);\n }\n if (env.EAS_USE_PUBLIC_CACHE === '1') {\n try {\n logger.info('Downloading public cache...');\n const { archivePath } = await downloadPublicCacheAsync({\n logger,\n expoApiServerURL,\n robotAccessToken,\n paths: [cachePath],\n platform,\n });\n await decompressCacheAsync({\n archivePath,\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n } catch (err: unknown) {\n logger.warn({ err }, 'Failed to download public cache');\n }\n }\n }\n}\n\nexport async function cacheStatsAsync({\n logger,\n env,\n secrets,\n}: {\n logger: bunyan;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_RESTORE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_RESTORE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n\n // Check if ccache is installed\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n await asyncResult(\n spawnAsync('ccache', ['--show-stats', '-v'], {\n env,\n logger,\n stdio: 'pipe',\n })\n );\n\n const robotAccessToken = secrets?.robotAccessToken;\n const expoApiServerURL = env.__API_SERVER_URL;\n const buildId = env.EAS_BUILD_ID;\n\n if (robotAccessToken && expoApiServerURL && buildId) {\n await sendCcacheStatsAsync({\n env,\n expoApiServerURL,\n robotAccessToken,\n buildId,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"saveBuildCache.js","sourceRoot":"","sources":["../../../src/steps/functions/saveBuildCache.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n spawnAsync,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { asyncResult } from '@expo/results';\nimport nullthrows from 'nullthrows';\n\nimport { generateDefaultBuildCacheKeyAsync, getCcachePath } from '../../utils/cacheKey';\n\nimport { compressCacheAsync, uploadCacheAsync } from './saveCache';\n\nexport function createSaveBuildCacheFunction(evictUsedBefore: Date): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'save_build_cache',\n name: 'Save Cache',\n __metricsId: 'eas/save_build_cache',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'platform',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n const { logger } = stepCtx;\n const workingDirectory = stepCtx.workingDirectory;\n const platform =\n (inputs.platform.value as Platform | undefined) ??\n stepCtx.global.staticContext.job.platform;\n if (!platform || ![Platform.ANDROID, Platform.IOS].includes(platform)) {\n throw new Error(\n `Unsupported platform: ${platform}. Platform must be \"${Platform.ANDROID}\" or \"${Platform.IOS}\"`\n );\n }\n\n await saveCcacheAsync({\n logger,\n workingDirectory,\n platform,\n evictUsedBefore,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport async function saveCcacheAsync({\n logger,\n workingDirectory,\n platform,\n evictUsedBefore,\n env,\n secrets,\n}: {\n logger: bunyan;\n workingDirectory: string;\n platform: Platform;\n evictUsedBefore: Date;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_SAVE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_SAVE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n\n // Check if ccache is installed before proceeding\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n try {\n const cacheKey = await generateDefaultBuildCacheKeyAsync(workingDirectory, platform);\n logger.info(`Saving cache key: ${cacheKey}`);\n\n const jobId = nullthrows(env.EAS_BUILD_ID, 'EAS_BUILD_ID is not set');\n const robotAccessToken = nullthrows(\n secrets?.robotAccessToken,\n 'Robot access token is required for cache operations'\n );\n const expoApiServerURL = nullthrows(env.__API_SERVER_URL, '__API_SERVER_URL is not set');\n const cachePath = getCcachePath(env);\n\n // Cache size can blow up over time over many builds, so evict stale files\n // and only upload what was used within this build's time window\n const evictWindow = Math.floor((Date.now() - evictUsedBefore.getTime()) / 1000);\n logger.info('Pruning cache...');\n await asyncResult(\n spawnAsync('ccache', ['--evict-older-than', evictWindow + 's'], {\n env,\n logger,\n stdio: 'pipe',\n })\n );\n\n logger.info('Preparing cache archive...');\n\n const { archivePath } = await compressCacheAsync({\n paths: [cachePath],\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n\n const { size } = await fs.promises.stat(archivePath);\n\n await uploadCacheAsync({\n logger,\n jobId,\n expoApiServerURL,\n robotAccessToken,\n archivePath,\n key: cacheKey,\n paths: [cachePath],\n size,\n platform,\n });\n } catch (err) {\n logger.error({ err }, 'Failed to save cache');\n }\n}\n"]}
1
+ {"version":3,"file":"saveBuildCache.js","sourceRoot":"","sources":["../../../src/steps/functions/saveBuildCache.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n spawnAsync,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { asyncResult } from '@expo/results';\nimport nullthrows from 'nullthrows';\n\nimport { generateDefaultBuildCacheKeyAsync, getCcachePath } from '../../utils/cacheKey';\n\nimport { compressCacheAsync, uploadCacheAsync } from './saveCache';\n\nexport function createSaveBuildCacheFunction(evictUsedBefore: Date): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'save_build_cache',\n name: 'Save Cache',\n __metricsId: 'eas/save_build_cache',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'platform',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n const { logger } = stepCtx;\n const workingDirectory = stepCtx.workingDirectory;\n const platform =\n (inputs.platform.value as Platform | undefined) ??\n stepCtx.global.staticContext.job.platform;\n if (!platform || ![Platform.ANDROID, Platform.IOS].includes(platform)) {\n throw new Error(\n `Unsupported platform: ${platform}. Platform must be \"${Platform.ANDROID}\" or \"${Platform.IOS}\"`\n );\n }\n\n await saveCcacheAsync({\n logger,\n workingDirectory,\n platform,\n evictUsedBefore,\n env,\n secrets: stepCtx.global.staticContext.job.secrets,\n });\n },\n });\n}\n\nexport async function saveCcacheAsync({\n logger,\n workingDirectory,\n platform,\n evictUsedBefore,\n env,\n secrets,\n}: {\n logger: bunyan;\n workingDirectory: string;\n platform: Platform;\n evictUsedBefore: Date;\n env: Record<string, string | undefined>;\n secrets?: { robotAccessToken?: string };\n}): Promise<void> {\n const enabled =\n env.EAS_SAVE_CACHE === '1' || (env.EAS_USE_CACHE === '1' && env.EAS_SAVE_CACHE !== '0');\n\n if (!enabled) {\n return;\n }\n\n // Check if ccache is installed before proceeding\n const checkInstall = await asyncResult(\n spawnAsync('command', ['-v', 'ccache'], {\n env,\n stdio: 'pipe',\n shell: true,\n })\n );\n if (!checkInstall.ok) {\n return;\n }\n\n try {\n const cacheKey = await generateDefaultBuildCacheKeyAsync(workingDirectory, platform);\n logger.info(`Saving cache key: ${cacheKey}`);\n\n const jobId = nullthrows(env.EAS_BUILD_ID, 'EAS_BUILD_ID is not set');\n const robotAccessToken = nullthrows(\n secrets?.robotAccessToken,\n 'Robot access token is required for cache operations'\n );\n const expoApiServerURL = nullthrows(env.__API_SERVER_URL, '__API_SERVER_URL is not set');\n const cachePath = getCcachePath(env);\n\n // Cache size can blow up over time over many builds, so evict stale files\n // and only upload what was used within this build's time window\n\n const evictWindow = Math.floor((Date.now() - evictUsedBefore.getTime()) / 1000);\n logger.info('Pruning cache...');\n await asyncResult(\n spawnAsync('ccache', ['--evict-older-than', evictWindow + 's'], {\n env,\n logger,\n stdio: 'pipe',\n })\n );\n\n logger.info('Preparing cache archive...');\n\n const { archivePath } = await compressCacheAsync({\n paths: [cachePath],\n workingDirectory,\n verbose: env.EXPO_DEBUG === '1',\n logger,\n });\n\n const { size } = await fs.promises.stat(archivePath);\n\n await uploadCacheAsync({\n logger,\n jobId,\n expoApiServerURL,\n robotAccessToken,\n archivePath,\n key: cacheKey,\n paths: [cachePath],\n size,\n platform,\n });\n } catch (err) {\n logger.error({ err }, 'Failed to save cache');\n }\n}\n"]}
@@ -10,3 +10,4 @@ export declare function runExpoCliCommand({ packageManager, args, options, }: {
10
10
  options: SpawnOptions;
11
11
  }): SpawnPromise<SpawnResult>;
12
12
  export declare function readPackageJson(projectDir: string): any;
13
+ export declare function readEasJsonContents(projectDir: string): string;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isUsingModernYarnVersion = isUsingModernYarnVersion;
7
7
  exports.runExpoCliCommand = runExpoCliCommand;
8
8
  exports.readPackageJson = readPackageJson;
9
+ exports.readEasJsonContents = readEasJsonContents;
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
11
12
  const fs_extra_1 = __importDefault(require("fs-extra"));
@@ -48,4 +49,11 @@ function readPackageJson(projectDir) {
48
49
  throw new Error(`Failed to parse or read package.json: ${err.message}`);
49
50
  }
50
51
  }
52
+ function readEasJsonContents(projectDir) {
53
+ const easJsonPath = path_1.default.join(projectDir, 'eas.json');
54
+ if (!fs_extra_1.default.pathExistsSync(easJsonPath)) {
55
+ throw new Error(`eas.json does not exist in ${projectDir}.`);
56
+ }
57
+ return fs_extra_1.default.readFileSync(easJsonPath, 'utf8');
58
+ }
51
59
  //# sourceMappingURL=project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;AAUA,4DAIC;AAED,8CAqBC;AAED,0CAUC;AAjDD,gDAAwB;AAExB,sEAAoF;AACpF,wDAA0B;AAE1B,4DAA8E;AAE9E;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,oCAAmB,EAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IACjF,OAAO,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,IAAI,EACJ,OAAO,GAKR;IACC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QACjD,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,kBAAE,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\n\nimport { findPackagerRootDir, PackageManager } from '../utils/packageManager';\n\n/**\n * check if .yarnrc.yml exists in the project dir or in the workspace root dir\n */\nexport async function isUsingModernYarnVersion(projectDir: string): Promise<boolean> {\n const yarnrcPath = path.join(projectDir, '.yarnrc.yml');\n const yarnrcRootPath = path.join(findPackagerRootDir(projectDir), '.yarnrc.yml');\n return (await fs.pathExists(yarnrcPath)) || (await fs.pathExists(yarnrcRootPath));\n}\n\nexport function runExpoCliCommand({\n packageManager,\n args,\n options,\n}: {\n packageManager: PackageManager;\n args: string[];\n options: SpawnOptions;\n}): SpawnPromise<SpawnResult> {\n const argsWithExpo = ['expo', ...args];\n if (packageManager === PackageManager.NPM) {\n return spawn('npx', argsWithExpo, options);\n } else if (packageManager === PackageManager.YARN) {\n return spawn('yarn', argsWithExpo, options);\n } else if (packageManager === PackageManager.PNPM) {\n return spawn('pnpm', argsWithExpo, options);\n } else if (packageManager === PackageManager.BUN) {\n return spawn('bun', argsWithExpo, options);\n } else {\n throw new Error(`Unsupported package manager: ${packageManager}`);\n }\n}\n\nexport function readPackageJson(projectDir: string): any {\n const packageJsonPath = path.join(projectDir, 'package.json');\n if (!fs.pathExistsSync(packageJsonPath)) {\n throw new Error(`package.json does not exist in ${projectDir}`);\n }\n try {\n return fs.readJSONSync(packageJsonPath);\n } catch (err: any) {\n throw new Error(`Failed to parse or read package.json: ${err.message}`);\n }\n}\n"]}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;AAUA,4DAIC;AAED,8CAqBC;AAED,0CAUC;AAED,kDAOC;AA1DD,gDAAwB;AAExB,sEAAoF;AACpF,wDAA0B;AAE1B,4DAA8E;AAE9E;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,oCAAmB,EAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IACjF,OAAO,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,IAAI,EACJ,OAAO,GAKR;IACC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QACjD,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,kBAAE,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,UAAkB;IACpD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,kBAAE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,kBAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\n\nimport { findPackagerRootDir, PackageManager } from '../utils/packageManager';\n\n/**\n * check if .yarnrc.yml exists in the project dir or in the workspace root dir\n */\nexport async function isUsingModernYarnVersion(projectDir: string): Promise<boolean> {\n const yarnrcPath = path.join(projectDir, '.yarnrc.yml');\n const yarnrcRootPath = path.join(findPackagerRootDir(projectDir), '.yarnrc.yml');\n return (await fs.pathExists(yarnrcPath)) || (await fs.pathExists(yarnrcRootPath));\n}\n\nexport function runExpoCliCommand({\n packageManager,\n args,\n options,\n}: {\n packageManager: PackageManager;\n args: string[];\n options: SpawnOptions;\n}): SpawnPromise<SpawnResult> {\n const argsWithExpo = ['expo', ...args];\n if (packageManager === PackageManager.NPM) {\n return spawn('npx', argsWithExpo, options);\n } else if (packageManager === PackageManager.YARN) {\n return spawn('yarn', argsWithExpo, options);\n } else if (packageManager === PackageManager.PNPM) {\n return spawn('pnpm', argsWithExpo, options);\n } else if (packageManager === PackageManager.BUN) {\n return spawn('bun', argsWithExpo, options);\n } else {\n throw new Error(`Unsupported package manager: ${packageManager}`);\n }\n}\n\nexport function readPackageJson(projectDir: string): any {\n const packageJsonPath = path.join(projectDir, 'package.json');\n if (!fs.pathExistsSync(packageJsonPath)) {\n throw new Error(`package.json does not exist in ${projectDir}`);\n }\n try {\n return fs.readJSONSync(packageJsonPath);\n } catch (err: any) {\n throw new Error(`Failed to parse or read package.json: ${err.message}`);\n }\n}\n\nexport function readEasJsonContents(projectDir: string): string {\n const easJsonPath = path.join(projectDir, 'eas.json');\n if (!fs.pathExistsSync(easJsonPath)) {\n throw new Error(`eas.json does not exist in ${projectDir}.`);\n }\n\n return fs.readFileSync(easJsonPath, 'utf8');\n}\n"]}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://github.com/expo/eas-build.git",
6
6
  "directory": "packages/build-tools"
7
7
  },
8
- "version": "1.0.266",
8
+ "version": "1.0.268",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
11
11
  "files": [
@@ -91,5 +91,5 @@
91
91
  "node": "20.14.0",
92
92
  "yarn": "1.22.21"
93
93
  },
94
- "gitHead": "de6477149a0c7f4cede057f09bace7ed10cd44cc"
94
+ "gitHead": "2bae06dc7f0681c359990cf4619d5ed444f0675e"
95
95
  }