From 98b77f80843834616fb26f83b4c42245326abd06 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 2 Sep 2024 23:46:28 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91=20DCDN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/core/executor.ts | 4 +- .../core/pipeline/src/core/run-history.ts | 5 +- .../ui/certd-client/.dependency-cruiser.js | 463 ------------------ packages/ui/certd-client/package.json | 4 +- packages/ui/certd-server/package.json | 1 - .../plugin-aliyun/access/aliyun-access.ts | 30 ++ .../src/plugins/plugin-aliyun/access/index.ts | 1 + .../dns-provider/aliyun-dns-provider.ts | 6 +- .../src/plugins/plugin-aliyun/index.ts | 1 + .../plugin/deploy-to-ack-ingress/index.ts | 7 +- .../plugin/deploy-to-cdn/index.ts | 9 +- .../plugin/deploy-to-dcdn/index.ts | 19 +- .../plugin/upload-to-aliyun/index.ts | 19 +- .../plugins/plugin-deploy-to-cdn.ts | 1 + .../plugin-demo/plugins/plugin-test.ts | 1 + .../plugin-host/plugin/copy-to-local/index.ts | 1 + .../plugin/upload-to-host/index.ts | 1 + .../plugin-other/plugins/plugin-k8s.ts | 1 + .../plugin/deploy-to-clb/index.ts | 1 + .../plugin/deploy-to-tke-ingress/index.ts | 1 + .../plugin/upload-to-tencent/index.ts | 1 + 21 files changed, 77 insertions(+), 500 deletions(-) delete mode 100644 packages/ui/certd-client/.dependency-cruiser.js create mode 100644 packages/ui/certd-server/src/plugins/plugin-aliyun/access/aliyun-access.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-aliyun/access/index.ts diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts index 1825fb08..6786f78e 100644 --- a/packages/core/pipeline/src/core/executor.ts +++ b/packages/core/pipeline/src/core/executor.ts @@ -83,9 +83,9 @@ export class Executor { await this.notification("turnToSuccess"); } await this.notification("success"); - } catch (e) { + } catch (e: any) { await this.notification("error", e); - this.logger.error("pipeline 执行失败", e); + this.logger.error("pipeline 执行失败", e.stack); } finally { await this.pipelineContext.setObj("lastRuntime", this.runtime); this.logger.info(`pipeline.${this.pipeline.id} end`); diff --git a/packages/core/pipeline/src/core/run-history.ts b/packages/core/pipeline/src/core/run-history.ts index df26cbef..64341ed6 100644 --- a/packages/core/pipeline/src/core/run-history.ts +++ b/packages/core/pipeline/src/core/run-history.ts @@ -104,12 +104,13 @@ export class RunHistory { log(runnable: Runnable, text: string) { // @ts-ignore - this._loggers[runnable.id].info(`[${runnable.title}] [${runnable.runnableType}]`, text); + this._loggers[runnable.id].info(`[${runnable.runnableType}] [${runnable.title}] :`, text); } logError(runnable: Runnable, e: Error) { // @ts-ignore - this._loggers[runnable.id].error(`[${runnable.title}] [${runnable.runnableType}]`, e.stack); + const errorInfo = runnable.runnableType == "step" ? e.stack : e.message; + this._loggers[runnable.id].error(`[${runnable.runnableType}] [${runnable.title}] :${errorInfo}`); } finally(runnable: Runnable) { diff --git a/packages/ui/certd-client/.dependency-cruiser.js b/packages/ui/certd-client/.dependency-cruiser.js deleted file mode 100644 index c27a7b85..00000000 --- a/packages/ui/certd-client/.dependency-cruiser.js +++ /dev/null @@ -1,463 +0,0 @@ -/** @type {import('dependency-cruiser').IConfiguration} */ -module.exports = { - forbidden: [ - /* rules from the 'recommended' preset: */ - { - name: 'no-circular', - severity: 'warn', - comment: - 'This dependency is part of a circular relationship. You might want to revise ' + - 'your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ', - from: {}, - to: { - circular: true - } - }, - { - name: 'no-orphans', - comment: - "This is an orphan module - it's likely not used (anymore?). Either use it or " + - "remove it. If it's logical this module is an orphan (i.e. it's a config file), " + - "add an exception for it in your dependency-cruiser configuration. By default " + - "this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration " + - "files (.d.ts), tsconfig.json and some of the babel and webpack configs.", - severity: 'warn', - from: { - orphan: true, - pathNot: [ - '(^|/)\\.[^/]+\\.(js|cjs|mjs|ts|json)$', // dot files - '\\.d\\.ts$', // TypeScript declaration files - '(^|/)tsconfig\\.json$', // TypeScript config - '(^|/)(babel|webpack)\\.config\\.(js|cjs|mjs|ts|json)$' // other configs - ] - }, - to: {}, - }, - { - name: 'no-deprecated-core', - comment: - 'A module depends on a node core module that has been deprecated. Find an alternative - these are ' + - "bound to exist - node doesn't deprecate lightly.", - severity: 'warn', - from: {}, - to: { - dependencyTypes: [ - 'core' - ], - path: [ - '^(v8\/tools\/codemap)$', - '^(v8\/tools\/consarray)$', - '^(v8\/tools\/csvparser)$', - '^(v8\/tools\/logreader)$', - '^(v8\/tools\/profile_view)$', - '^(v8\/tools\/profile)$', - '^(v8\/tools\/SourceMap)$', - '^(v8\/tools\/splaytree)$', - '^(v8\/tools\/tickprocessor-driver)$', - '^(v8\/tools\/tickprocessor)$', - '^(node-inspect\/lib\/_inspect)$', - '^(node-inspect\/lib\/internal\/inspect_client)$', - '^(node-inspect\/lib\/internal\/inspect_repl)$', - '^(async_hooks)$', - '^(punycode)$', - '^(domain)$', - '^(constants)$', - '^(sys)$', - '^(_linklist)$', - '^(_stream_wrap)$' - ], - } - }, - { - name: 'not-to-deprecated', - comment: - 'This module uses a (version of an) npm module that has been deprecated. Either upgrade to a later ' + - 'version of that module, or find an alternative. Deprecated modules are a security risk.', - severity: 'warn', - from: {}, - to: { - dependencyTypes: [ - 'deprecated' - ] - } - }, - { - name: 'no-non-package-json', - severity: 'error', - comment: - "This module depends on an npm package that isn't in the 'dependencies' section of your package.json. " + - "That's problematic as the package either (1) won't be available on live (2 - worse) will be " + - "available on live with an non-guaranteed version. Fix it by adding the package to the dependencies " + - "in your package.json.", - from: {}, - to: { - dependencyTypes: [ - 'npm-no-pkg', - 'npm-unknown' - ] - } - }, - { - name: 'not-to-unresolvable', - comment: - "This module depends on a module that cannot be found ('resolved to disk'). If it's an npm " + - 'module: add it to your package.json. In all other cases you likely already know what to do.', - severity: 'error', - from: {}, - to: { - couldNotResolve: true - } - }, - { - name: 'no-duplicate-dep-types', - comment: - "Likely this module depends on an external ('npm') package that occurs more than once " + - "in your package.json i.e. bot as a devDependencies and in dependencies. This will cause " + - "maintenance problems later on.", - severity: 'warn', - from: {}, - to: { - moreThanOneDependencyType: true, - // as it's pretty common to have a type import be a type only import - // _and_ (e.g.) a devDependency - don't consider type-only dependency - // types for this rule - dependencyTypesNot: ["type-only"] - } - }, - - /* rules you might want to tweak for your specific situation: */ - { - name: 'not-to-test', - comment: - "This module depends on code within a folder that should only contain tests. As tests don't " + - "implement functionality this is odd. Either you're writing a test outside the test folder " + - "or there's something in the test folder that isn't a test.", - severity: 'error', - from: { - pathNot: '^(tests)' - }, - to: { - path: '^(tests)' - } - }, - { - name: 'not-to-spec', - comment: - 'This module depends on a spec (test) file. The sole responsibility of a spec file is to test code. ' + - "If there's something in a spec that's of use to other modules, it doesn't have that single " + - 'responsibility anymore. Factor it out into (e.g.) a separate utility/ helper or a mock.', - severity: 'error', - from: {}, - to: { - path: '\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$' - } - }, - { - name: 'not-to-dev-dep', - severity: 'error', - comment: - "This module depends on an npm package from the 'devDependencies' section of your " + - 'package.json. It looks like something that ships to production, though. To prevent problems ' + - "with npm packages that aren't there on production declare it (only!) in the 'dependencies'" + - 'section of your package.json. If this module is development only - add it to the ' + - 'from.pathNot re of the not-to-dev-dep rule in the dependency-cruiser configuration', - from: { - path: '^(src)', - pathNot: '\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$' - }, - to: { - dependencyTypes: [ - 'npm-dev' - ] - } - }, - { - name: 'optional-deps-used', - severity: 'info', - comment: - "This module depends on an npm package that is declared as an optional dependency " + - "in your package.json. As this makes sense in limited situations only, it's flagged here. " + - "If you're using an optional dependency here by design - add an exception to your" + - "dependency-cruiser configuration.", - from: {}, - to: { - dependencyTypes: [ - 'npm-optional' - ] - } - }, - { - name: 'peer-deps-used', - comment: - "This module depends on an npm package that is declared as a peer dependency " + - "in your package.json. This makes sense if your package is e.g. a plugin, but in " + - "other cases - maybe not so much. If the use of a peer dependency is intentional " + - "add an exception to your dependency-cruiser configuration.", - severity: 'warn', - from: {}, - to: { - dependencyTypes: [ - 'npm-peer' - ] - } - } - ], - options: { - - /* conditions specifying which files not to follow further when encountered: - - path: a regular expression to match - - dependencyTypes: see https://github.com/sverweij/dependency-cruiser/blob/master/doc/rules-reference.md#dependencytypes-and-dependencytypesnot - for a complete list - */ - doNotFollow: { - path: 'node_modules' - }, - - /* conditions specifying which dependencies to exclude - - path: a regular expression to match - - dynamic: a boolean indicating whether to ignore dynamic (true) or static (false) dependencies. - leave out if you want to exclude neither (recommended!) - */ - // exclude : { - // path: '', - // dynamic: true - // }, - - /* pattern specifying which files to include (regular expression) - dependency-cruiser will skip everything not matching this pattern - */ - // includeOnly : '', - - /* dependency-cruiser will include modules matching against the focus - regular expression in its output, as well as their neighbours (direct - dependencies and dependents) - */ - // focus : '', - - /* list of module systems to cruise */ - // moduleSystems: ['amd', 'cjs', 'es6', 'tsd'], - - /* prefix for links in html and svg output (e.g. 'https://github.com/you/yourrepo/blob/develop/' - to open it on your online repo or `vscode://file/${process.cwd()}/` to - open it in visual studio code), - */ - // prefix: '', - - /* false (the default): ignore dependencies that only exist before typescript-to-javascript compilation - true: also detect dependencies that only exist before typescript-to-javascript compilation - "specify": for each dependency identify whether it only exists before compilation or also after - */ - tsPreCompilationDeps: true, - - /* - list of extensions to scan that aren't javascript or compile-to-javascript. - Empty by default. Only put extensions in here that you want to take into - account that are _not_ parsable. - */ - // extraExtensionsToScan: [".json", ".jpg", ".png", ".svg", ".webp"], - - /* if true combines the package.jsons found from the module up to the base - folder the cruise is initiated from. Useful for how (some) mono-repos - manage dependencies & dependency definitions. - */ - // combinedDependencies: false, - - /* if true leave symlinks untouched, otherwise use the realpath */ - // preserveSymlinks: false, - - /* TypeScript project file ('tsconfig.json') to use for - (1) compilation and - (2) resolution (e.g. with the paths property) - - The (optional) fileName attribute specifies which file to take (relative to - dependency-cruiser's current working directory). When not provided - defaults to './tsconfig.json'. - */ - tsConfig: { - fileName: 'tsconfig.json' - }, - - /* Webpack configuration to use to get resolve options from. - - The (optional) fileName attribute specifies which file to take (relative - to dependency-cruiser's current working directory. When not provided defaults - to './webpack.conf.js'. - - The (optional) `env` and `args` attributes contain the parameters to be passed if - your webpack config is a function and takes them (see webpack documentation - for details) - */ - // webpackConfig: { - // fileName: './webpack.config.js', - // env: {}, - // args: {}, - // }, - - /* Babel config ('.babelrc', '.babelrc.json', '.babelrc.json5', ...) to use - for compilation (and whatever other naughty things babel plugins do to - source code). This feature is well tested and usable, but might change - behavior a bit over time (e.g. more precise results for used module - systems) without dependency-cruiser getting a major version bump. - */ - // babelConfig: { - // fileName: './.babelrc' - // }, - - /* List of strings you have in use in addition to cjs/ es6 requires - & imports to declare module dependencies. Use this e.g. if you've - re-declared require, use a require-wrapper or use window.require as - a hack. - */ - // exoticRequireStrings: [], - /* options to pass on to enhanced-resolve, the package dependency-cruiser - uses to resolve module references to disk. You can set most of these - options in a webpack.conf.js - this section is here for those - projects that don't have a separate webpack config file. - - Note: settings in webpack.conf.js override the ones specified here. - */ - enhancedResolveOptions: { - /* List of strings to consider as 'exports' fields in package.json. Use - ['exports'] when you use packages that use such a field and your environment - supports it (e.g. node ^12.19 || >=14.7 or recent versions of webpack). - - If you have an `exportsFields` attribute in your webpack config, that one - will have precedence over the one specified here. - */ - exportsFields: ["exports"], - /* List of conditions to check for in the exports field. e.g. use ['imports'] - if you're only interested in exposed es6 modules, ['require'] for commonjs, - or all conditions at once `(['import', 'require', 'node', 'default']`) - if anything goes for you. Only works when the 'exportsFields' array is - non-empty. - - If you have a 'conditionNames' attribute in your webpack config, that one will - have precedence over the one specified here. - */ - conditionNames: ["import", "require", "node", "default"], - /* - The extensions, by default are the same as the ones dependency-cruiser - can access (run `npx depcruise --info` to see which ones that are in - _your_ environment. If that list is larger than what you need (e.g. - it contains .js, .jsx, .ts, .tsx, .cts, .mts - but you don't use - TypeScript you can pass just the extensions you actually use (e.g. - [".js", ".jsx"]). This can speed up the most expensive step in - dependency cruising (module resolution) quite a bit. - */ - // extensions: [".js", ".jsx", ".ts", ".tsx", ".d.ts"], - /* - If your TypeScript project makes use of types specified in 'types' - fields in package.jsons of external dependencies, specify "types" - in addition to "main" in here, so enhanced-resolve (the resolver - dependency-cruiser uses) knows to also look there. You can also do - this if you're not sure, but still use TypeScript. In a future version - of dependency-cruiser this will likely become the default. - */ - mainFields: ["main", "types"], - }, - reporterOptions: { - dot: { - /* pattern of modules that can be consolidated in the detailed - graphical dependency graph. The default pattern in this configuration - collapses everything in node_modules to one folder deep so you see - the external modules, but not the innards your app depends upon. - */ - collapsePattern: 'node_modules/(@[^/]+/[^/]+|[^/]+)', - - /* Options to tweak the appearance of your graph.See - https://github.com/sverweij/dependency-cruiser/blob/master/doc/options-reference.md#reporteroptions - for details and some examples. If you don't specify a theme - don't worry - dependency-cruiser will fall back to the default one. - */ - // theme: { - // graph: { - // /* use splines: "ortho" for straight lines. Be aware though - // graphviz might take a long time calculating ortho(gonal) - // routings. - // */ - // splines: "true" - // }, - // modules: [ - // { - // criteria: { matchesFocus: true }, - // attributes: { - // fillcolor: "lime", - // penwidth: 2, - // }, - // }, - // { - // criteria: { matchesFocus: false }, - // attributes: { - // fillcolor: "lightgrey", - // }, - // }, - // { - // criteria: { matchesReaches: true }, - // attributes: { - // fillcolor: "lime", - // penwidth: 2, - // }, - // }, - // { - // criteria: { matchesReaches: false }, - // attributes: { - // fillcolor: "lightgrey", - // }, - // }, - // { - // criteria: { source: "^src/model" }, - // attributes: { fillcolor: "#ccccff" } - // }, - // { - // criteria: { source: "^src/view" }, - // attributes: { fillcolor: "#ccffcc" } - // }, - // ], - // dependencies: [ - // { - // criteria: { "rules[0].severity": "error" }, - // attributes: { fontcolor: "red", color: "red" } - // }, - // { - // criteria: { "rules[0].severity": "warn" }, - // attributes: { fontcolor: "orange", color: "orange" } - // }, - // { - // criteria: { "rules[0].severity": "info" }, - // attributes: { fontcolor: "blue", color: "blue" } - // }, - // { - // criteria: { resolved: "^src/model" }, - // attributes: { color: "#0000ff77" } - // }, - // { - // criteria: { resolved: "^src/view" }, - // attributes: { color: "#00770077" } - // } - // ] - // } - }, - archi: { - /* pattern of modules that can be consolidated in the high level - graphical dependency graph. If you use the high level graphical - dependency graph reporter (`archi`) you probably want to tweak - this collapsePattern to your situation. - */ - collapsePattern: '^(packages|src|lib|app|bin|test(s?)|spec(s?))/[^/]+|node_modules/(@[^/]+/[^/]+|[^/]+)', - - /* Options to tweak the appearance of your graph.See - https://github.com/sverweij/dependency-cruiser/blob/master/doc/options-reference.md#reporteroptions - for details and some examples. If you don't specify a theme - for 'archi' dependency-cruiser will use the one specified in the - dot section (see above), if any, and otherwise use the default one. - */ - // theme: { - // }, - }, - "text": { - "highlightFocused": true - }, - } - } -}; -// generated: dependency-cruiser@12.11.0 on 2023-03-24T14:11:38.647Z diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index 0564f810..96ab8820 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -23,7 +23,7 @@ "license": "AGPL-3.0", "dependencies": { "@ant-design/colors": "^7.0.2", - "@ant-design/icons-vue": "^7.0.1", + "@ant-design/icons-vue": "^6.1.0", "@fast-crud/fast-crud": "^1.21.2", "@fast-crud/fast-extends": "^1.21.2", "@fast-crud/ui-antdv4": "^1.21.2", @@ -105,7 +105,7 @@ "tslint": "^6.1.3", "typescript": "5.4.2", "unplugin-vue-define-options": "^1.4.2", - "vite": "^5.1.6", + "vite": "^5.3.1", "vite-plugin-compression": "^0.5.1", "vite-plugin-html": "^3.2.2", "vite-plugin-windicss": "^1.9.3", diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index eb96f40a..fd9a92c4 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -20,7 +20,6 @@ }, "dependencies": { "@alicloud/cs20151215": "^3.0.3", - "@alicloud/openapi-client": "^0.4.0", "@alicloud/pop-core": "^1.7.10", "@certd/acme-client": "^1.24.0", "@certd/lib-huawei": "^1.22.1", diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/access/aliyun-access.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/access/aliyun-access.ts new file mode 100644 index 00000000..ac3eb408 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/access/aliyun-access.ts @@ -0,0 +1,30 @@ +import { IsAccess, AccessInput } from '@certd/pipeline'; + +@IsAccess({ + name: 'aliyun', + title: '阿里云授权', + desc: '', +}) +export class AliyunAccess { + @AccessInput({ + title: 'accessKeyId', + component: { + placeholder: 'accessKeyId', + }, + helper: '登录阿里云控制台->AccessKey管理页面获取。', + required: true, + }) + accessKeyId = ''; + @AccessInput({ + title: 'accessKeySecret', + component: { + placeholder: 'accessKeySecret', + }, + required: true, + encrypt: true, + helper: '注意:证书申请需要dns解析权限;其他阿里云插件,需要对应的权限,比如证书上传需要证书管理权限;嫌麻烦就用主账号的全量权限的accessKey', + }) + accessKeySecret = ''; +} + +new AliyunAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/access/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/access/index.ts new file mode 100644 index 00000000..2d686298 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/access/index.ts @@ -0,0 +1 @@ +export * from './aliyun-access.js'; diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliyun-dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliyun-dns-provider.ts index 718cecd6..83036a9d 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliyun-dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliyun-dns-provider.ts @@ -1,7 +1,6 @@ -import Core from '@alicloud/pop-core'; import { AbstractDnsProvider, CreateRecordOptions, IsDnsProvider, RemoveRecordOptions } from '@certd/plugin-cert'; import { Autowire, ILogger } from '@certd/pipeline'; -import { AliyunAccess } from '@certd/plugin-plus'; +import { AliyunAccess } from '../access/index.js'; @IsDnsProvider({ name: 'aliyun', @@ -17,7 +16,8 @@ export class AliyunDnsProvider extends AbstractDnsProvider { logger!: ILogger; async onInstance() { const access: any = this.access; - this.client = new Core({ + const Core = await import('@alicloud/pop-core'); + this.client = new Core.default({ accessKeyId: access.accessKeyId, accessKeySecret: access.accessKeySecret, endpoint: 'https://alidns.aliyuncs.com', diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/index.ts index 096ebbc5..2de7ad2b 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/index.ts @@ -1,2 +1,3 @@ export * from './dns-provider/index.js'; export * from './plugin/index.js'; +export * from './access/index.js'; diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-ack-ingress/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-ack-ingress/index.ts index 7a8af6f6..44567169 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-ack-ingress/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-ack-ingress/index.ts @@ -1,5 +1,5 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, utils } from '@certd/pipeline'; -import { AliyunAccess } from '@certd/plugin-plus'; +import { AliyunAccess } from '../../access/index.js'; import { appendTimeSuffix } from '../../utils/index.js'; import { CertInfo } from '@certd/plugin-cert'; @@ -88,6 +88,7 @@ export class DeployCertToAliyunAckIngressPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) @@ -199,9 +200,9 @@ export class DeployCertToAliyunAckIngressPlugin extends AbstractTaskPlugin { } async getClient(aliyunProvider: any, regionId: string) { - const ROAClient = await import('@alicloud/pop-core'); + const Core = await import('@alicloud/pop-core'); - return new ROAClient.default({ + return new Core.default({ accessKeyId: aliyunProvider.accessKeyId, accessKeySecret: aliyunProvider.accessKeySecret, endpoint: `https://cs.${regionId}.aliyuncs.com`, diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-cdn/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-cdn/index.ts index dfcb2cf6..bd20be09 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-cdn/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-cdn/index.ts @@ -1,12 +1,11 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import dayjs from 'dayjs'; -import { AliyunAccess } from '@certd/plugin-plus'; -import type RPCClient from '@alicloud/pop-core'; +import { AliyunAccess } from '../../access/index.js'; @IsTaskPlugin({ name: 'DeployCertToAliyunCDN', title: '部署证书至阿里云CDN', group: pluginGroups.aliyun.key, - desc: '依赖证书申请前置任务,自动部署域名证书至阿里云CDN', + desc: '自动部署域名证书至阿里云CDN', default: { strategy: { runStrategy: RunStrategy.SkipWhenSucceed, @@ -32,6 +31,7 @@ export class DeployCertToAliyunCDN extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) @@ -73,7 +73,6 @@ export class DeployCertToAliyunCDN extends AbstractTaskPlugin { const CertName = (this.certName ?? 'certd') + '-' + dayjs().format('YYYYMMDDHHmmss'); const cert: any = this.cert; return { - RegionId: 'cn-hangzhou', DomainName: this.domainName, SSLProtocol: 'on', CertName: CertName, @@ -83,7 +82,7 @@ export class DeployCertToAliyunCDN extends AbstractTaskPlugin { }; } - async doRequest(client: RPCClient, params: any) { + async doRequest(client: any, params: any) { const requestOption = { method: 'POST', }; diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-dcdn/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-dcdn/index.ts index 704cda85..b489241c 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-dcdn/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/deploy-to-dcdn/index.ts @@ -1,7 +1,6 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import dayjs from 'dayjs'; -import { AliyunAccess } from '@certd/plugin-plus'; -import type RPCClient from '@alicloud/pop-core'; +import { AliyunAccess } from '../../access/index.js'; @IsTaskPlugin({ name: 'DeployCertToAliyunDCDN', title: '部署证书至阿里云DCDN', @@ -32,6 +31,7 @@ export class DeployCertToAliyunDCDN extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) @@ -50,22 +50,21 @@ export class DeployCertToAliyunDCDN extends AbstractTaskPlugin { async onInstance() {} async execute(): Promise { - console.log('开始部署证书到阿里云DCDN'); + this.logger.info('开始部署证书到阿里云DCDN'); const access = (await this.accessService.getById(this.accessId)) as AliyunAccess; const client = await this.getClient(access); const params = await this.buildParams(); await this.doRequest(client, params); - console.log('部署完成'); + this.logger.info('部署完成'); } async getClient(access: AliyunAccess) { - const Core = await import('@alicloud/pop-core'); - - return new Core.default({ + const sdk = await import('@alicloud/pop-core'); + return new sdk.default({ accessKeyId: access.accessKeyId, accessKeySecret: access.accessKeySecret, endpoint: 'https://dcdn.aliyuncs.com', - apiVersion: '2018-05-10', + apiVersion: '2018-01-15', }); } @@ -73,7 +72,6 @@ export class DeployCertToAliyunDCDN extends AbstractTaskPlugin { const CertName = (this.certName ?? 'certd') + '-' + dayjs().format('YYYYMMDDHHmmss'); const cert: any = this.cert; return { - RegionId: 'cn-hangzhou', DomainName: this.domainName, SSLProtocol: 'on', CertName: CertName, @@ -83,9 +81,10 @@ export class DeployCertToAliyunDCDN extends AbstractTaskPlugin { }; } - async doRequest(client: RPCClient, params: any) { + async doRequest(client: any, params: any) { const requestOption = { method: 'POST', + formatParams: false, }; const ret: any = await client.request('SetDcdnDomainSSLCertificate', params, requestOption); this.checkRet(ret); diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/upload-to-aliyun/index.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/upload-to-aliyun/index.ts index 78d25bb7..ebdf02a3 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/upload-to-aliyun/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/plugin/upload-to-aliyun/index.ts @@ -1,7 +1,6 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, TaskOutput } from '@certd/pipeline'; -import Core from '@alicloud/pop-core'; -import { AliyunAccess } from '@certd/plugin-plus'; import { appendTimeSuffix, checkRet, ZoneOptions } from '../../utils/index.js'; +import { AliyunAccess } from '../../access/index.js'; @IsTaskPlugin({ name: 'uploadCertToAliyun', @@ -27,7 +26,7 @@ export class UploadCertToAliyun extends AbstractTaskPlugin { component: { name: 'a-auto-complete', vModel: 'value', - options: ZoneOptions, + options: [{ value: 'cn-hangzhou' }, { value: 'eu-central-1' }, { value: 'ap-southeast-1' }], }, required: true, }) @@ -38,6 +37,7 @@ export class UploadCertToAliyun extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) @@ -62,9 +62,9 @@ export class UploadCertToAliyun extends AbstractTaskPlugin { async onInstance() {} async execute(): Promise { - console.log('开始部署证书到阿里云cdn'); - const access = (await this.accessService.getById(this.accessId)) as AliyunAccess; - const client = this.getClient(access); + this.logger.info('开始部署证书到阿里云cdn'); + const access: AliyunAccess = await this.accessService.getById(this.accessId); + const client = await this.getClient(access); const certName = appendTimeSuffix(this.name); const params = { RegionId: this.regionId || 'cn-hangzhou', @@ -77,7 +77,7 @@ export class UploadCertToAliyun extends AbstractTaskPlugin { method: 'POST', }; - const ret = (await client.request('CreateUserCertificate', params, requestOption)) as any; + const ret: any = await client.request('CreateUserCertificate', params, requestOption); checkRet(ret); this.logger.info('证书上传成功:aliyunCertId=', ret.CertId); @@ -85,8 +85,9 @@ export class UploadCertToAliyun extends AbstractTaskPlugin { this.aliyunCertId = ret.CertId; } - getClient(aliyunProvider: AliyunAccess) { - return new Core({ + async getClient(aliyunProvider: AliyunAccess) { + const Core = await import('@alicloud/pop-core'); + return new Core.default({ accessKeyId: aliyunProvider.accessKeyId, accessKeySecret: aliyunProvider.accessKeySecret, endpoint: 'https://cas.aliyuncs.com', diff --git a/packages/ui/certd-server/src/plugins/plugin-cloudflare/plugins/plugin-deploy-to-cdn.ts b/packages/ui/certd-server/src/plugins/plugin-cloudflare/plugins/plugin-deploy-to-cdn.ts index 9b82e665..c361c6f4 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cloudflare/plugins/plugin-deploy-to-cdn.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cloudflare/plugins/plugin-deploy-to-cdn.ts @@ -54,6 +54,7 @@ export class CloudflareDeployToCDNPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-demo/plugins/plugin-test.ts b/packages/ui/certd-server/src/plugins/plugin-demo/plugins/plugin-test.ts index 48fffd54..29bbb3ef 100644 --- a/packages/ui/certd-server/src/plugins/plugin-demo/plugins/plugin-test.ts +++ b/packages/ui/certd-server/src/plugins/plugin-demo/plugins/plugin-test.ts @@ -53,6 +53,7 @@ export class DemoTestPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, // required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts b/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts index 5358884e..43b6d866 100644 --- a/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts @@ -36,6 +36,7 @@ export class CopyCertToLocalPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-host/plugin/upload-to-host/index.ts b/packages/ui/certd-server/src/plugins/plugin-host/plugin/upload-to-host/index.ts index 4397205a..d0dc7761 100644 --- a/packages/ui/certd-server/src/plugins/plugin-host/plugin/upload-to-host/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-host/plugin/upload-to-host/index.ts @@ -37,6 +37,7 @@ export class UploadCertToHostPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-k8s.ts b/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-k8s.ts index 411c9dc2..98b3c8a7 100644 --- a/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-k8s.ts +++ b/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-k8s.ts @@ -59,6 +59,7 @@ export class K8STestPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-clb/index.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-clb/index.ts index 7982c915..d54c3893 100644 --- a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-clb/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-clb/index.ts @@ -75,6 +75,7 @@ export class DeployToClbPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-tke-ingress/index.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-tke-ingress/index.ts index 6d433bfa..2faf94af 100644 --- a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-tke-ingress/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/deploy-to-tke-ingress/index.ts @@ -83,6 +83,7 @@ export class DeployCertToTencentTKEIngressPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, }) diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/upload-to-tencent/index.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/upload-to-tencent/index.ts index 43a70492..3bc0e41a 100644 --- a/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/upload-to-tencent/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/plugin/upload-to-tencent/index.ts @@ -32,6 +32,7 @@ export class UploadToTencentPlugin extends AbstractTaskPlugin { helper: '请选择前置任务输出的域名证书', component: { name: 'pi-output-selector', + from: 'CertApply', }, required: true, })