回滚指南
如何将 Activepieces 回滚到上一个版本
概述
Activepieces 提供了一个回滚命令,可以在你需要降级到以前的版本时逆转数据库迁移。大多数版本都是完全可回滚的——如果某版本不可回滚,发布说明会告知你。
备份
对于大多数升级,你不需要备份,但如果你想要额外保险:
PostgreSQL
pg_dump -Fc $DATABASE_URL > backup-pre-upgrade.dump
PGLite
复制配置的 AP_CONFIG_PATH 下的 pglite 文件夹:
cp -r /path/to/config/pglite /path/to/config/pglite-backup
发布说明
包含不可逆数据库更改的版本会在发布说明底部添加备注,说明哪些迁移受到影响。如果你没有看到备注,则该版本是可回滚的。
执行回滚
回滚命令针对当前(更新)镜像运行,因为它包含迁移逆转逻辑。回滚数据库后,你切换到旧镜像。
步骤 1:停止 Activepieces
docker compose down
步骤 2:运行回滚命令
将 0.78.0 替换为你的当前版本,0.77.0 替换为你想要回退到的版本:
docker run --rm --env-file .env --entrypoint npm \
activepieces/activepieces:0.78.0 \
run rollback -- --to 0.77.0
如果该版本包含破坏性迁移,命令会要求你使用 --force 确认:
docker run --rm --env-file .env --entrypoint npm \
activepieces/activepieces:0.78.0 \
run rollback -- --to 0.77.0 --force
步骤 3:切换到旧镜像
更新你的 docker-compose.yml:
services:
activepieces:
image: activepieces/activepieces:0.77.0
步骤 4:启动 Activepieces
docker compose up -d
从备份恢复
如果你已备份且希望从备份恢复:
dropdb activepieces
createdb activepieces
pg_restore -d activepieces backup-pre-upgrade.dump
然后将 docker-compose.yml 切换到之前的镜像版本并启动 Activepieces。
给贡献者的说明
每个新的数据库迁移必须:
- 实现
Migration而非MigrationInterface - 将
breaking设置为true(破坏性更改)或false(仅新增) - 将
release设置为目标发布版本(例如'0.78.0') - 使用有效的回滚查询实现
down()方法
示例:
import { Migration } from '../../migration'
import { QueryRunner } from 'typeorm'
export class AddNewColumn1710000000000 implements Migration {
name = 'AddNewColumn1710000000000'
breaking = false
release = '0.78.0'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "project" ADD COLUMN "description" text`)
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "project" DROP COLUMN "description"`)
}
}
这些要求由 CI 强制执行——不满足这些要求的迁移的 PR 将无法通过检查。