Merge pull request 'Add deploy pipeline SpacetimeDB auto migration' (#4) from codex/jenkins into master
Some checks failed
CI / verify (push) Has been cancelled

Reviewed-on: http://82.157.175.59:3000/GenarrativeAI/Genarrative/pulls/4
This commit was merged in pull request #4.
This commit is contained in:
2026-04-29 23:47:54 +08:00
8 changed files with 303 additions and 30 deletions

View File

@@ -15,6 +15,8 @@ pipeline {
string(name: 'WEB_PORT', defaultValue: '25001', description: '发布包内静态网站端口,默认 25001')
string(name: 'SPACETIME_PORT', defaultValue: '3101', description: '发布包内本地 SpacetimeDB 端口')
booleanParam(name: 'CLEAR_DATABASE', defaultValue: false, description: '部署时是否清空 SpacetimeDB 数据后再发布 wasm')
booleanParam(name: 'MIGRATE_ON_CONFLICT', defaultValue: true, description: '普通发布遇到 SpacetimeDB schema 冲突时自动导出、清库发布并导入回灌')
string(name: 'MIGRATION_DIRECTORY', defaultValue: '', description: '自动迁移 JSON 输出目录,留空则使用部署目录内 database-migrations/<database>')
booleanParam(name: 'RUN_NPM_CI', defaultValue: false, description: '构建前是否执行 npm ci')
string(name: 'DEPLOY_JOB_NAME', defaultValue: 'Genarrative-Deploy', description: '部署流水线作业名')
string(name: 'DEPLOY_DIRECTORY', defaultValue: '/var/lib/jenkins/deploy/Genarrative', description: '固定部署目录')
@@ -144,6 +146,8 @@ pipeline {
string(name: 'DEPLOY_DIRECTORY', value: params.DEPLOY_DIRECTORY),
string(name: 'WEB_PORT', value: env.EFFECTIVE_WEB_PORT),
booleanParam(name: 'CLEAR_DATABASE', value: params.CLEAR_DATABASE),
booleanParam(name: 'MIGRATE_ON_CONFLICT', value: params.MIGRATE_ON_CONFLICT),
string(name: 'MIGRATION_DIRECTORY', value: params.MIGRATION_DIRECTORY),
booleanParam(name: 'RUN_DEPLOY_HOOKS_WITH_SUDO', value: params.RUN_DEPLOY_HOOKS_WITH_SUDO),
string(name: 'EXPECTED_UPSTREAM_JOB', value: env.JOB_NAME),
]

View File

@@ -13,6 +13,8 @@ pipeline {
string(name: 'DEPLOY_DIRECTORY', defaultValue: '/var/lib/jenkins/deploy/Genarrative', description: '固定部署目录')
string(name: 'WEB_PORT', defaultValue: '25001', description: '静态网站监听端口,默认 25001上游构建并部署流水线会透传同名参数')
booleanParam(name: 'CLEAR_DATABASE', defaultValue: false, description: '部署时是否清空 SpacetimeDB 数据后再发布 wasm')
booleanParam(name: 'MIGRATE_ON_CONFLICT', defaultValue: true, description: '普通发布遇到 SpacetimeDB schema 冲突时自动导出、清库发布并导入回灌')
string(name: 'MIGRATION_DIRECTORY', defaultValue: '', description: '自动迁移 JSON 输出目录,留空则使用部署目录内 database-migrations/<database>')
booleanParam(name: 'RUN_DEPLOY_HOOKS_WITH_SUDO', defaultValue: true, description: 'start.sh / stop.sh 是否通过 sudo -n 执行')
string(name: 'EXPECTED_UPSTREAM_JOB', defaultValue: '', description: '允许触发本作业的上游作业名')
}
@@ -111,6 +113,14 @@ pipeline {
if [[ "${params.CLEAR_DATABASE}" == "true" ]]; then
deploy_args+=(--clear-database)
fi
if [[ "${params.MIGRATE_ON_CONFLICT}" == "true" ]]; then
deploy_args+=(--migrate-on-conflict)
else
deploy_args+=(--no-migrate-on-conflict)
fi
if [[ -n "${params.MIGRATION_DIRECTORY}" ]]; then
deploy_args+=(--migration-dir "${params.MIGRATION_DIRECTORY}")
fi
if [[ "${params.RUN_DEPLOY_HOOKS_WITH_SUDO}" == "true" ]]; then
deploy_args+=(--hook-with-sudo)
fi