mirror of https://github.com/certd/certd
refactor: host
parent
2232f21b48
commit
399c23623d
|
@ -1,6 +1,6 @@
|
|||
import _ from 'lodash-es'
|
||||
import logger from '../utils/util.log.js'
|
||||
import commonUtil from '../utils/util.common'
|
||||
import commonUtil from '../utils/util.common.js'
|
||||
export class AbstractDnsProvider {
|
||||
constructor ({ accessProviders }) {
|
||||
this.logger = logger
|
||||
|
|
|
@ -65,10 +65,14 @@ export class AbstractPlugin {
|
|||
}
|
||||
|
||||
getAccessProvider (accessProvider, accessProviders = this.accessProviders) {
|
||||
let access = accessProvider
|
||||
if (typeof accessProvider === 'string' && accessProviders) {
|
||||
accessProvider = accessProviders[accessProvider]
|
||||
access = accessProviders[accessProvider]
|
||||
}
|
||||
return accessProvider
|
||||
if (access == null) {
|
||||
throw new Error(`accessProvider :${accessProvider}不存在`)
|
||||
}
|
||||
return access
|
||||
}
|
||||
|
||||
async sleep (time) {
|
||||
|
|
|
@ -63,6 +63,9 @@ export class Executor {
|
|||
logger.info('证书无更新,无需重新部署')
|
||||
logger.info('任务完成')
|
||||
return { cert }
|
||||
} else {
|
||||
// 强制重新运行,清空保存的状态
|
||||
await certd.certStore.setCurrentFile('context.json', '{}')
|
||||
}
|
||||
}
|
||||
// 读取上次执行进度
|
||||
|
@ -118,6 +121,7 @@ export class Executor {
|
|||
logger.info('此流程已被禁用,跳过')
|
||||
logger.info('')
|
||||
deployTrace.set({ value: { current: 'skip', status: 'disabled', remark: '流程禁用' } })
|
||||
deployTrace.set({ tasks: null })
|
||||
continue
|
||||
}
|
||||
try {
|
||||
|
|
|
@ -29,7 +29,7 @@ export class SshClient {
|
|||
try {
|
||||
for (const transport of transports) {
|
||||
logger.info('上传文件:', JSON.stringify(transport))
|
||||
await this.exec({ conn, cmd: 'mkdir ' + path.dirname(transport.remotePath) })
|
||||
await this.exec({ connectConf, script: 'mkdir -p ' + path.dirname(transport.remotePath) })
|
||||
await this.fastPut({ sftp, ...transport })
|
||||
}
|
||||
resolve()
|
||||
|
@ -59,10 +59,10 @@ export class SshClient {
|
|||
let data = null
|
||||
stream.on('close', (code, signal) => {
|
||||
console.log(`[${connectConf.host}][close]:code:${code}, signal:${signal} `)
|
||||
|
||||
if (code === 0) {
|
||||
resolve(data.toString())
|
||||
} else {
|
||||
reject(data.toString())
|
||||
data = data ? data.toString() : null
|
||||
resolve(data)
|
||||
}
|
||||
conn.end()
|
||||
}).on('data', (ret) => {
|
||||
|
@ -70,7 +70,7 @@ export class SshClient {
|
|||
data = ret
|
||||
}).stderr.on('data', (err) => {
|
||||
console.log(`[${connectConf.host}][error]: ` + err)
|
||||
data = err
|
||||
reject(new Error(err.toString()))
|
||||
stream.close()
|
||||
})
|
||||
})
|
||||
|
|
|
@ -45,6 +45,7 @@ export class UploadCertToHost extends AbstractHostPlugin {
|
|||
async execute ({ cert, props, context }) {
|
||||
const { crtPath, keyPath, accessProvider } = props
|
||||
const connectConf = this.getAccessProvider(accessProvider)
|
||||
console.log('connectConf', connectConf)
|
||||
const sshClient = new SshClient()
|
||||
await sshClient.uploadFiles({
|
||||
connectConf,
|
||||
|
|
|
@ -79,24 +79,22 @@ const defaultOptions = {
|
|||
},
|
||||
{
|
||||
deployName: '流程2-部署到nginx服务器',
|
||||
disabled: true,
|
||||
disabled: false,
|
||||
tasks: [
|
||||
{
|
||||
taskName: '上传证书到服务器',
|
||||
type: 'uploadCertToHost',
|
||||
props:{
|
||||
accessProvider: 'aliyun-linux',
|
||||
upload: [
|
||||
{ from: '{certPath}', to: '/xxx/xxx/xxx.cert.pem' },
|
||||
{ from: '{keyPath}', to: '/xxx/xxx/xxx.key' }
|
||||
]
|
||||
accessProvider: 'aliyun-ssh',
|
||||
crtPath: '/root/certd-test/cert.pem',
|
||||
keyPath: '/root/certd-test/cert.key'
|
||||
}
|
||||
},
|
||||
{
|
||||
taskName: '重启linux',
|
||||
type: 'hostShellExecute',
|
||||
props:{
|
||||
accessProvider: 'aliyun-linux',
|
||||
accessProvider: 'aliyun-ssh',
|
||||
script: ['ls']
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue