39 lines
1.8 KiB
TypeScript
39 lines
1.8 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
describe('deploy-registry.ps1', () => {
|
|
const script = fs.readFileSync(
|
|
path.join(process.cwd(), 'deploy-registry.ps1'),
|
|
'utf8'
|
|
)
|
|
|
|
it('远程部署默认包含升级前数据库备份和 .env 备份', () => {
|
|
expect(script).toContain('[switch]$NoRemoteDbBackup')
|
|
expect(script).toContain('env_backup="$backup_dir/.env.before-upgrade"')
|
|
expect(script).toContain("docker compose -f \"$compose_file\" exec -T postgres sh -c 'pg_dump")
|
|
expect(script).toContain('test -s "$db_backup"')
|
|
})
|
|
|
|
it('远程部署失败时默认会恢复旧 APP_IMAGE 或旧容器镜像', () => {
|
|
expect(script).toContain('[switch]$NoRollback')
|
|
expect(script).toContain('rollback()')
|
|
expect(script).toContain('trap rollback ERR')
|
|
expect(script).toContain('rollback_image="$old_container_image"')
|
|
expect(script).toContain('docker compose -f "$compose_file" up -d --no-deps --pull never --force-recreate "$compose_service" || true')
|
|
})
|
|
|
|
it('部署后校验运行镜像、版本文件和数据库迁移状态', () => {
|
|
expect(script).toContain('verify_running_image')
|
|
expect(script).toContain('actual_image="$(docker inspect "$container_id" --format')
|
|
expect(script).toContain('运行镜像不匹配')
|
|
expect(script).toContain('运行版本不匹配')
|
|
expect(script).toContain('npx prisma migrate status --schema=prisma/schema.prisma')
|
|
})
|
|
|
|
it('远端 shell 变量应以单引号字符串保留,避免被 PowerShell 提前展开', () => {
|
|
expect(script).toContain('$lines.Add(\'docker compose -f "$compose_file" up -d --pull never\')')
|
|
expect(script).toContain('$lines.Add(\'docker compose -f "$compose_file" ps\')')
|
|
expect(script).not.toContain('$lines.Add("docker compose -f `"$compose_file`"')
|
|
})
|
|
})
|