Compare commits

...
Author SHA1 Message Date
Wojciech Kozyra a44720daba wip 2022-07-04 16:34:55 +02:00
Wojciech Kozyra 91a4538931 add submit info to json only output 2022-07-04 16:08:16 +02:00
7 changed files with 47 additions and 49 deletions

No files matched your search

@@ -22,6 +22,7 @@ import { checkExpoSdkIsSupportedAsync } from '../project/expoSdk';
import { validateMetroConfigForManagedWorkflowAsync } from '../project/metroConfig';
import { createSubmissionContextAsync } from '../submit/context';
import {
exitWithNonZeroCodeIfSomeSubmissionsDidntFinish,
submitAsync,
waitToCompleteAsync as waitForSubmissionsToCompleteAsync,
} from '../submit/submit';
@@ -96,7 +97,7 @@ export async function runBuildAndSubmitAsync(projectDir: string, flags: BuildFla
});
const startedBuilds: {
build: BuildFragment;
build: BuildFragment & { submission?: SubmissionFragment };
buildProfile: ProfileData<'build'>;
}[] = [];
const buildCtxByPlatform: { [p in AppPlatform]?: BuildContext<Platform> } = {};
@@ -149,6 +150,7 @@ export async function runBuildAndSubmitAsync(projectDir: string, flags: BuildFla
submitProfile,
nonInteractive: flags.nonInteractive,
});
startedBuild.build.submission = submission;
submissions.push(submission);
}
@@ -169,16 +171,31 @@ export async function runBuildAndSubmitAsync(projectDir: string, flags: BuildFla
buildIds: startedBuilds.map(({ build }) => build.id),
accountName,
});
printBuildResults(builds, flags.json);
if (!flags.json) {
printBuildResults(builds);
}
const haveAllBuildsFailedOrCanceled = builds.every(
build => build?.status && [BuildStatus.Errored, BuildStatus.Canceled].includes(build?.status)
);
if (haveAllBuildsFailedOrCanceled || !flags.autoSubmit) {
if (flags.json) {
printJsonOnlyOutput(builds);
}
exitWithNonZeroCodeIfSomeBuildsFailed(builds);
} else {
// the following function also exits with non zero code if any of the submissions failed
await waitForSubmissionsToCompleteAsync(submissions);
const completedSubmissions = await waitForSubmissionsToCompleteAsync(submissions);
if (flags.json) {
printJsonOnlyOutput(
builds.map(build => ({
...build,
submission: completedSubmissions.find(
submission => submission.platform === build?.platform
),
}))
);
}
exitWithNonZeroCodeIfSomeSubmissionsDidntFinish(completedSubmissions);
}
}
@@ -14,7 +14,6 @@ import {
} from '../../graphql/generated';
import Log, { learnMore } from '../../log';
import { appPlatformDisplayNames, appPlatformEmojis } from '../../platform';
import { printJsonOnlyOutput } from '../../utils/json';
import { getBuildLogsUrl, getInternalDistributionInstallUrl } from './url';
export function printLogsUrls(builds: BuildFragment[]): void {
@@ -32,18 +31,14 @@ export function printLogsUrls(builds: BuildFragment[]): void {
}
}
export function printBuildResults(builds: (BuildFragment | null)[], json: boolean): void {
if (json) {
printJsonOnlyOutput(builds);
export function printBuildResults(builds: (BuildFragment | null)[]): void {
Log.newLine();
if (builds.length === 1) {
const [build] = builds;
assert(build, 'Build should be defined');
printBuildResult(build);
} else {
Log.newLine();
if (builds.length === 1) {
const [build] = builds;
assert(build, 'Build should be defined');
printBuildResult(build);
} else {
(builds.filter(i => i) as BuildFragment[]).forEach(build => printBuildResult(build));
}
(builds.filter(i => i) as BuildFragment[]).forEach(build => printBuildResult(build));
}
}
+9 -2
View File
@@ -16,7 +16,11 @@ import {
import { getExpoConfig } from '../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../project/projectUtils';
import { SubmitArchiveFlags, createSubmissionContextAsync } from '../submit/context';
import { submitAsync, waitToCompleteAsync } from '../submit/submit';
import {
exitWithNonZeroCodeIfSomeSubmissionsDidntFinish,
submitAsync,
waitToCompleteAsync,
} from '../submit/submit';
import { printSubmissionDetailsUrls } from '../submit/utils/urls';
import { getProfilesAsync } from '../utils/profiles';
@@ -130,7 +134,10 @@ export default class Submit extends EasCommand {
printSubmissionDetailsUrls(submissions);
if (flags.wait) {
await waitToCompleteAsync(submissions, { verbose: flags.verbose });
const completedSubmissions = await waitToCompleteAsync(submissions, {
verbose: flags.verbose,
});
exitWithNonZeroCodeIfSomeSubmissionsDidntFinish(completedSubmissions);
}
}
@@ -55,7 +55,7 @@ export async function getApplicationIdFromBareAsync(
if (applicationIdSuffix) {
throw new Error('"applicationIdSuffix" in app/build.gradle is not supported.');
}
const applicationId = gradleUtils.resolveConfigValue(
const applicationId = process.env.EAS_BUILD_APPLICATION_ID_OVERRIDES ?? gradleUtils.resolveConfigValue(
buildGradle,
'applicationId',
gradleContext.flavor
@@ -40,7 +40,7 @@ export async function resolveGradleBuildContextAsync(
} catch (err: any) {
Log.warn(`Unable to read gradle project config: ${err.message}.`);
Log.warn('Values from app/build.gradle might be resolved incorrectly.');
return undefined;
return { moduleName: gradleUtils.DEFAULT_MODULE_NAME, flavor: 'versioning' };
}
} else {
return { moduleName: gradleUtils.DEFAULT_MODULE_NAME };
+3 -26
View File
@@ -1,31 +1,8 @@
import { AndroidConfig, IOSConfig } from '@expo/config-plugins';
import { Platform, Workflow } from '@expo/eas-build-job';
import fs from 'fs-extra';
import path from 'path';
import { getVcsClient } from '../vcs';
export async function resolveWorkflowAsync(
projectDir: string,
platform: Platform
_projectDir: string,
_platform: Platform
): Promise<Workflow> {
let platformWorkflowMarker;
try {
platformWorkflowMarker =
platform === Platform.ANDROID
? await AndroidConfig.Paths.getAndroidManifestAsync(projectDir)
: IOSConfig.Paths.getPBXProjectPath(projectDir);
} catch {
return Workflow.MANAGED;
}
if (await fs.pathExists(platformWorkflowMarker)) {
return (await getVcsClient().isFileIgnoredAsync(
path.relative(projectDir, platformWorkflowMarker)
))
? Workflow.MANAGED
: Workflow.GENERIC;
} else {
return Workflow.MANAGED;
}
return Workflow.GENERIC;
}
+5 -3
View File
@@ -35,7 +35,7 @@ export async function submitAsync<T extends Platform>(
export async function waitToCompleteAsync(
submissions: SubmissionFragment[],
{ verbose = false }: { verbose?: boolean } = {}
): Promise<void> {
): Promise<SubmissionFragment[]> {
Log.newLine();
const completedSubmissions = await waitForSubmissionsEndAsync(submissions);
const moreSubmissions = completedSubmissions.length > 1;
@@ -60,7 +60,7 @@ export async function waitToCompleteAsync(
Log.newLine();
}
}
exitWithNonZeroCodeIfSomeSubmissionsDidntFinish(completedSubmissions);
return completedSubmissions;
}
function printInstructionsForAndroidSubmission(submission: SubmissionFragment): void {
@@ -87,7 +87,9 @@ function printInstructionsForIosSubmission(submission: SubmissionFragment): void
}
}
function exitWithNonZeroCodeIfSomeSubmissionsDidntFinish(submissions: SubmissionFragment[]): void {
export function exitWithNonZeroCodeIfSomeSubmissionsDidntFinish(
submissions: SubmissionFragment[]
): void {
const nonFinishedSubmissions = submissions.filter(
({ status }) => status !== SubmissionStatus.Finished
);