fix publish backup flow
This commit is contained in:
@@ -27,7 +27,7 @@ pipeline {
|
||||
string(name: 'SPACETIME_ROOT_DIR', defaultValue: '/stdb', description: 'spacetime CLI root-dir;需与自托管 spacetimedb.service 一致')
|
||||
string(name: 'SPACETIME_RUN_AS_USER', defaultValue: 'spacetimedb', description: '执行 spacetime publish 的本机用户,默认使用自托管服务用户')
|
||||
booleanParam(name: 'CLEAR_DATABASE', defaultValue: false, description: '是否清空数据库后发布')
|
||||
choice(name: 'DATABASE_BACKUP_MODE', choices: ['async', 'sync', 'skip'], description: '数据库备份策略:async 在 publish 成功后触发服务器 systemd 备份并继续;sync 在 publish 前等待备份完成且失败阻断;skip 跳过')
|
||||
choice(name: 'DATABASE_BACKUP_MODE', choices: ['async', 'sync', 'skip'], description: '数据库备份策略:async 在 publish 前生成本地冷备份、后台上传 OSS;sync 在 publish 前等待上传完成且失败阻断;skip 跳过')
|
||||
}
|
||||
|
||||
stages {
|
||||
@@ -143,7 +143,18 @@ pipeline {
|
||||
if (!(backupMode in ['async', 'sync', 'skip'])) {
|
||||
error("DATABASE_BACKUP_MODE 只能是 async、sync 或 skip: ${backupMode}")
|
||||
}
|
||||
def backupArg = "--backup-mode \"${backupMode}\""
|
||||
def publishScriptPath = 'scripts/deploy/production-stdb-publish.sh'
|
||||
def publishScriptText = readFile(file: publishScriptPath, encoding: 'UTF-8')
|
||||
def publishScriptSupportsBackupMode = publishScriptText.contains('--backup-mode')
|
||||
def backupArg = ''
|
||||
if (publishScriptSupportsBackupMode) {
|
||||
backupArg = "--backup-mode \"${backupMode}\""
|
||||
} else if (backupMode == 'sync') {
|
||||
error('当前工作区的 scripts/deploy/production-stdb-publish.sh 还不支持 --backup-mode,无法保证 sync 语义。请先更新工作区脚本后再运行。')
|
||||
} else {
|
||||
echo "[Jenkins] 当前工作区脚本还不支持 --backup-mode,async/skip 自动降级为 --skip-backup,避免参数不兼容导致发布失败。"
|
||||
backupArg = '--skip-backup'
|
||||
}
|
||||
def rootArg = "--root-dir \"${params.SPACETIME_ROOT_DIR?.trim() ? params.SPACETIME_ROOT_DIR.trim() : '/stdb'}\""
|
||||
def runAsArg = params.SPACETIME_RUN_AS_USER?.trim()
|
||||
? "--run-as-user \"${params.SPACETIME_RUN_AS_USER.trim()}\""
|
||||
|
||||
Reference in New Issue
Block a user