Compare commits

...
Author SHA1 Message Date
Stanisław Chmiela ce10c42329 Handle missing iOS provisioning profile in resigning 2026-07-07 12:45:18 +02:00
2 changed files with 18 additions and 12 deletions

No files matched your search

@@ -16,11 +16,12 @@ import ProvisioningProfile, {
import { BuildContext } from '../../context';
export interface Credentials {
applicationTargetProvisioningProfile: ProvisioningProfile<Ios.Job>;
/** null if not signing */
applicationTargetProvisioningProfile: ProvisioningProfile<Ios.Job> | null;
keychainPath: string;
targetProvisioningProfiles: TargetProvisioningProfiles;
distributionType: DistributionType;
teamId: string;
distributionType: DistributionType | null;
teamId: string | null;
}
export type TargetProvisioningProfiles = Record<string, ProvisioningProfileData>;
@@ -62,17 +63,15 @@ export default class IosCredentialsManager<TJob extends Ios.Job> {
targetProvisioningProfiles[target] = provisioningProfile.data;
}
const applicationTargetProvisioningProfile = this.getApplicationTargetProvisioningProfile();
// TODO: ensure that all dist types and team ids in the array are the same
const { distributionType, teamId } = applicationTargetProvisioningProfile.data;
const applicationTargetProvisioningProfile = this.getApplicationTargetProvisioningProfile();
return {
applicationTargetProvisioningProfile,
keychainPath: this.keychain.data.path,
targetProvisioningProfiles,
distributionType,
teamId,
distributionType: applicationTargetProvisioningProfile?.data.distributionType ?? null,
teamId: applicationTargetProvisioningProfile?.data.teamId ?? null,
};
}
@@ -155,9 +154,9 @@ export default class IosCredentialsManager<TJob extends Ios.Job> {
}
}
private getApplicationTargetProvisioningProfile(): ProvisioningProfile<TJob> {
private getApplicationTargetProvisioningProfile(): ProvisioningProfile<TJob> | null {
// sorting works because bundle ids share common prefix
const sorted = orderBy(this.provisioningProfiles, 'data.bundleIdentifier', 'asc');
return sorted[0];
return sorted[0] ?? null;
}
}
+9 -2
View File
@@ -1,4 +1,4 @@
import { Env, Ios } from '@expo/eas-build-job';
import { Env, Ios, UserError } from '@expo/eas-build-job';
import { bunyan } from '@expo/logger';
import spawn, { SpawnResult } from '@expo/turtle-spawn';
import fs from 'fs-extra';
@@ -65,7 +65,14 @@ export async function runFastlaneResign<TJob extends Ios.Job>(
ctx: BuildContext<TJob>,
{ credentials, ipaPath }: { credentials: Credentials; ipaPath: string }
): Promise<void> {
const { certificateCommonName } = credentials.applicationTargetProvisioningProfile.data;
const applicationTargetProvisioningProfile = credentials.applicationTargetProvisioningProfile;
if (!applicationTargetProvisioningProfile) {
throw new UserError(
'MISSING_PROVISIONING_PROFILE',
'Provisioning profile must exist for resigning. Configure credentials with `eas credentials` and try again.'
);
}
const { certificateCommonName } = applicationTargetProvisioningProfile.data;
const fastlaneDirPath = path.join(ctx.buildDirectory, 'fastlane');
await fs.ensureDir(fastlaneDirPath);