diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bca15309d..a002eecdd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This is the log of notable changes to EAS CLI and related packages. ### 🎉 New features - [eas-cli] Add `--refresh-ad-hoc-provisioning-profile` flag to refresh managed ad-hoc provisioning profiles from App Store Connect before gathering build credentials in non-interactive mode. ([#3716](https://github.com/expo/eas-cli/pull/3716) by [@sswrk](https://github.com/sswrk)) +- [eas-build-job] Add optional `refreshAdHocProvisioningProfile` field to iOS build jobs. ([#3717](https://github.com/expo/eas-cli/pull/3717) by [@sswrk](https://github.com/sswrk)) ### 🐛 Bug fixes diff --git a/packages/eas-build-job/src/__tests__/ios.test.ts b/packages/eas-build-job/src/__tests__/ios.test.ts index 32ec7589ec..5c94d623d4 100644 --- a/packages/eas-build-job/src/__tests__/ios.test.ts +++ b/packages/eas-build-job/src/__tests__/ios.test.ts @@ -534,4 +534,47 @@ describe('Ios.JobSchema', () => { expect(value).toMatchObject(job); expect(error).toBeFalsy(); }); + + test('accepts optional refreshAdHocProvisioningProfile', () => { + const job = { + secrets: { + buildCredentials, + }, + type: Workflow.GENERIC, + platform: Platform.IOS, + projectArchive: { + type: ArchiveSourceType.URL, + url: 'http://localhost:3000', + }, + projectRootDirectory: '.', + initiatingUserId: randomUUID(), + appId: randomUUID(), + refreshAdHocProvisioningProfile: true, + }; + + const { value, error } = Ios.JobSchema.validate(job, joiOptions); + expect(value.refreshAdHocProvisioningProfile).toBe(true); + expect(error).toBeFalsy(); + }); + + test('does not require refreshAdHocProvisioningProfile', () => { + const job = { + secrets: { + buildCredentials, + }, + type: Workflow.GENERIC, + platform: Platform.IOS, + projectArchive: { + type: ArchiveSourceType.URL, + url: 'http://localhost:3000', + }, + projectRootDirectory: '.', + initiatingUserId: randomUUID(), + appId: randomUUID(), + }; + + const { value, error } = Ios.JobSchema.validate(job, joiOptions); + expect(value.refreshAdHocProvisioningProfile).toBeUndefined(); + expect(error).toBeFalsy(); + }); }); diff --git a/packages/eas-build-job/src/ios.ts b/packages/eas-build-job/src/ios.ts index b9e75e51ad..bbf6341ea3 100644 --- a/packages/eas-build-job/src/ios.ts +++ b/packages/eas-build-job/src/ios.ts @@ -144,6 +144,8 @@ export interface Job { appId: string; environment?: string; + + refreshAdHocProvisioningProfile?: boolean; } const SecretsSchema = Joi.object({ @@ -229,6 +231,8 @@ export const JobSchema = Joi.object({ environment: Joi.string(), + refreshAdHocProvisioningProfile: Joi.boolean(), + workflowInterpolationContext: Joi.object().custom(workflowInterpolationContext => StaticWorkflowInterpolationContextZ.optional().parse(workflowInterpolationContext) ),