fc-deploy
v1.2.9
Published
阿里云函数计算自动部署
Downloads
30
Readme
fc-deploy
阿里云函数计算自动部署
安装
npm i fc-deploy使用
import { deploy } from "fc-deploy";
/** 一组函数名称 */
const funcs = [
"chat",
"msgfile",
"msgfile_large",
"recog",
"group",
"wemeeting",
] as const;
deploy({
/** 项目名称 */
name: "wecom-chat",
/** 可选:自定义 node_modules 路径(默认 cwd/node_modules) */
nodeModulesPath: path.resolve(process.cwd(), "node_modules"),
/** FC客户端设置 */
fcConfigs: funcs.map((f) => ({
accessKeyId: process.env.ALIYUN_ACCESS_KEY!,
accessKeySecret: process.env.ALIYUN_SECRET_ACCESS_KEY!,
fcEndpoint: "xxxxxxxx.cn-beijing.fc.aliyuncs.com",
fcRegionId: "cn-beijing",
fcFunction: f,
fcService: "服务名称",
})),
/** 层设置 */
layerConfig: {
layerName: "wecom-chat",
/** 层描述 */
layerDescription: "",
/** 层兼容哪些运行时 */
compatibleRuntime: ["nodejs20"],
/** 定义如何获取各个函数的依赖hash */
getHash: async (params) => {
const redis = getUpstashRedis("dk");
const data = await redis.get<string>(`fcd:hash:${params.funcName}`);
return data || "";
},
/** 定义如何设置hash */
setHash: async (params) => {
const redis = getUpstashRedis("dk");
const res = await redis.set(`fcd:hash:${params.funcName}`, params.hash);
if (res !== "OK") {
console.error("upstash redis cache error: " + res);
}
},
/** 需要监控哪些依赖变化,可以同时监控多个依赖,任意一个变化了,都会重新创建层 */
packageJsonLists: [
path.resolve(process.cwd(), "package.json"),
path.resolve(
process.cwd(),
"node_modules/@myrog/mylib/package.json",
),
],
},
/** oss配置,用来上传层文件。 */
ossConfig: {
accessKeyId: process.env.ALIYUN_ACCESS_KEY!,
accessKeySecret: process.env.ALIYUN_SECRET_ACCESS_KEY!,
bucket: "your_bucket",
region: "oss-cn-beijing",
},
/** 日志回调 */
cbLog(msg) {
console.log(msg);
const fsClient = getFeishuClient();
return fsClient.im.message.create({
params: {
receive_id_type: "chat_id",
},
data: {
msg_type: "text",
receive_id: process.env.FEISHU_CHAT_ID!,
content: JSON.stringify({
text: msg,
}),
},
});
},
});
### 依赖哈希规则(触发层重建)
- 会对 `packageJsonLists` 中的所有 `package.json` 文件完整内容做排序、合并并生成哈希,换行符会被规范化以保证跨平台一致性。
- 同时会把当前项目根目录的 `package.json` 版本号一并纳入哈希计算;版本变化也会触发新的层构建。
- 任何一个被监控的 `package.json` 内容或项目版本发生变化,都会视为依赖变更,从而重新创建层。
### 环境变量
#### DEBUG_FCD
设置 `DEBUG_FCD=1` 可以开启详细的调试日志输出,用于排查部署过程中的问题。
```bash
DEBUG_FCD=1 node deploy.js阿里云凭证(示例代码中使用)
示例代码中使用了以下环境变量来配置阿里云服务:
ALIYUN_ACCESS_KEY- 阿里云 AccessKey IDALIYUN_SECRET_ACCESS_KEY- 阿里云 AccessKey SecretFEISHU_CHAT_ID- 飞书群聊 ID(用于日志回调通知)
这些变量仅在示例代码中使用,实际使用时可根据需要自行配置。
