Skip to content

Commit 60943d6

Browse files
davideastzal1000
andauthored
fix(deploy): deploying with service account (#3396)
* fix(deploy): deploying with service account Deploying with service account was not possible, becouse no checks were made for GOOGLE_APPLICATION_CREDENTIALS env variable Fixes #3260 * fix(deploy): not activated gcloud service account Service account was not activated before deploying Fixes #3260 * conflicts * yarn lock --------- Co-authored-by: Zalán Horváth <[email protected]>
1 parent fe82747 commit 60943d6

File tree

1 file changed

+33
-35
lines changed

1 file changed

+33
-35
lines changed

src/schematics/deploy/actions.ts

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const deployToHosting = async (
8888
type: 'confirm',
8989
name: 'deployProject',
9090
message: 'Would you like to deploy your application to Firebase Hosting?'
91-
});
91+
}) as { deployProject: boolean };
9292

9393
if (!deployProject) { return; }
9494

@@ -253,11 +253,11 @@ export const deployToFunction = async (
253253
projectRoot: workspaceRoot,
254254
});
255255

256-
const { deployProject} = await inquirer.prompt({
256+
const { deployProject } = await inquirer.prompt({
257257
type: 'confirm',
258258
name: 'deployProject',
259259
message: 'Would you like to deploy your application to Firebase Hosting & Cloud Functions?'
260-
});
260+
}) as { deployProject: boolean };
261261

262262
if (!deployProject) { return; }
263263
}
@@ -390,52 +390,50 @@ export default async function deploy(
390390
options: DeployBuilderOptions,
391391
firebaseToken?: string,
392392
) {
393-
if (!firebaseToken) {
393+
if (!firebaseToken && !process.env.GOOGLE_APPLICATION_CREDENTIALS) {
394394
await firebaseTools.login();
395395
const user = await firebaseTools.login({ projectRoot: context.workspaceRoot });
396396
console.log(`Logged into Firebase as ${user.email}.`);
397397
}
398398

399-
if (options.version && options.version >= 2) {
400-
if (lt(firebaseTools.cli.version(), '12.2.0')) {
401-
throw new SchematicsException('firebase-tools version 12.2+ is required.');
402-
}
403-
process.env.FIREBASE_FRAMEWORK_BUILD_TARGET = (prerenderBuildTarget || serverBuildTarget || staticBuildTarget).name;
404-
} else {
405-
if (prerenderBuildTarget) {
406-
407-
const run = await context.scheduleTarget(
408-
targetFromTargetString(prerenderBuildTarget.name),
409-
prerenderBuildTarget.options
410-
);
411-
await run.result;
399+
if (!firebaseToken && process.env.GOOGLE_APPLICATION_CREDENTIALS) {
400+
await spawnAsync(`gcloud auth activate-service-account --key-file ${process.env.GOOGLE_APPLICATION_CREDENTIALS}`);
401+
console.log(`Using Google Application Credentials.`);
402+
}
412403

413-
} else {
404+
if (prerenderBuildTarget) {
405+
const run = await context.scheduleTarget(
406+
targetFromTargetString(prerenderBuildTarget.name),
407+
prerenderBuildTarget.options
408+
);
409+
await run.result;
414410

415-
if (!context.target) {
416-
throw new Error('Cannot execute the build target');
417-
}
411+
} else {
418412

419-
context.logger.info(`📦 Building "${context.target.project}"`);
413+
if (!context.target) {
414+
throw new Error('Cannot execute the build target');
415+
}
420416

421-
const builders = [
422-
context.scheduleTarget(
423-
targetFromTargetString(staticBuildTarget.name),
424-
staticBuildTarget.options
425-
).then(run => run.result)
426-
];
417+
context.logger.info(`📦 Building "${context.target.project}"`);
427418

428-
if (serverBuildTarget) {
429-
builders.push(context.scheduleTarget(
430-
targetFromTargetString(serverBuildTarget.name),
431-
serverBuildTarget.options
432-
).then(run => run.result));
433-
}
419+
const builders = [
420+
context.scheduleTarget(
421+
targetFromTargetString(staticBuildTarget.name),
422+
staticBuildTarget.options
423+
).then(run => run.result)
424+
];
434425

435-
await Promise.all(builders);
426+
if (serverBuildTarget) {
427+
builders.push(context.scheduleTarget(
428+
targetFromTargetString(serverBuildTarget.name),
429+
serverBuildTarget.options
430+
).then(run => run.result));
436431
}
432+
433+
await Promise.all(builders);
437434
}
438435

436+
439437
try {
440438
await firebaseTools.use(firebaseProject, {
441439
project: firebaseProject,

0 commit comments

Comments
 (0)