@expo/build-tools 1.0.183 → 1.0.185
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.
- package/dist/common/fastlane.d.ts +7 -0
- package/dist/common/fastlane.js +11 -0
- package/dist/common/fastlane.js.map +1 -0
- package/dist/common/git.d.ts +10 -0
- package/dist/common/git.js +85 -0
- package/dist/common/git.js.map +1 -0
- package/dist/common/projectSources.js +47 -74
- package/dist/common/projectSources.js.map +1 -1
- package/dist/context.js +7 -29
- package/dist/context.js.map +1 -1
- package/dist/customBuildContext.js +6 -5
- package/dist/customBuildContext.js.map +1 -1
- package/dist/ios/fastlane.js +5 -9
- package/dist/ios/fastlane.js.map +1 -1
- package/dist/ios/pod.js +2 -1
- package/dist/ios/pod.js.map +1 -1
- package/dist/steps/easFunctions.js +2 -2
- package/dist/steps/easFunctions.js.map +1 -1
- package/dist/steps/functionGroups/maestroTest.js +14 -5
- package/dist/steps/functionGroups/maestroTest.js.map +1 -1
- package/dist/steps/functions/createSubmissionEntity.js +1 -1
- package/dist/steps/functions/createSubmissionEntity.js.map +1 -1
- package/dist/steps/functions/downloadBuild.d.ts +2 -2
- package/dist/steps/functions/downloadBuild.js +5 -5
- package/dist/steps/functions/downloadBuild.js.map +1 -1
- package/dist/steps/functions/installPods.js +2 -1
- package/dist/steps/functions/installPods.js.map +1 -1
- package/dist/steps/functions/repack.d.ts +18 -0
- package/dist/steps/functions/repack.js +155 -107
- package/dist/steps/functions/repack.js.map +1 -1
- package/dist/steps/utils/ios/fastlane.js +6 -10
- package/dist/steps/utils/ios/fastlane.js.map +1 -1
- package/dist/utils/outputs.js +1 -0
- package/dist/utils/outputs.js.map +1 -1
- package/package.json +5 -5
package/dist/ios/fastlane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastlane.js","sourceRoot":"","sources":["../../src/ios/fastlane.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,sEAAwD;AACxD,wDAA0B;AAC1B,4DAAoC;AAEpC,wCAAgE;
|
|
1
|
+
{"version":3,"file":"fastlane.js","sourceRoot":"","sources":["../../src/ios/fastlane.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Env, Ios } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport spawn, { SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport nullthrows from 'nullthrows';\n\nimport { BuildContext, SkipNativeBuildError } from '../context';\nimport { COMMON_FASTLANE_ENV } from '../common/fastlane';\n\nimport { createGymfileForArchiveBuild, createGymfileForSimulatorBuild } from './gymfile';\nimport { Credentials } from './credentials/manager';\nimport { XcodeBuildLogger } from './xcpretty';\nimport { isTVOS } from './tvos';\nimport { createFastfileForResigningBuild } from './fastfile';\n\nexport async function runFastlaneGym<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n entitlements,\n extraEnv,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n entitlements: object | null;\n extraEnv?: Env;\n }\n): Promise<void> {\n await ensureGymfileExists(ctx, {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory: ctx.buildLogsDirectory,\n entitlements,\n });\n if (ctx.skipNativeBuild) {\n throw new SkipNativeBuildError('Skipping fastlane build');\n }\n const buildLogger = new XcodeBuildLogger(ctx.logger, ctx.getReactNativeProjectDirectory());\n void buildLogger.watchLogFiles(ctx.buildLogsDirectory);\n try {\n await runFastlane(['gym'], {\n cwd: path.join(ctx.getReactNativeProjectDirectory(), 'ios'),\n logger: ctx.logger,\n env: { ...ctx.env, ...extraEnv },\n });\n } finally {\n await buildLogger.flush();\n }\n}\n\nexport async function runFastlaneResign<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n { credentials, ipaPath }: { credentials: Credentials; ipaPath: string }\n): Promise<void> {\n const { certificateCommonName } = credentials.applicationTargetProvisioningProfile.data;\n\n const fastlaneDirPath = path.join(ctx.buildDirectory, 'fastlane');\n await fs.ensureDir(fastlaneDirPath);\n const fastfilePath = path.join(fastlaneDirPath, 'Fastfile');\n await createFastfileForResigningBuild({\n outputFile: fastfilePath,\n ipaPath,\n keychainPath: credentials.keychainPath,\n signingIdentity: certificateCommonName,\n targetProvisioningProfiles: credentials.targetProvisioningProfiles,\n });\n\n await runFastlane(['do_resign'], {\n cwd: ctx.buildDirectory,\n logger: ctx.logger,\n env: ctx.env,\n });\n}\n\nexport async function runFastlane(\n fastlaneArgs: string[],\n {\n logger,\n env,\n cwd,\n }: {\n logger?: bunyan;\n env?: Record<string, string>;\n cwd?: string;\n } = {}\n): Promise<SpawnResult> {\n return await spawn('fastlane', fastlaneArgs, {\n env: {\n ...COMMON_FASTLANE_ENV,\n ...(env ?? process.env),\n },\n logger,\n cwd,\n });\n}\n\nasync function ensureGymfileExists<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory,\n entitlements,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n logsDirectory: string;\n entitlements: object | null;\n }\n): Promise<void> {\n const gymfilePath = path.join(ctx.getReactNativeProjectDirectory(), 'ios/Gymfile');\n\n if (await fs.pathExists(gymfilePath)) {\n ctx.logger.info('Gymfile already exists');\n return;\n }\n\n ctx.logger.info('Creating Gymfile');\n if (ctx.job.simulator) {\n const isTV = await isTVOS(ctx);\n const simulatorDestination = `generic/platform=${isTV ? 'tvOS' : 'iOS'} Simulator`;\n\n await createGymfileForSimulatorBuild({\n outputFile: gymfilePath,\n scheme,\n buildConfiguration: buildConfiguration ?? 'release',\n derivedDataPath: './build',\n clean: false,\n logsDirectory,\n simulatorDestination,\n });\n } else {\n await createGymfileForArchiveBuild({\n outputFile: gymfilePath,\n credentials: nullthrows(credentials, 'credentials must exist for non-simulator builds'),\n scheme,\n buildConfiguration,\n outputDirectory: './build',\n clean: false,\n logsDirectory,\n entitlements: entitlements ?? undefined,\n });\n }\n\n ctx.logger.info('Gymfile created');\n}\n"]}
|
package/dist/ios/pod.js
CHANGED
|
@@ -9,8 +9,9 @@ const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
|
9
9
|
async function installPods(ctx, { infoCallbackFn }) {
|
|
10
10
|
const iosDir = path_1.default.join(ctx.getReactNativeProjectDirectory(), 'ios');
|
|
11
11
|
const verboseFlag = ctx.env['EAS_VERBOSE'] === '1' ? ['--verbose'] : [];
|
|
12
|
+
const cocoapodsDeploymentFlag = ctx.env['POD_INSTALL_DEPLOYMENT'] === '1' ? ['--deployment'] : [];
|
|
12
13
|
return {
|
|
13
|
-
spawnPromise: (0, turtle_spawn_1.default)('pod', ['install', ...verboseFlag], {
|
|
14
|
+
spawnPromise: (0, turtle_spawn_1.default)('pod', ['install', ...verboseFlag, ...cocoapodsDeploymentFlag], {
|
|
14
15
|
cwd: iosDir,
|
|
15
16
|
logger: ctx.logger,
|
|
16
17
|
env: {
|
package/dist/ios/pod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/ios/pod.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,sEAAoF;AAI7E,KAAK,UAAU,WAAW,CAC/B,GAAuB,EACvB,EAAE,cAAc,EAAgB;IAEhC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/ios/pod.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,sEAAoF;AAI7E,KAAK,UAAU,WAAW,CAC/B,GAAuB,EACvB,EAAE,cAAc,EAAgB;IAEhC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,uBAAuB,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElG,OAAO;QACL,YAAY,EAAE,IAAA,sBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,GAAG,uBAAuB,CAAC,EAAE;YAClF,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE;gBACH,GAAG,GAAG,CAAC,GAAG;gBACV,IAAI,EAAE,aAAa;gBACnB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,6BAA6B;oBACvC,CAAC,CAAC,EAAE,wBAAwB,EAAE,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE;oBACrE,CAAC,CAAC,EAAE,CAAC;aACR;YACD,eAAe,EAAE,CAAC,IAAa,EAAE,EAAE;gBACjC,IACE,CAAC,IAAI;oBACL,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,EACtF,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,cAAc;SACf,CAAC;KACH,CAAC;AACJ,CAAC;AAjCD,kCAiCC","sourcesContent":["import path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nexport async function installPods<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n { infoCallbackFn }: SpawnOptions\n): Promise<{ spawnPromise: SpawnPromise<SpawnResult> }> {\n const iosDir = path.join(ctx.getReactNativeProjectDirectory(), 'ios');\n\n const verboseFlag = ctx.env['EAS_VERBOSE'] === '1' ? ['--verbose'] : [];\n const cocoapodsDeploymentFlag = ctx.env['POD_INSTALL_DEPLOYMENT'] === '1' ? ['--deployment'] : [];\n\n return {\n spawnPromise: spawn('pod', ['install', ...verboseFlag, ...cocoapodsDeploymentFlag], {\n cwd: iosDir,\n logger: ctx.logger,\n env: {\n ...ctx.env,\n LANG: 'en_US.UTF-8',\n ...(ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL\n ? { NEXUS_COCOAPODS_REPO_URL: ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL }\n : {}),\n },\n lineTransformer: (line?: string) => {\n if (\n !line ||\n /\\[!\\] '[\\w-]+' uses the unencrypted 'http' protocol to transfer the Pod\\./.exec(line)\n ) {\n return null;\n } else {\n return line;\n }\n },\n infoCallbackFn,\n }),\n };\n}\n"]}
|
|
@@ -24,10 +24,10 @@ const installPods_1 = require("./functions/installPods");
|
|
|
24
24
|
const sendSlackMessage_1 = require("./functions/sendSlackMessage");
|
|
25
25
|
const resolveBuildConfig_1 = require("./functions/resolveBuildConfig");
|
|
26
26
|
const calculateEASUpdateRuntimeVersion_1 = require("./functions/calculateEASUpdateRuntimeVersion");
|
|
27
|
-
const repack_1 = require("./functions/repack");
|
|
28
27
|
const eagerBundle_1 = require("./functions/eagerBundle");
|
|
29
28
|
const createSubmissionEntity_1 = require("./functions/createSubmissionEntity");
|
|
30
29
|
const downloadBuild_1 = require("./functions/downloadBuild");
|
|
30
|
+
const repack_1 = require("./functions/repack");
|
|
31
31
|
function getEasFunctions(ctx) {
|
|
32
32
|
const functions = [
|
|
33
33
|
(0, checkout_1.createCheckoutBuildFunction)(),
|
|
@@ -36,6 +36,7 @@ function getEasFunctions(ctx) {
|
|
|
36
36
|
(0, installNodeModules_1.createInstallNodeModulesBuildFunction)(),
|
|
37
37
|
(0, prebuild_1.createPrebuildBuildFunction)(),
|
|
38
38
|
(0, downloadBuild_1.createDownloadBuildFunction)(),
|
|
39
|
+
(0, repack_1.createRepackBuildFunction)(),
|
|
39
40
|
(0, configureEASUpdateIfInstalled_1.configureEASUpdateIfInstalledFunction)(),
|
|
40
41
|
(0, injectAndroidCredentials_1.injectAndroidCredentialsFunction)(),
|
|
41
42
|
(0, configureAndroidVersion_1.configureAndroidVersionFunction)(),
|
|
@@ -52,7 +53,6 @@ function getEasFunctions(ctx) {
|
|
|
52
53
|
(0, installPods_1.createInstallPodsBuildFunction)(),
|
|
53
54
|
(0, sendSlackMessage_1.createSendSlackMessageFunction)(),
|
|
54
55
|
(0, calculateEASUpdateRuntimeVersion_1.calculateEASUpdateRuntimeVersionFunction)(),
|
|
55
|
-
(0, repack_1.createRepackBuildFunction)(),
|
|
56
56
|
(0, createSubmissionEntity_1.createSubmissionEntityFunction)(),
|
|
57
57
|
];
|
|
58
58
|
if (ctx.hasBuildJob()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"easFunctions.js","sourceRoot":"","sources":["../../src/steps/easFunctions.ts"],"names":[],"mappings":";;;AAIA,+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
|
|
1
|
+
{"version":3,"file":"easFunctions.js","sourceRoot":"","sources":["../../src/steps/easFunctions.ts"],"names":[],"mappings":";;;AAIA,+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;AAE/D,SAAgB,eAAe,CAAC,GAAuB;IACrD,MAAM,SAAS,GAAG;QAChB,IAAA,sCAA2B,GAAE;QAC7B,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,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;KACjC,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;AA3CD,0CA2CC","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';\n\nexport function getEasFunctions(ctx: CustomBuildContext): BuildFunction[] {\n const functions = [\n createCheckoutBuildFunction(),\n createUploadArtifactBuildFunction(ctx),\n createSetUpNpmrcBuildFunction(),\n createInstallNodeModulesBuildFunction(),\n createPrebuildBuildFunction(),\n createDownloadBuildFunction(),\n createRepackBuildFunction(),\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\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"]}
|
|
@@ -35,7 +35,9 @@ function createEasMaestroTestFunctionGroup(buildToolsContext) {
|
|
|
35
35
|
];
|
|
36
36
|
if (buildToolsContext.job.platform === eas_build_job_1.Platform.IOS) {
|
|
37
37
|
steps.push((0, startIosSimulator_1.createStartIosSimulatorBuildFunction)().createBuildStepFromFunctionCall(globalCtx));
|
|
38
|
-
const searchPath = (_a = inputs.app_path.
|
|
38
|
+
const searchPath = (_a = inputs.app_path.getValue({
|
|
39
|
+
interpolationContext: globalCtx.getInterpolationContext(),
|
|
40
|
+
})) !== null && _a !== void 0 ? _a : 'ios/build/Build/Products/*simulator/*.app';
|
|
39
41
|
steps.push(new steps_1.BuildStep(globalCtx, {
|
|
40
42
|
id: steps_1.BuildStep.getNewId(),
|
|
41
43
|
name: 'install_app',
|
|
@@ -62,14 +64,19 @@ function createEasMaestroTestFunctionGroup(buildToolsContext) {
|
|
|
62
64
|
}));
|
|
63
65
|
}
|
|
64
66
|
else if (buildToolsContext.job.platform === eas_build_job_1.Platform.ANDROID) {
|
|
65
|
-
|
|
67
|
+
const system_image_package = inputs.android_emulator_system_image_package.getValue({
|
|
68
|
+
interpolationContext: globalCtx.getInterpolationContext(),
|
|
69
|
+
});
|
|
70
|
+
steps.push((0, startAndroidEmulator_1.createStartAndroidEmulatorBuildFunction)().createBuildStepFromFunctionCall(globalCtx, system_image_package
|
|
66
71
|
? {
|
|
67
72
|
callInputs: {
|
|
68
|
-
system_image_package
|
|
73
|
+
system_image_package,
|
|
69
74
|
},
|
|
70
75
|
}
|
|
71
76
|
: undefined));
|
|
72
|
-
const searchPath = (_b = inputs.app_path.
|
|
77
|
+
const searchPath = (_b = inputs.app_path.getValue({
|
|
78
|
+
interpolationContext: globalCtx.getInterpolationContext(),
|
|
79
|
+
})) !== null && _b !== void 0 ? _b : 'android/app/build/outputs/**/*.apk';
|
|
73
80
|
steps.push(new steps_1.BuildStep(globalCtx, {
|
|
74
81
|
id: steps_1.BuildStep.getNewId(),
|
|
75
82
|
name: 'install_app',
|
|
@@ -97,7 +104,9 @@ function createEasMaestroTestFunctionGroup(buildToolsContext) {
|
|
|
97
104
|
`,
|
|
98
105
|
}));
|
|
99
106
|
}
|
|
100
|
-
const flowPaths = `${inputs.flow_path.
|
|
107
|
+
const flowPaths = `${inputs.flow_path.getValue({
|
|
108
|
+
interpolationContext: globalCtx.getInterpolationContext(),
|
|
109
|
+
})}`
|
|
101
110
|
.split('\n') // It's easy to get an empty line with YAML
|
|
102
111
|
.filter((entry) => entry);
|
|
103
112
|
for (const flowPath of flowPaths) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maestroTest.js","sourceRoot":"","sources":["../../../src/steps/functionGroups/maestroTest.ts"],"names":[],"mappings":";;;AAAA,uCAKqB;AACrB,uDAA+C;AAG/C,gEAAgF;AAChF,sEAAsF;AACtF,4EAA4F;AAC5F,gEAAgF;AAEhF,SAAgB,iCAAiC,CAC/C,iBAAqC;IAErC,OAAO,IAAI,0BAAkB,CAAC;QAC5B,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,cAAc;QAClB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,EAAE,EAAE,WAAW;gBACf,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,EAAE,EAAE,uCAAuC;gBAC3C,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;QACD,qCAAqC,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;YAC/D,MAAM,KAAK,GAAgB;gBACzB,IAAA,kDAAiC,GAAE,CAAC,+BAA+B,CAAC,SAAS,CAAC;aAC/E,CAAC;YAEF,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,KAAK,wBAAQ,CAAC,GAAG,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CACR,IAAA,wDAAoC,GAAE,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAClF,CAAC;gBACF,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"maestroTest.js","sourceRoot":"","sources":["../../../src/steps/functionGroups/maestroTest.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BuildFunctionGroup,\n BuildStep,\n BuildStepInput,\n BuildStepInputValueTypeName,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\n\nimport { CustomBuildContext } from '../../customBuildContext';\nimport { createInstallMaestroBuildFunction } from '../functions/installMaestro';\nimport { createStartIosSimulatorBuildFunction } from '../functions/startIosSimulator';\nimport { createStartAndroidEmulatorBuildFunction } from '../functions/startAndroidEmulator';\nimport { createUploadArtifactBuildFunction } from '../functions/uploadArtifact';\n\nexport function createEasMaestroTestFunctionGroup(\n buildToolsContext: CustomBuildContext\n): BuildFunctionGroup {\n return new BuildFunctionGroup({\n namespace: 'eas',\n id: 'maestro_test',\n inputProviders: [\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'flow_path',\n required: true,\n }),\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'app_path',\n required: false,\n }),\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'android_emulator_system_image_package',\n required: false,\n }),\n ],\n createBuildStepsFromFunctionGroupCall: (globalCtx, { inputs }) => {\n const steps: BuildStep[] = [\n createInstallMaestroBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n ];\n\n if (buildToolsContext.job.platform === Platform.IOS) {\n steps.push(\n createStartIosSimulatorBuildFunction().createBuildStepFromFunctionCall(globalCtx)\n );\n const searchPath =\n inputs.app_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n }) ?? 'ios/build/Build/Products/*simulator/*.app';\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'install_app',\n displayName: `Install app to Simulator`,\n command: `\n # shopt -s nullglob is necessary not to try to install\n # SEARCH_PATH literally if there are no matching files.\n shopt -s nullglob\n\n SEARCH_PATH=\"${searchPath}\"\n FILES_FOUND=false\n\n for APP_PATH in $SEARCH_PATH; do\n FILES_FOUND=true\n echo \"Installing \\\\\"$APP_PATH\\\\\"\"\n xcrun simctl install booted \"$APP_PATH\"\n done\n\n if ! $FILES_FOUND; then\n echo \"No files found matching \\\\\"$SEARCH_PATH\\\\\". Are you sure you've built a Simulator app?\"\n exit 1\n fi\n `,\n })\n );\n } else if (buildToolsContext.job.platform === Platform.ANDROID) {\n const system_image_package = inputs.android_emulator_system_image_package.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n });\n steps.push(\n createStartAndroidEmulatorBuildFunction().createBuildStepFromFunctionCall(\n globalCtx,\n system_image_package\n ? {\n callInputs: {\n system_image_package,\n },\n }\n : undefined\n )\n );\n const searchPath =\n inputs.app_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n }) ?? 'android/app/build/outputs/**/*.apk';\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'install_app',\n displayName: `Install app to Emulator`,\n command: `\n # shopt -s globstar is necessary to add /**/ support\n shopt -s globstar\n # shopt -s nullglob is necessary not to try to install\n # SEARCH_PATH literally if there are no matching files.\n shopt -s nullglob\n\n SEARCH_PATH=\"${searchPath}\"\n FILES_FOUND=false\n\n for APP_PATH in $SEARCH_PATH; do\n FILES_FOUND=true\n echo \"Installing \\\\\"$APP_PATH\\\\\"\"\n adb install \"$APP_PATH\"\n done\n\n if ! $FILES_FOUND; then\n echo \"No files found matching \\\\\"$SEARCH_PATH\\\\\". Are you sure you've built an Emulator app?\"\n exit 1\n fi\n `,\n })\n );\n }\n\n const flowPaths = `${inputs.flow_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n })}`\n .split('\\n') // It's easy to get an empty line with YAML\n .filter((entry) => entry);\n\n for (const flowPath of flowPaths) {\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'maestro_test',\n ifCondition: '${ always() }',\n displayName: `maestro test ${flowPath}`,\n command: `maestro test ${flowPath}`,\n })\n );\n }\n\n steps.push(\n createUploadArtifactBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx,\n {\n ifCondition: '${ always() }',\n name: 'Upload Maestro test results',\n callInputs: {\n path: '${ eas.env.HOME }/.maestro/tests',\n ignore_error: true,\n type: 'build-artifact',\n },\n }\n )\n );\n\n return steps;\n },\n });\n}\n"]}
|
|
@@ -60,7 +60,7 @@ function createSubmissionEntityFunction() {
|
|
|
60
60
|
stepsCtx.logger.error('Failed to create submission entity: no build ID provided');
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
const workflowJobId = stepsCtx.global.
|
|
63
|
+
const workflowJobId = stepsCtx.global.env.__WORKFLOW_JOB_ID;
|
|
64
64
|
if (!workflowJobId) {
|
|
65
65
|
stepsCtx.logger.error('Failed to create submission entity: no workflow job ID found');
|
|
66
66
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSubmissionEntity.js","sourceRoot":"","sources":["../../../src/steps/functions/createSubmissionEntity.ts"],"names":[],"mappings":";;;AAAA,uCAAyF;AACzF,2CAA4C;AAE5C,qEAAkE;AAElE,SAAgB,8BAA8B;IAC5C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,0BAA0B;QAChC,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,UAAU;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,IAAI;aACf,CAAC;YAEF,0BAA0B;YAC1B,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,OAAO;gBACX,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,gBAAgB;gBACpB,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,SAAS;gBACb,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,6BAA6B;gBACjC,oBAAoB,EAAE,mCAA2B,CAAC,OAAO;gBACzD,QAAQ,EAAE,KAAK;aAChB,CAAC;YAEF,sBAAsB;YACtB,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,mBAAmB;gBACvB,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,oBAAoB;gBACxB,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;YACjC,MAAM,gBAAgB,GAAG,MAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,0CAAE,gBAAgB,CAAC;YACrF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;gBACzF,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"createSubmissionEntity.js","sourceRoot":"","sources":["../../../src/steps/functions/createSubmissionEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { asyncResult } from '@expo/results';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\n\nexport function createSubmissionEntityFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'create_submission_entity',\n name: 'Create Submission Entity',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'build_id',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: true,\n }),\n\n // AndroidSubmissionConfig\n BuildStepInput.createProvider({\n id: 'track',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'release_status',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'rollout',\n allowedValueTypeName: BuildStepInputValueTypeName.NUMBER,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'changes_not_sent_for_review',\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n required: false,\n }),\n\n // IosSubmissionConfig\n BuildStepInput.createProvider({\n id: 'apple_id_username',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'asc_app_identifier',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n ],\n fn: async (stepsCtx, { inputs }) => {\n const robotAccessToken = stepsCtx.global.staticContext.job.secrets?.robotAccessToken;\n if (!robotAccessToken) {\n stepsCtx.logger.error('Failed to create submission entity: no robot access token found');\n return;\n }\n\n const buildId = inputs.build_id.value;\n if (!buildId) {\n stepsCtx.logger.error('Failed to create submission entity: no build ID provided');\n return;\n }\n\n const workflowJobId = stepsCtx.global.env.__WORKFLOW_JOB_ID;\n if (!workflowJobId) {\n stepsCtx.logger.error('Failed to create submission entity: no workflow job ID found');\n return;\n }\n\n // This is supposed to provide fallback for `''` -> `undefined`.\n // We _not_ want to use nullish coalescing.\n /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n const track = inputs.track.value || undefined;\n const releaseStatus = inputs.release_status.value || undefined;\n const rollout = inputs.rollout.value || undefined;\n const changesNotSentForReview = inputs.changes_not_sent_for_review.value || undefined;\n\n const appleIdUsername = inputs.apple_id_username.value || undefined;\n const ascAppIdentifier = inputs.asc_app_identifier.value || undefined;\n /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */\n\n try {\n const response = await retryOnDNSFailure(fetch)(\n new URL('/v2/app-store-submissions/', stepsCtx.global.staticContext.expoApiServerURL),\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${robotAccessToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n workflowJobId,\n turtleBuildId: buildId,\n // We can pass mixed object here because the configs are disjoint.\n config: {\n // AndroidSubmissionConfig\n track,\n releaseStatus,\n rollout,\n changesNotSentForReview,\n\n // IosSubmissionConfig\n appleIdUsername,\n ascAppIdentifier,\n },\n }),\n }\n );\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(\n `Unexpected response from server (${response.status}): ${textResult.value}`\n );\n }\n\n const jsonResult = await asyncResult(response.json());\n if (!jsonResult.ok) {\n stepsCtx.logger.warn(\n `Submission created. Failed to parse response. ${jsonResult.reason}`\n );\n return;\n }\n\n const data = jsonResult.value.data;\n stepsCtx.logger.info(`Submission created:\\n ID: ${data.id}\\n URL: ${data.url}`);\n } catch (e) {\n stepsCtx.logger.error(`Failed to create submission entity. ${e}`);\n }\n },\n });\n}\n"]}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { BuildFunction } from '@expo/steps';
|
|
3
3
|
import { bunyan } from '@expo/logger';
|
|
4
4
|
export declare function createDownloadBuildFunction(): BuildFunction;
|
|
5
|
-
export declare function downloadBuildAsync({ logger, buildId, expoApiServerURL,
|
|
5
|
+
export declare function downloadBuildAsync({ logger, buildId, expoApiServerURL, robotAccessToken, extensions, }: {
|
|
6
6
|
logger: bunyan;
|
|
7
7
|
buildId: string;
|
|
8
8
|
expoApiServerURL: string;
|
|
9
|
-
|
|
9
|
+
robotAccessToken: string | null;
|
|
10
10
|
extensions: string[];
|
|
11
11
|
}): Promise<{
|
|
12
12
|
artifactPath: string;
|
|
@@ -44,8 +44,8 @@ function createDownloadBuildFunction() {
|
|
|
44
44
|
required: true,
|
|
45
45
|
}),
|
|
46
46
|
],
|
|
47
|
-
fn: async (stepsCtx, { inputs, outputs
|
|
48
|
-
var _a;
|
|
47
|
+
fn: async (stepsCtx, { inputs, outputs }) => {
|
|
48
|
+
var _a, _b;
|
|
49
49
|
const { logger } = stepsCtx;
|
|
50
50
|
const extensions = zod_1.z.array(zod_1.z.string()).parse(inputs.extensions.value);
|
|
51
51
|
logger.info(`Expected extensions: [${extensions.join(', ')}]`);
|
|
@@ -55,7 +55,7 @@ function createDownloadBuildFunction() {
|
|
|
55
55
|
logger,
|
|
56
56
|
buildId,
|
|
57
57
|
expoApiServerURL: stepsCtx.global.staticContext.expoApiServerURL,
|
|
58
|
-
|
|
58
|
+
robotAccessToken: (_b = (_a = stepsCtx.global.staticContext.job.secrets) === null || _a === void 0 ? void 0 : _a.robotAccessToken) !== null && _b !== void 0 ? _b : null,
|
|
59
59
|
extensions,
|
|
60
60
|
});
|
|
61
61
|
outputs.artifact_path.set(artifactPath);
|
|
@@ -63,10 +63,10 @@ function createDownloadBuildFunction() {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
exports.createDownloadBuildFunction = createDownloadBuildFunction;
|
|
66
|
-
async function downloadBuildAsync({ logger, buildId, expoApiServerURL,
|
|
66
|
+
async function downloadBuildAsync({ logger, buildId, expoApiServerURL, robotAccessToken, extensions, }) {
|
|
67
67
|
const downloadDestinationDirectory = await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'download_build-downloaded-'));
|
|
68
68
|
const response = await (0, retryOnDNSFailure_1.retryOnDNSFailure)(node_fetch_1.default)(new URL(`/v2/artifacts/eas/${buildId}`, expoApiServerURL), {
|
|
69
|
-
headers:
|
|
69
|
+
headers: robotAccessToken ? { Authorization: `Bearer ${robotAccessToken}` } : undefined,
|
|
70
70
|
});
|
|
71
71
|
if (!response.ok) {
|
|
72
72
|
const textResult = await (0, results_1.asyncResult)(response.text());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadBuild.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadBuild.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,sDAAyB;AACzB,sDAAyB;AACzB,oDAA4B;AAC5B,+BAAiC;AAEjC,uCAKqB;AACrB,2CAA4C;AAC5C,4DAA+B;AAC/B,yCAAiC;AACjC,6BAAwB;AAExB,4DAAkE;AAElE,qEAAkE;AAClE,qDAAoD;AACpD,6CAAyE;AACzE,iDAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,gBAAM,CAAC,QAAQ,CAAC,CAAC;AAElD,SAAgB,2BAA2B;IACzC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,YAAY;gBAChB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;aAC3C,CAAC;SACH;QACD,eAAe,EAAE;YACf,uBAAe,CAAC,cAAc,CAAC;gBAC7B,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"downloadBuild.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadBuild.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport stream from 'stream';\nimport { promisify } from 'util';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\nimport { asyncResult } from '@expo/results';\nimport fetch from 'node-fetch';\nimport { glob } from 'fast-glob';\nimport { z } from 'zod';\nimport { bunyan } from '@expo/logger';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\nimport { formatBytes } from '../../utils/artifacts';\nimport { decompressTarAsync, isFileTarGzAsync } from '../../utils/files';\nimport { pluralize } from '../../utils/strings';\n\nconst streamPipeline = promisify(stream.pipeline);\n\nexport function createDownloadBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'download_build',\n name: 'Download build',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'build_id',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'extensions',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: ['apk', 'aab', 'ipa', 'app'],\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'artifact_path',\n required: true,\n }),\n ],\n fn: async (stepsCtx, { inputs, outputs }) => {\n const { logger } = stepsCtx;\n\n const extensions = z.array(z.string()).parse(inputs.extensions.value);\n logger.info(`Expected extensions: [${extensions.join(', ')}]`);\n const buildId = z.string().uuid().parse(inputs.build_id.value);\n logger.info(`Downloading build ${buildId}...`);\n\n const { artifactPath } = await downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL: stepsCtx.global.staticContext.expoApiServerURL,\n robotAccessToken: stepsCtx.global.staticContext.job.secrets?.robotAccessToken ?? null,\n extensions,\n });\n\n outputs.artifact_path.set(artifactPath);\n },\n });\n}\n\nexport async function downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL,\n robotAccessToken,\n extensions,\n}: {\n logger: bunyan;\n buildId: string;\n expoApiServerURL: string;\n robotAccessToken: string | null;\n extensions: string[];\n}): Promise<{ artifactPath: string }> {\n const downloadDestinationDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-downloaded-')\n );\n\n const response = await retryOnDNSFailure(fetch)(\n new URL(`/v2/artifacts/eas/${buildId}`, expoApiServerURL),\n {\n headers: robotAccessToken ? { Authorization: `Bearer ${robotAccessToken}` } : undefined,\n }\n );\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(`Unexpected response from server (${response.status}): ${textResult.value}`);\n }\n\n // URL may contain percent-encoded characters, e.g. my%20file.apk\n // this replaces all non-alphanumeric characters (excluding dot) with underscore\n const archiveFilename = path\n .basename(new URL(response.url).pathname)\n .replace(/([^a-z0-9.-]+)/gi, '_');\n const archivePath = path.join(downloadDestinationDirectory, archiveFilename);\n\n await streamPipeline(response.body, fs.createWriteStream(archivePath));\n\n const { size } = await fs.promises.stat(archivePath);\n\n logger.info(`Downloaded ${archivePath} (${formatBytes(size)} bytes).`);\n\n const isFileATarGzArchive = await isFileTarGzAsync(archivePath);\n\n if (!isFileATarGzArchive) {\n logger.info(`Artifact is not a .tar.gz archive, skipping decompression and validation.`);\n return { artifactPath: archivePath };\n }\n\n const extractionDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-extracted-')\n );\n await decompressTarAsync({\n archivePath,\n destinationDirectory: extractionDirectory,\n });\n\n const matchingFiles = await glob(`**/*.(${extensions.join('|')})`, {\n absolute: true,\n cwd: extractionDirectory,\n onlyFiles: false,\n onlyDirectories: false,\n });\n\n if (matchingFiles.length === 0) {\n throw new UserFacingError(\n 'EAS_DOWNLOAD_BUILD_NO_MATCHING_FILES',\n `No ${extensions.map((ext) => `.${ext}`).join(', ')} entries found in the archive.`\n );\n }\n\n logger.info(\n `Found ${matchingFiles.length} matching ${pluralize(matchingFiles.length, 'entry')}:\\n${matchingFiles.map((f) => `- ${path.relative(extractionDirectory, f)}`).join('\\n')}`\n );\n\n return { artifactPath: matchingFiles[0] };\n}\n"]}
|
|
@@ -14,7 +14,8 @@ function createInstallPodsBuildFunction() {
|
|
|
14
14
|
fn: async (stepsCtx, { env }) => {
|
|
15
15
|
stepsCtx.logger.info('Installing pods');
|
|
16
16
|
const verboseFlag = stepsCtx.global.env['EAS_VERBOSE'] === '1' ? ['--verbose'] : [];
|
|
17
|
-
|
|
17
|
+
const cocoapodsDeploymentFlag = stepsCtx.global.env['POD_INSTALL_DEPLOYMENT'] === '1' ? ['--deployment'] : [];
|
|
18
|
+
await (0, turtle_spawn_1.default)('pod', ['install', ...verboseFlag, ...cocoapodsDeploymentFlag], {
|
|
18
19
|
logger: stepsCtx.logger,
|
|
19
20
|
env: {
|
|
20
21
|
...env,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installPods.js","sourceRoot":"","sources":["../../../src/steps/functions/installPods.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA4C;AAC5C,sEAAuC;AAEvC,SAAgB,8BAA8B;IAC5C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC9B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"installPods.js","sourceRoot":"","sources":["../../../src/steps/functions/installPods.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA4C;AAC5C,sEAAuC;AAEvC,SAAgB,8BAA8B;IAC5C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC9B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,uBAAuB,GAC3B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhF,MAAM,IAAA,sBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,GAAG,uBAAuB,CAAC,EAAE;gBAC1E,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,EAAE;oBACH,GAAG,GAAG;oBACN,IAAI,EAAE,aAAa;iBACpB;gBACD,GAAG,EAAE,QAAQ,CAAC,gBAAgB;gBAC9B,eAAe,EAAE,CAAC,IAAa,EAAE,EAAE;oBACjC,IACE,CAAC,IAAI;wBACL,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,EACtF,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA/BD,wEA+BC","sourcesContent":["import { BuildFunction } from '@expo/steps';\nimport spawn from '@expo/turtle-spawn';\n\nexport function createInstallPodsBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'install_pods',\n name: 'Install Pods',\n fn: async (stepsCtx, { env }) => {\n stepsCtx.logger.info('Installing pods');\n const verboseFlag = stepsCtx.global.env['EAS_VERBOSE'] === '1' ? ['--verbose'] : [];\n const cocoapodsDeploymentFlag =\n stepsCtx.global.env['POD_INSTALL_DEPLOYMENT'] === '1' ? ['--deployment'] : [];\n\n await spawn('pod', ['install', ...verboseFlag, ...cocoapodsDeploymentFlag], {\n logger: stepsCtx.logger,\n env: {\n ...env,\n LANG: 'en_US.UTF-8',\n },\n cwd: stepsCtx.workingDirectory,\n lineTransformer: (line?: string) => {\n if (\n !line ||\n /\\[!\\] '[\\w-]+' uses the unencrypted 'http' protocol to transfer the Pod\\./.exec(line)\n ) {\n return null;\n } else {\n return line;\n }\n },\n });\n },\n });\n}\n"]}
|
|
@@ -1,2 +1,20 @@
|
|
|
1
|
+
/// <reference types="bunyan" />
|
|
2
|
+
import { type Job } from '@expo/eas-build-job';
|
|
3
|
+
import { type bunyan } from '@expo/logger';
|
|
1
4
|
import { BuildFunction } from '@expo/steps';
|
|
5
|
+
import { type AndroidSigningOptions, type IosSigningOptions } from '@expo/repack-app';
|
|
2
6
|
export declare function createRepackBuildFunction(): BuildFunction;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves Android signing options from the job secrets.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveAndroidSigningOptionsAsync({ job, tmpDir, }: {
|
|
11
|
+
job: Job;
|
|
12
|
+
tmpDir: string;
|
|
13
|
+
}): Promise<AndroidSigningOptions | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves iOS signing options from the job secrets.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveIosSigningOptionsAsync({ job, logger, }: {
|
|
18
|
+
job: Job;
|
|
19
|
+
logger: bunyan;
|
|
20
|
+
}): Promise<IosSigningOptions | undefined>;
|