Skip to content
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- Updated supported runtimes for functions. Default python runtime is now 3.13. (#8534)
- Fixed issue where Secret Manager API was not automatically enabled for functions using secrets. (#8528)
- Changed artifact registry cleanup policy error to warn for CI/CD workloads #8513
- Enhance firebase init apphosting to support local source deploys. (#8479)
Expand Down
8 changes: 2 additions & 6 deletions schema/firebase-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,16 +275,12 @@
},
"runtime": {
"enum": [
"nodejs10",
"nodejs12",
"nodejs14",
"nodejs16",
"nodejs18",
"nodejs20",
"nodejs22",
"python310",
"python311",
"python312"
"python312",
"python313"
],
"type": "string"
},
Expand Down
2 changes: 2 additions & 0 deletions src/deploy/functions/runtimes/python/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
{ exit: 1 },
);
}
return Promise.resolve(new Delegate(context.projectId, context.sourceDir, runtime));

Check warning on line 42 in src/deploy/functions/runtimes/python/index.ts

View workflow job for this annotation

GitHub Actions / lint (20)

'Delegate' was used before it was defined
}

/**
Expand All @@ -60,6 +60,8 @@
return "python3.11";
} else if (runtime === "python312") {
return "python3.12";
} else if (runtime === "python313") {
return "python3.13";
}
assertExhaustive(runtime, `Unhandled python runtime ${runtime as string}`);
}
Expand Down Expand Up @@ -146,7 +148,7 @@
return Promise.resolve();
}

async serveAdmin(port: number, envs: backend.EnvironmentVariables) {

Check warning on line 151 in src/deploy/functions/runtimes/python/index.ts

View workflow job for this annotation

GitHub Actions / lint (20)

Missing return type on function
const modulesDir = await this.modulesDir();
const envWithAdminPort = {
...envs,
Expand Down
4 changes: 2 additions & 2 deletions src/deploy/functions/runtimes/supported/supported.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ describe("supported runtimes", () => {
expect(logLabeledWarning).to.have.been.calledWith(
"functions",
"Runtime Node.js 20 was deprecated on 2026-04-30 and will be " +
"decommissioned on 2026-10-31, after which you will not be able to " +
"decommissioned on 2026-10-30, after which you will not be able to " +
"deploy without upgrading. Consider upgrading now to avoid disruption. See " +
"https://cloud.google.com/functions/docs/runtime-support for full " +
"details on the lifecycle policy",
Expand All @@ -58,7 +58,7 @@ describe("supported runtimes", () => {
expect(logLabeledWarning).to.have.been.calledWith(
"functions",
"Runtime Node.js 20 will be deprecated on 2026-04-30 and will be " +
"decommissioned on 2026-10-31, after which you will not be able to " +
"decommissioned on 2026-10-30, after which you will not be able to " +
"deploy without upgrading. Consider upgrading now to avoid disruption. See " +
"https://cloud.google.com/functions/docs/runtime-support for full " +
"details on the lifecycle policy",
Expand Down
28 changes: 17 additions & 11 deletions src/deploy/functions/runtimes/supported/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,63 +49,69 @@ export const RUNTIMES = runtimes({
},
nodejs10: {
friendly: "Node.js 10",
status: "GA",
status: "decommissioned",
deprecationDate: "2024-01-30",
decommissionDate: "2025-01-30",
},
nodejs12: {
friendly: "Node.js 12",
status: "GA",
status: "decommissioned",
deprecationDate: "2024-01-30",
decommissionDate: "2025-01-30",
},
nodejs14: {
friendly: "Node.js 14",
status: "GA",
status: "decommissioned",
deprecationDate: "2024-01-30",
decommissionDate: "2025-01-30",
},
nodejs16: {
friendly: "Node.js 16",
status: "GA",
status: "decommissioned",
deprecationDate: "2024-01-30",
decommissionDate: "2025-01-30",
},
nodejs18: {
friendly: "Node.js 18",
status: "GA",
status: "decommissioned",
deprecationDate: "2025-04-30",
decommissionDate: "2025-10-31",
decommissionDate: "2025-10-30",
},
nodejs20: {
friendly: "Node.js 20",
status: "GA",
deprecationDate: "2026-04-30",
decommissionDate: "2026-10-31",
decommissionDate: "2026-10-30",
},
nodejs22: {
friendly: "Node.js 22",
status: "GA",
deprecationDate: "2027-04-30",
decommissionDate: "2027-10-31",
decommissionDate: "2028-10-31",
},
python310: {
friendly: "Python 3.10",
status: "GA",
deprecationDate: "2026-10-04",
decommissionDate: "2027-04-30",
decommissionDate: "2027-04-04",
},
python311: {
friendly: "Python 3.11",
status: "GA",
deprecationDate: "2027-10-24",
decommissionDate: "2028-04-30",
decommissionDate: "2028-04-24",
},
python312: {
friendly: "Python 3.12",
status: "GA",
deprecationDate: "2028-10-02",
decommissionDate: "2029-04-30",
decommissionDate: "2029-04-02",
},
python313: {
friendly: "Python 3.13",
status: "GA",
deprecationDate: "2029-10-10",
decommissionDate: "2030-04-10",
},
});

Expand Down
6 changes: 3 additions & 3 deletions src/functions/projectConfig.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ describe("projectConfig", () => {
});

it("fails validation given config w/o source", () => {
expect(() => projectConfig.validate([{ runtime: "nodejs10" }])).to.throw(
expect(() => projectConfig.validate([{ runtime: "nodejs22" }])).to.throw(
FirebaseError,
/codebase source must be specified/,
);
Expand Down Expand Up @@ -84,7 +84,7 @@ describe("projectConfig", () => {
});

it("fails validation given singleton config w/o source", () => {
expect(() => projectConfig.normalizeAndValidate({ runtime: "nodejs10" })).to.throw(
expect(() => projectConfig.normalizeAndValidate({ runtime: "nodejs22" })).to.throw(
FirebaseError,
/codebase source must be specified/,
);
Expand All @@ -98,7 +98,7 @@ describe("projectConfig", () => {
});

it("fails validation given multi-resource config w/o source", () => {
expect(() => projectConfig.normalizeAndValidate([{ runtime: "nodejs10" }])).to.throw(
expect(() => projectConfig.normalizeAndValidate([{ runtime: "nodejs22" }])).to.throw(
FirebaseError,
/codebase source must be specified/,
);
Expand Down
Loading