[PR #443] [MERGED] feat: enhance & bugfix #961

Closed
opened 2026-03-03 01:07:02 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/certimate-go/certimate/pull/443
Author: @fudiwei
Created: 2/6/2025
Status: Merged
Merged: 2/12/2025
Merged by: @usual2970

Base: nextHead: feat/new-workflow


📝 Commits (10+)

  • d11fc1c refactor: reimpl qiniu sdk
  • 98f4f1c fix: conflict pocketbase superuser initializations
  • bc29cce chore(deps): upgrade gomod dependencies
  • 5f5c835 feat: add ExtractCertificatesFromPEM util func
  • a41ee9c feat: enhance certificate model
  • 24b591e fix: nil pointer dereference
  • 4b931f7 refactor(ui): clean code
  • 5b9e39a fix: #439
  • d32fce9 feat: save related runId in certificates or workflow outputs
  • 3f9fda8 feat: support multiple workflow outputs

📊 Changes

97 files changed (+2274 additions, -1124 deletions)

View changed files

📝 go.mod (+32 -36)
📝 go.sum (+70 -86)
📝 internal/applicant/acme_user.go (+7 -4)
📝 internal/applicant/applicant.go (+15 -15)
📝 internal/applicant/providers.go (+34 -34)
📝 internal/certificate/service.go (+30 -18)
📝 internal/deployer/providers.go (+28 -28)
📝 internal/domain/certificate.go (+79 -14)
📝 internal/domain/dtos/certificate.go (+9 -7)
📝 internal/domain/dtos/workflow.go (+1 -1)
📝 internal/domain/workflow.go (+3 -2)
📝 internal/domain/workflow_output.go (+1 -0)
📝 internal/domain/workflow_run.go (+15 -6)
📝 internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go (+0 -2)
📝 internal/pkg/core/deployer/providers/edgio-applications/edgio_applications.go (+5 -31)
📝 internal/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go (+3 -3)
📝 internal/pkg/core/uploader/providers/qiniu-sslcert/qiniu_sslcert.go (+1 -1)
internal/pkg/utils/certs/extractor.go (+48 -0)
📝 internal/pkg/utils/certs/parser.go (+1 -0)
📝 internal/pkg/utils/maps/maps.go (+8 -3)

...and 77 more files

📄 Description

该 PR 包含以下内容的变更:

  • feat: 前端显示证书的颁发者、序列号、算法等关键信息,便于用户区分相同域名的证书。
  • feat: 保存 WorkflowOuput 时不再只保留最后一次的结果,可以更好地记录每次执行结果。
  • feat: 保存 Certificate 或 WorkflowOuput 时记录关联的 WorkflowRunId。
  • feat: 支持取消执行工作流,防止因为某些原因(如进程退出)导致工作流一直处于 pending 或 running 状态无法重新触发执行。
  • feat: 前端可在工作流执行结果页面直接查看输出的证书。
  • feat: 前端可在工作流执行结果页面实时查看各工作节点日志,无需等到工作流执行结束。
  • fix: 修复全新部署时无法初始化管理员账号的问题。
  • fix: 修复申请证书节点可能产生空指针 panic 的问题。
  • fix: 修复重复执行包含上传节点的工作流时,会创建多张重复证书的问题。
  • fix: 修复因前后端对 CRON 表达式的兼容性差异(前端 cron-parser 支持五、六、七段表达式;后端 pocketbase 只支持五段表达式),前端可能传入错误的表达式导致无法执行工作流。
  • fix: 修复无法修改管理员密码的问题。关闭 #439
  • refactor: 重新实现工作流执行逻辑,详见备注。
  • refactor: 重新实现工作流节点的日志记录相关逻辑,支持日志级别。
  • refactor: 重新实现七牛云上传证书的相关逻辑,可在非 2xx 的接口请求时的错误信息中返回更详细信息,便于排查问题。
  • chore: 升级 gomod 依赖项。

【备注】

关于工作流执行的新版实现

新的工作流执行由 WorkflowDispatcher(相关源码位于 /internal/workflow/dispatcher 目录下)处理,与原 WorkflowProcessor 相比:

  • 非阻塞式队列,即使达到协程上限后也不会阻塞前端发起的手动执行请求。
  • 不同 Id 的工作流并行化,相同 Id 的工作流串行化。即允许多个工作流同时执行,但相同工作流的多次执行需排队。https://github.com/usual2970/certimate/pull/410#issuecomment-2581739990
  • 可接受 context.Cancel 中断。

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/certimate-go/certimate/pull/443 **Author:** [@fudiwei](https://github.com/fudiwei) **Created:** 2/6/2025 **Status:** ✅ Merged **Merged:** 2/12/2025 **Merged by:** [@usual2970](https://github.com/usual2970) **Base:** `next` ← **Head:** `feat/new-workflow` --- ### 📝 Commits (10+) - [`d11fc1c`](https://github.com/certimate-go/certimate/commit/d11fc1c07e16676deb3eae5903d352286ce57c36) refactor: reimpl qiniu sdk - [`98f4f1c`](https://github.com/certimate-go/certimate/commit/98f4f1cc99bf3efac8e44d706143b1fa16e621ae) fix: conflict pocketbase superuser initializations - [`bc29cce`](https://github.com/certimate-go/certimate/commit/bc29cce645c056b1042df02de6a6ddb40e1cb533) chore(deps): upgrade gomod dependencies - [`5f5c835`](https://github.com/certimate-go/certimate/commit/5f5c835533701f0bd41063f8d55bddd545dcdb76) feat: add `ExtractCertificatesFromPEM` util func - [`a41ee9c`](https://github.com/certimate-go/certimate/commit/a41ee9c3ca582e01f03f6b9eb558292559adcfc3) feat: enhance certificate model - [`24b591e`](https://github.com/certimate-go/certimate/commit/24b591ed62462e59f9a5bce0b8424e1c12db4260) fix: nil pointer dereference - [`4b931f7`](https://github.com/certimate-go/certimate/commit/4b931f782e16b2c8629ed656ba457da9b97d1e9d) refactor(ui): clean code - [`5b9e39a`](https://github.com/certimate-go/certimate/commit/5b9e39a4499bd59164547b3c4ed7679975fbed6b) fix: #439 - [`d32fce9`](https://github.com/certimate-go/certimate/commit/d32fce98ae7f0a3a0fcfec6ba467e2e7791b49f5) feat: save related runId in certificates or workflow outputs - [`3f9fda8`](https://github.com/certimate-go/certimate/commit/3f9fda8a2d6456bb63b1da15baec0321b7986a6b) feat: support multiple workflow outputs ### 📊 Changes **97 files changed** (+2274 additions, -1124 deletions) <details> <summary>View changed files</summary> 📝 `go.mod` (+32 -36) 📝 `go.sum` (+70 -86) 📝 `internal/applicant/acme_user.go` (+7 -4) 📝 `internal/applicant/applicant.go` (+15 -15) 📝 `internal/applicant/providers.go` (+34 -34) 📝 `internal/certificate/service.go` (+30 -18) 📝 `internal/deployer/providers.go` (+28 -28) 📝 `internal/domain/certificate.go` (+79 -14) 📝 `internal/domain/dtos/certificate.go` (+9 -7) 📝 `internal/domain/dtos/workflow.go` (+1 -1) 📝 `internal/domain/workflow.go` (+3 -2) 📝 `internal/domain/workflow_output.go` (+1 -0) 📝 `internal/domain/workflow_run.go` (+15 -6) 📝 `internal/pkg/core/applicant/acme-dns-01/lego-providers/gname/internal/lego.go` (+0 -2) 📝 `internal/pkg/core/deployer/providers/edgio-applications/edgio_applications.go` (+5 -31) 📝 `internal/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go` (+3 -3) 📝 `internal/pkg/core/uploader/providers/qiniu-sslcert/qiniu_sslcert.go` (+1 -1) ➕ `internal/pkg/utils/certs/extractor.go` (+48 -0) 📝 `internal/pkg/utils/certs/parser.go` (+1 -0) 📝 `internal/pkg/utils/maps/maps.go` (+8 -3) _...and 77 more files_ </details> ### 📄 Description 该 PR 包含以下内容的变更: - **feat**: 前端显示证书的颁发者、序列号、算法等关键信息,便于用户区分相同域名的证书。 - **feat**: 保存 WorkflowOuput 时不再只保留最后一次的结果,可以更好地记录每次执行结果。 - **feat**: 保存 Certificate 或 WorkflowOuput 时记录关联的 WorkflowRunId。 - **feat**: 支持取消执行工作流,防止因为某些原因(如进程退出)导致工作流一直处于 pending 或 running 状态无法重新触发执行。 - **feat**: 前端可在工作流执行结果页面直接查看输出的证书。 - **feat**: 前端可在工作流执行结果页面实时查看各工作节点日志,无需等到工作流执行结束。 - **fix**: 修复全新部署时无法初始化管理员账号的问题。 - **fix**: 修复申请证书节点可能产生空指针 panic 的问题。 - **fix**: 修复重复执行包含上传节点的工作流时,会创建多张重复证书的问题。 - **fix**: 修复因前后端对 CRON 表达式的兼容性差异(前端 cron-parser 支持五、六、七段表达式;后端 pocketbase 只支持五段表达式),前端可能传入错误的表达式导致无法执行工作流。 - **fix**: 修复无法修改管理员密码的问题。关闭 #439 - **refactor**: 重新实现工作流执行逻辑,详见备注。 - **refactor**: 重新实现工作流节点的日志记录相关逻辑,支持日志级别。 - **refactor**: 重新实现七牛云上传证书的相关逻辑,可在非 2xx 的接口请求时的错误信息中返回更详细信息,便于排查问题。 - **chore**: 升级 gomod 依赖项。 --- ### 【备注】 #### 关于工作流执行的新版实现 新的工作流执行由 WorkflowDispatcher(相关源码位于 `/internal/workflow/dispatcher` 目录下)处理,与原 WorkflowProcessor 相比: - 非阻塞式队列,即使达到协程上限后也不会阻塞前端发起的手动执行请求。 - 不同 Id 的工作流并行化,相同 Id 的工作流串行化。即允许多个工作流同时执行,但相同工作流的多次执行需排队。https://github.com/usual2970/certimate/pull/410#issuecomment-2581739990 - 可接受 context.Cancel 中断。 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-03 01:07:02 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/certimate#961
No description provided.