Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dad1b4dfa6 | ||
|
|
786f2f8678 | ||
|
|
ed689dba41 | ||
|
|
f779117ed6 | ||
|
|
c9e7e00f42 |
@@ -36,9 +36,10 @@ Certimate 旨在为用户提供一个安全、简便的 SSL 证书管理解决
|
|||||||
## 💡 功能特性
|
## 💡 功能特性
|
||||||
|
|
||||||
- 灵活的工作流编排方式,证书从申请到部署完全自动化;
|
- 灵活的工作流编排方式,证书从申请到部署完全自动化;
|
||||||
- 支持泛域名、多域名证书,可选 RSA、ECC 签名算法;
|
- 支持单域名、多域名、泛域名证书,可选 RSA、ECC 签名算法;
|
||||||
- 支持 20+ 域名托管商(如阿里云、腾讯云、Cloudflare 等);
|
- 支持 PEM、PFX、JKS 等多种格式输出证书;
|
||||||
- 支持 50+ 部署目标(如 Kubernetes、CDN、WAF、负载均衡等);
|
- 支持 20+ 域名托管商(如阿里云、腾讯云、Cloudflare 等,[点此查看](https://docs.certimate.me/docs/reference/providers#supported-dns-providers)完整提供商清单);
|
||||||
|
- 支持 60+ 部署目标(如 Kubernetes、CDN、WAF、负载均衡等,[点此查看](https://docs.certimate.me/docs/reference/providers#supported-host-providers)完整提供商清单);
|
||||||
- 支持邮件、钉钉、飞书、企业微信、Webhook 等多种通知渠道;
|
- 支持邮件、钉钉、飞书、企业微信、Webhook 等多种通知渠道;
|
||||||
- 支持 Let's Encrypt、ZeroSSL、Google Trust Services 等多种 ACME 证书颁发机构;
|
- 支持 Let's Encrypt、ZeroSSL、Google Trust Services 等多种 ACME 证书颁发机构;
|
||||||
- 更多特性等待探索。
|
- 更多特性等待探索。
|
||||||
|
|||||||
11
README_EN.md
11
README_EN.md
@@ -35,12 +35,13 @@ Certimate aims to provide users with a secure and user-friendly SSL certificate
|
|||||||
|
|
||||||
## 💡 Features
|
## 💡 Features
|
||||||
|
|
||||||
- Flexible workflow orchestration, fully automated from certificate application to deployment;
|
- Flexible workflow orchestration, fully automation from certificate application to deployment;
|
||||||
- Supports wildcard, multi-domain certificates, with options for RSA or ECC.
|
- Supports single-domain, multi-domain, wildcard certificates, with options for RSA or ECC.
|
||||||
- Supports more than 20+ domain registrars (e.g., Alibaba Cloud, Tencent Cloud, Cloudflare, etc.);
|
- Supports various certificate formats such as PEM, PFX, JKS.
|
||||||
- Supports more than 50+ deployment targets (e.g., Kubernetes, CDN, WAF, load balancers, etc.);
|
- Supports more than 20+ domain registrars (e.g., Alibaba Cloud, Tencent Cloud, Cloudflare, etc. [Check out this link](https://docs.certimate.me/en/docs/reference/providers#supported-dns-providers));
|
||||||
|
- Supports more than 60+ deployment targets (e.g., Kubernetes, CDN, WAF, load balancers, etc. [Check out this link](https://docs.certimate.me/en/docs/reference/providers#supported-host-providers));
|
||||||
- Supports multiple notification channels including email, DingTalk, Feishu, WeCom, Webhook, and more;
|
- Supports multiple notification channels including email, DingTalk, Feishu, WeCom, Webhook, and more;
|
||||||
- Supports multiple certificate authorities including Let's Encrypt, ZeroSSL, Google Trust Services, and more;
|
- Supports multiple ACME CAs including Let's Encrypt, ZeroSSL, Google Trust Services, and more;
|
||||||
- More features waiting to be discovered.
|
- More features waiting to be discovered.
|
||||||
|
|
||||||
## ⏱️ Fast Track
|
## ⏱️ Fast Track
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
export const version = "v0.3.1";
|
export const version = "v0.3.2";
|
||||||
|
|||||||
@@ -436,11 +436,6 @@ export const getOutputBeforeNodeId = (root: WorkflowNode, nodeId: string, type:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果当前节点是 ExecuteFailure,清除 ExecuteResultBranch 节点前一个节点的输出
|
|
||||||
if (current.type === WorkflowNodeType.ExecuteFailure) {
|
|
||||||
output.splice(output.length - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (current.type !== WorkflowNodeType.Branch && current.outputs && current.outputs.some((io) => io.type === type)) {
|
if (current.type !== WorkflowNodeType.Branch && current.outputs && current.outputs.some((io) => io.type === type)) {
|
||||||
output.push({
|
output.push({
|
||||||
...current,
|
...current,
|
||||||
@@ -449,8 +444,13 @@ export const getOutputBeforeNodeId = (root: WorkflowNode, nodeId: string, type:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isBranchLike(current)) {
|
if (isBranchLike(current)) {
|
||||||
const currentLength = output.length;
|
let currentLength = output.length;
|
||||||
|
const latestOutput = output.length > 0 ? output[output.length - 1] : null;
|
||||||
for (const branch of current.branches!) {
|
for (const branch of current.branches!) {
|
||||||
|
if (branch.type === WorkflowNodeType.ExecuteFailure) {
|
||||||
|
output.splice(output.length - 1);
|
||||||
|
currentLength -= 1;
|
||||||
|
}
|
||||||
if (traverse(branch, output)) {
|
if (traverse(branch, output)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -458,6 +458,10 @@ export const getOutputBeforeNodeId = (root: WorkflowNode, nodeId: string, type:
|
|||||||
if (output.length > currentLength) {
|
if (output.length > currentLength) {
|
||||||
output.splice(currentLength);
|
output.splice(currentLength);
|
||||||
}
|
}
|
||||||
|
if (latestOutput && branch.type === WorkflowNodeType.ExecuteFailure) {
|
||||||
|
output.push(latestOutput);
|
||||||
|
currentLength += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user