diff --git a/CHANGELOG.md b/CHANGELOG.md index 7221590c35..fae1cd77e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ This is the log of notable changes to EAS CLI and related packages. ### ๐Ÿงน Chores +- Further no longer require owner field for SDK >= 53 or canary. ([#3017](https://github.com/expo/eas-cli/pull/3017) by [@wschurman](https://github.com/wschurman)) + ## [16.6.1](https://github.com/expo/eas-cli/releases/tag/v16.6.1) - 2025-05-14 ### ๐Ÿ› Bug fixes diff --git a/packages/eas-cli/src/build/android/prepareJob.ts b/packages/eas-cli/src/build/android/prepareJob.ts index c05ffb9378..c1bb9c84f1 100644 --- a/packages/eas-cli/src/build/android/prepareJob.ts +++ b/packages/eas-cli/src/build/android/prepareJob.ts @@ -12,7 +12,7 @@ import slash from 'slash'; import { AndroidCredentials } from '../../credentials/android/AndroidCredentialsProvider'; import { getCustomBuildConfigPathForJob } from '../../project/customBuildConfig'; -import { getUsername } from '../../project/projectUtils'; +import { getUsernameForBuildMetadataAndBuildJob } from '../../project/projectUtils'; import { BuildContext } from '../context'; interface JobData { @@ -29,7 +29,7 @@ export async function prepareJobAsync( ctx: BuildContext, jobData: JobData ): Promise { - const username = getUsername(ctx.exp, ctx.user); + const username = getUsernameForBuildMetadataAndBuildJob(ctx.user); const buildProfile: BuildProfile = ctx.buildProfile; const projectRootDirectory = slash(path.relative(await ctx.vcsClient.getRootPathAsync(), ctx.projectDir)) || '.'; diff --git a/packages/eas-cli/src/build/ios/prepareJob.ts b/packages/eas-cli/src/build/ios/prepareJob.ts index 384c7b27ce..aa8c8d3306 100644 --- a/packages/eas-cli/src/build/ios/prepareJob.ts +++ b/packages/eas-cli/src/build/ios/prepareJob.ts @@ -14,7 +14,7 @@ import slash from 'slash'; import { IosCredentials, TargetCredentials } from '../../credentials/ios/types'; import { IosJobSecretsInput } from '../../graphql/generated'; import { getCustomBuildConfigPathForJob } from '../../project/customBuildConfig'; -import { getUsername } from '../../project/projectUtils'; +import { getUsernameForBuildMetadataAndBuildJob } from '../../project/projectUtils'; import { BuildContext } from '../context'; interface JobData { @@ -32,7 +32,7 @@ export async function prepareJobAsync( ctx: BuildContext, jobData: JobData ): Promise { - const username = getUsername(ctx.exp, ctx.user); + const username = getUsernameForBuildMetadataAndBuildJob(ctx.user); const buildProfile: BuildProfile = ctx.buildProfile; const projectRootDirectory = slash(path.relative(await ctx.vcsClient.getRootPathAsync(), ctx.projectDir)) || '.'; diff --git a/packages/eas-cli/src/build/metadata.ts b/packages/eas-cli/src/build/metadata.ts index 8d3cbe4420..60b3bf7195 100644 --- a/packages/eas-cli/src/build/metadata.ts +++ b/packages/eas-cli/src/build/metadata.ts @@ -9,7 +9,10 @@ import { maybeResolveVersionsAsync as maybeResolveIosVersionsAsync } from './ios import { LocalBuildMode } from './local'; import { BuildDistributionType } from './types'; import Log from '../log'; -import { getUsername, isExpoUpdatesInstalled } from '../project/projectUtils'; +import { + getUsernameForBuildMetadataAndBuildJob, + isExpoUpdatesInstalled, +} from '../project/projectUtils'; import { readChannelSafelyAsync as readAndroidChannelSafelyAsync } from '../update/android/UpdatesModule'; import { readChannelSafelyAsync as readIosChannelSafelyAsync } from '../update/ios/UpdatesModule'; import { easCliVersion } from '../utils/easCli'; @@ -48,7 +51,7 @@ export async function collectMetadataAsync( ctx.localBuildOptions.localBuildMode === LocalBuildMode.INTERNAL ? false : await ctx.vcsClient.hasUncommittedChangesAsync(), - username: getUsername(ctx.exp, ctx.user), + username: getUsernameForBuildMetadataAndBuildJob(ctx.user), message: ctx.message, ...(ctx.platform === Platform.IOS && { iosEnterpriseProvisioning: resolveIosEnterpriseProvisioning( diff --git a/packages/eas-cli/src/commandUtils/context/contextUtils/getProjectIdAsync.ts b/packages/eas-cli/src/commandUtils/context/contextUtils/getProjectIdAsync.ts index da6db3bb26..7963f4c76f 100644 --- a/packages/eas-cli/src/commandUtils/context/contextUtils/getProjectIdAsync.ts +++ b/packages/eas-cli/src/commandUtils/context/contextUtils/getProjectIdAsync.ts @@ -180,7 +180,7 @@ export async function validateOrSetProjectIdAsync({ Log.warn('EAS project not configured.'); - const getAccountNameForEASProjectSync = (exp: ExpoConfig, user: Actor): string => { + const getDefaultAccountNameForEASProject = (exp: ExpoConfig, user: Actor): string => { if (exp.owner) { return exp.owner; } @@ -191,7 +191,7 @@ export async function validateOrSetProjectIdAsync({ return user.username; case 'Robot': throw new Error( - 'The "owner" manifest property is required when using robot users. See: https://docs.expo.dev/versions/latest/config/app/#owner' + 'Must configure EAS project by running "eas init" before using a robot user to manage the project.' ); } }; @@ -199,7 +199,7 @@ export async function validateOrSetProjectIdAsync({ const projectId = await fetchOrCreateProjectIDForWriteToConfigWithConfirmationAsync( graphqlClient, { - accountName: getAccountNameForEASProjectSync(exp, actor), + accountName: getDefaultAccountNameForEASProject(exp, actor), projectName: exp.slug, }, { diff --git a/packages/eas-cli/src/project/projectUtils.ts b/packages/eas-cli/src/project/projectUtils.ts index 3a2316b623..66c0359598 100644 --- a/packages/eas-cli/src/project/projectUtils.ts +++ b/packages/eas-cli/src/project/projectUtils.ts @@ -13,19 +13,13 @@ import Log, { learnMore } from '../log'; import { Actor } from '../user/User'; import { expoCommandAsync } from '../utils/expoCli'; -export function getUsername(exp: ExpoConfig, user: Actor): string | undefined { +export function getUsernameForBuildMetadataAndBuildJob(user: Actor): string | undefined { switch (user.__typename) { case 'User': return user.username; case 'SSOUser': return user.username; case 'Robot': - // owner field is necessary to run `expo prebuild` - if (!exp.owner) { - throw new Error( - 'The "owner" manifest property is required when using robot users. See: https://docs.expo.dev/versions/latest/config/app/#owner' - ); - } // robot users don't have usernames return undefined; }