Nota: Roundhouse está "abandonado"
Roundhouse es una herramienta maravillosa, y fui uno de los principales mantenedores durante un par de años, ya que nadie más la mantuvo, y me proporcionó un gran valor. Sin embargo, el proyecto ha existido durante muchos años y había comenzado a acumular una deuda técnica con la que se volvió difícil trabajar cuando se trataba de introducir nuevas funciones o refactores.
Después de pensarlo, decidí comenzar desde cero y crear un sucesor a Roundhouse, comenzando desde cero en .NET moderno (comenzó en .NET 6 en 2021, ahora en .NET 8), multiplataforma, usando Las últimas bibliotecas de terceros que se conectaron a las diversas bases de datos, etc. Eliminé el nhibernado como una dependencia, ya que solo se usó para crear las tablas de versiones, y parecía un poco exagerado, y fue difícil mover la tecnología rápida hacia adelante. sabio con una dependencia tan grande. Log4Net también fue reemplazado por Serilog.
Roundhouse, por supuesto, nunca desaparecerá, y el código fuente permanecerá aquí. Pero, no hay un desarrollo activo de Roundhouse por ahora. Continúo mi viaje con el sucesor, la rejilla. Ahora está en la versión 1.6 y se considera estable. Está en desarrollo activo.
Dirígete allí y pruébalo. Si debería ser casi completar con Roundhouse, y si encuentra algo que falte, presente un problema o envíe un PR.
Proyecto Roundhouse - Gestión del cambio de base de datos bien hecha

LICENCIA
Apache 2.0 - Ver Docs Legal (solo legal en la carpeta zip)
Documentación
Wiki
Información
Descripción general
Roundhouse es un sistema automatizado de implementación de la base de datos (gestión de cambios) que le permite usar sus idiomas actuales y ganar mucho más. Actualmente trabaja con Oracle 1 , SQL Server (2000/2005/2008/Express), Access 1 , MySQL, SQLite y PostgreSQL. Hay planes futuros para otras bases de datos.
Busca resolver las preocupaciones de mantenimiento y la facilidad de implementación. Seguimos algunos de los mismos modismos que otros sistemas de gestión de bases de datos (scripts SQL), pero somos diferentes en el sentido de que pensamos en futuras preocupaciones de mantenimiento. Siempre queremos aplicar ciertos scripts (cualquier cosa sin estado, como funciones, vistas, procedimientos almacenados y permisos), por lo que no tenemos que tirar todo a nuestros scripts de cambio. Esto busca resolver futuras preocupaciones de control de fuente. ¿Qué tan dulce es cuando puedes verificar la base de datos de acuerdo con tu versión actual de control de origen?
1) Solo en el trabajo de fotograma completo en Windows, no en la versión multiplataforma .NET Core Global Tool.
Comenzando con Roundhouse
Descargas
Puede descargar Roundhouse de https://github.com/chucknorris/roundhouse/releases
También puede obtener una copia del servidor de compilación en https://ci.appveyor.com/project/chucknorris/roundhouse/build/artifacts.
Gemas ( no actualizadas para 0.9.0 y más, lo siento )
Si tiene instalado Ruby 1.8.6+ (y GEMS 1.3.7+), ¡puede obtener la versión actual de Roundhouse en su máquina rápidamente!
- Escriba
gem install roundhouse
- Luego, desde cualquier lugar donde pueda escribir
rh [options]
Nuget
¡Con Nuget, puede obtener el lanzamiento actual de Roundhouse a su aplicación rápidamente!
- En Visual Studio Package Manager Tipo de consola
install-package roundhouse
- También está
roundhouse.lib
, roundhouse.msbuild
y roundhouse.refreshdatabase
Chocolate
Chocolatey es como apt-get, ¡pero para ventanas! ¡Este es un método alternativo para obtener la versión actual de Roundhouse a su máquina rápidamente!
- Escriba
cinst roundhouse
- Luego, desde cualquier lugar donde pueda escribir
rh [options]
Dotnet Core Global Tool (Windows, Linux, macOS, etc.)
- Escriba
dotnet tool install -g dotnet-roundhouse
- Luego, desde cualquier lugar donde pueda escribir
rh [options]
Puede leer más sobre lo que sucede en el fondo, por ejemplo, aquí: https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/, pero en resumen, instala los binarios a su ~/.dotnet/tools
la carpeta.
Necesitará Dotnet Core instalado en su caja para que esto funcione. Puede obtenerlo aquí: https://dot.net.
Docker: herramienta global de Dotnet Core
Puede integrar fácilmente Roundhouse en su infraestructura Docker existente. Use Docker Compose, o simplemente tírelo directamente y ejecutarlo. Probablemente debería construir sobre la imagen y agregar sus propias personalizaciones, según corresponda. La imagen de Docker tiene la distribución de herramientas global de Dotnet Core de Roundhouse en una imagen base de Debian 10 Linux.
- Tipo
docker pull dotnetroundhouse/roundhouse
- Tipo
docker run dotnetroundhouse/roundhouse
Fuente
Esta es la mejor manera de llegar al borde sangrado de lo que estamos haciendo.
- Clonar la fuente hasta su máquina.
git clone git://github.com/chucknorris/roundhouse.git
- Escriba
cd roundhouse
- Escriba
git config core.autocrlf false
para dejar finales de línea tal como son. - Escriba
git status
. No debe ver ningún archivo para cambiar. - Ejecutar
build.ps1
. Nota: debe tener Git en la ruta (abra una línea de comando regular y escriba Git).
Desarrollo
El sistema de compilación ha estado usando UpperCut, pero esto probablemente no se mantendrá en el futuro. Intentaremos estandarizar más herramientas de construcción de "flujo principal" como MSBuild y PowerShell. Todavía hay algunos restos de uppercut en el código fuente (especialmente en la carpeta build
), pero esto probablemente se eliminará en el futuro cercano.
Para trabajar con la línea de comando, necesitará lo siguiente en su camino:
- MS Build
- Gitversion (más fácil de ejecutar Choco Install Gitversion. Portable. Estás ejecutando Chocolatey, ¿no?)
- Línea de comandos de Nuget (más fácil de ejecutar Choco Instale Nuget. Commandline. Estás ejecutando Chocolatey, ¿no?)
IMPORTANTE
Nota: Si está mirando la fuente, ejecute build.ps1 antes de abrir la solución. Extrae los archivos de keywords.txt
.
Requisitos
- .Net framework 4.6.1 (para la versión completa de marco), o
- .NET Core 2.1+ (para la distribución de núcleo de Dotnet)
- SA Acceso al servidor SQL (para la creación o eliminación)
- Cambiar el acceso a la base de datos (para todo lo demás)
DONAR
Donaciones aceptadas: si le gusta usar este producto o le ha ahorrado tiempo y dinero de alguna manera, considere hacer una donación.
Ayuda a mantener el producto actualizado, paga el alojamiento del sitio, etc. https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2ra38uksk6ezu
Notas de lanzamiento
Consulte los lanzamientos para los registros de lanzamiento completo
1.0.2
Versión de corrección de errores
Se corrigió el error en el empaque de la herramienta de núcleo de Dotnet, y otro error con rutas de carpeta de registro y colon en la cadena de conexión.
1.0.1
Corrección de lanzamiento de merge-error
1.0.0
Núcleo de dotnet multiplataforma y estándar de dotnet ++
Gran liberación tecnológica. Roundhouse ahora se ejecuta en .NET Core además del viejo y antiguo marco .NET.
0.9.1
Dos correcciones de errores
Después de la versión 0.9.0, los usuarios identificaron dos errores significativos. Estos se arreglan en una versión de punto rápido.
(Consulte la versión para las notas completas de la versión)
0.9.0
Concéntrese en modernizar las herramientas
Roundhouse ha tenido un poco de atención para hacer herramientas en cuanto a herramientas. Dependencia de .NET 3.5, antigua cadena de construcción basada en NANT, etc. Estamos comenzando este trabajo. Todavía no está hecho, pero en camino. En cuanto a las funciones, no es mucho que presumir, pero Rh.exe ahora debería poder ejecutarse en Windows Server 2016 fuera de la caja, porque ya no depende de .NET 3.5.
(Consulte la versión para las notas completas de la versión)
0.8.8
Ponerse al día con las solicitudes de extracción (consulte la versión para las notas de la versión)
0.8.7
¡¡DIOS MÍO!! ¡Es un lanzamiento de Roundhouse!
Ha pasado mucho tiempo. No quería que me empantane al escribir las notas de lanzamiento perfectas, así que estoy resumiendo los últimos cuatro años de historia. Espero que nadie que contribuyó se sienta despreciado por mi fracaso para reconocer específicamente su contribución. Tengo la intención de hacerlo mejor en el futuro.
Mejoras
- Opción agregada para ejecutar scripts fuera del alcance de la transacción
- Manejar cadenas de conexión Azure
- Dividir correctamente los archivos que comienzan con un divisor
- Respetar la bandera de transacciones
- Registro mejorado
- Interruptor agregado -WarnandignoreonEnTimescriptChanges
Correcciones de errores
- Solo vuelva a intentarlo en los errores de conexión SQL
- Manejar correctamente el error de conexión de la conexión Postgres
0.8.6
Mejoras
- Use Git como repositorio oficial. (Mpareja)
- Actualice UpperCut a la versión 1.4.2. (Ferventcoder)
- Restauración de la base de datos: use el valor de tiempo de espera específico de restauración. (Icetoast - Pull #90)
- Ignore los cambios de formato EOL al detectar los cambios de script. (Lahma - Pull #104)
- Incluya declaraciones de impresión SQL en el registro de depuración. (FerventCoder - Problema #68)
- Incluya la declaración que se ejecute en el registro cuando ocurra un error. (FerventCoder - Problema #66)
- Se agregó 'runbeforeUp' en cualquier momento del directorio. (Cdrexle - Pull #51)
- Admitir la versión de resolución de un archivo de texto. (Mpareja - Pull #50, Pull #55)
- Agregue la opción para apagar los scripts en el directorio 'ElementsRan'. (Lahma - Pull #47)
- WarnonEnTimescriptChange ahora causará que se vuelvan a ejecutar los scripts únicos. (BiggerNoise - Pull #35)
- Actualizar nHibernate a la versión 3.3.2. (Drusellers)
- Actualice fubucore, htmltags y structUraMap. (Drusellers)
Correcciones de errores
- Parser de lotes SQL: manejar comentarios de capacitación, citas individuales. (Mpareja - Pull #108)
- Parser de lotes SQL: Fix Hang. (Andersmalmgren - Pull #100)
- Reemplazador de tokens: preservar el caso para tokens inigualables. (Mpareja - Pull #65)
- Los scripts SQL ya no se truncaron a 4000 caracteres. (Charoco, FerventCoder - Pull #61)
- Oracle: arreglar el manejo de valores nulos. (Rdingwall - Pull #59, número 58)
- Versión del archivo de script: corrige la excepción. (Michael Kobaly - Problema #68 en el código de Google)
- Solo cambie el modo de recuperación de DB si se le dice explícitamente. (FerventCoder - Problema #69 en el código de Google)
- Se corrigió el interruptor de línea de comando de depuración. (FerventCoder - Problema #40)
- Asegúrese de que se utilice la versión 1.2.10 de LOG4Net al instalar paquetes Nuget. (FerventCoder - Problema #41)
- Solución: Mejorar el registro de las excepciones de Rh. (Torkelo - Pull #60)
Cambios de ruptura
- Roundhouse cambiará el modo de recuperación de DB si la opción
recoverymode
MODE se establece explícitamente en simple
o full
. En el pasado, Roundhouse se debe completar el valor full
, pero solo establecería el modo de recuperación al crear/restaurar la base de datos. Si dependía de Roundhouse para crear/restaurar la base de datos para usted y no desea que se use el servidor de base de datos predeterminado, debe especificar la opción Modo de recuperación.
0.8.5
- FIJA: KeyNotFoundException en nHibernatesessionFactoryBuilder. Consulte [Número 59] (http://code.google.com/p/roundhouse/issues/detail?id=59) para obtener más detalles. (R361)
- SQLITE SOPORT! . Vea los detalles #21 (R360)
- Soporte de PostgreSQL! ¡Gracias siimv! Vea los detalles #30 (R359)
- Nuevo interruptor de configuración! SearchAllSubDirectororiesInsteAtofTraverse: todas las subcarpetas de migraciones se atraviesan de forma predeterminada y se ejecutan en orden de los scripts de cada carpeta. Esta opción ejecuta todos los elementos en subcarpetas al mismo tiempo. ¡Gracias siimv! Vea los detalles #31 (R359)
- FIJO: Transacciones que no funcionan con restauración. Vea los detalles #26 (R357)
- Corrección: se corrigió un error desagradable con SQL Server donde intenta mantener una conexión (interfiere con el modo Drop/Create) y ofrece un error de transporte. Vea los detalles #12 (R357)
- ¡Nuevo resolución de versión! - Versión del número de script. Vea los detalles #25 (R356)
- Corrección: Script de creación personalizado debe dividir las declaraciones de lotes. Vea los detalles #22 (R353)
- ¡Nuevas carpetas de migraciones! RanafterCreateDatabaseFolder: se ejecuta solo una vez y solo después de que se haya creado una base de datos. Esto funciona con un conjunto limitado de tipos de bases de datos en este momento. Pruebe si está planeando usar. Vea los detalles #20 (R351)
- Casi todo ahora está internalizado. Vea los detalles #8 y #15 (R350)
- SEX: No se puede dejar bases de datos con instantáneas. Vea los detalles #13 (R349)
- Crear script personalizado de la base de datos puede manejar las rutas de archivos. Ver detalles #17 (R348)
- SEX: SQL Server 2000 necesita crear todas sus tablas. Vea los detalles #18 (R346)
- Los ensamblados de RH ahora están firmados. Vea los detalles #14 (R342)
- SEX: eliminó la ubicación del registro temporal. Vea los detalles #7 (R340)
- Nuevo interruptor de configuración! DISLABLETOKEKEDREPLOUCCIÓN - El reemplazo del token debe ser configurable. Ver número 56 para más detalles. (R339)
- FIJO: El reemplazo de tokens solo debe reemplazar por los elementos que encuentra. Ver número 56 para más detalles. (R339)
- ¡Posible cambio de ruptura! La codificación de archivos siempre intentará leer archivos como UTF-8, pero volverá a ANSI. No puedes equivocarte si codificas en ANSI. Consulte el número 39 para más detalles. (R337)
- Las restauraciones son un poco más inteligentes sobre mover archivos a una ubicación predeterminada cuando no se ha especificado uno. Consulte los detalles #9 o número 13 (R336)
- SEX: No ejecute reemplazo de token en texto vacío. Vea los detalles #10 (R330)
- Los scripts personalizados también ejecutan reemplazo de token (R321)
- Nuevos interruptores de configuración! Dos nuevos conmutadores disponibles: CommandTimeOut y CommandTimeOutAdmin! (R329)
- SEX: Migrate no intenta configurar log4net ahora (causa problemas con bibliotecas que lo hacen) (R326)
- ¡Nuevas carpetas de migraciones! Carpeta de índices ahora disponible (R327)
- ¡Nuevas carpetas de migraciones! Carpeta alterdatabase ahora disponible. Vea los detalles #6 (R324)
- SEX: La muestra incluida para Oracle no funciona. Consulte [Número 55] (http://code.google.com/p/roundhouse/issues/detail?id=55) para más detalles. (R322)
- Las opciones de restauración personalizada deben usar reemplazo de token (R321)
- Soporte de MySQL! . Gracias Diyan. Vea los detalles #3 (R320)
0.8.0.300
- RH ahora realiza reemplazo de token en los archivos SQL usando '{{Propertyname}}'. Consulte [Número 33] (http://code.google.com/p/roundhouse/issues/detail?id=33) para obtener más detalles. (R299)
- Siempre ejecute archivos que tienen '.everytime'. en el nombre. Consulte [número 51] (http://code.google.com/p/roundhouse/issues/detail?id=51) para obtener más detalles. (R299)
- Roundhouse envía una DLL para incrustar. Consulte [Número 44] (http://code.google.com/p/roundhouse/issues/detail?id=44) para obtener más detalles. Tiene una interfaz semifluente, ver (https://gist.github.com/977990) para obtener más detalles. (R299)
- Corrección: los archivos específicos del entorno ejecutan otros entornos cuando otros entornos son parte del nombre (es decir, BobTest se ejecuta con la prueba). Consulte [número 50] (http://code.google.com/p/roundhouse/issues/detail?id=50) para obtener más detalles. (R299)
- Se ha agregado una carpeta que se ejecuta después de que se han ejecutado las otras carpetas de Scripts en cualquier momento. Ver #1 para más detalles. (R297)
- Solucionando el script modificado dos veces ejecutándose cada error de tiempo. Ver #5 para más detalles. (R296)
- La muestra ahora es un proyecto en la carpeta de lanzamiento. (R287)
- MSBuild está disponible nuevamente. (R288)
0.7.0.281
- Se solucionó algunos problemas con el uso de la cadena de conexión. Ahora debería poder suministrar solo la cadena de conexión y no el servidor/base de datos también.
0.7.0.276
- Se solucionó un problema de recopilación con columnas de identificación de Roundhouse en sus tablas de seguimiento. Consulte [Número 46] (http://code.google.com/p/roundhouse/issues/detail?id=46) para obtener más detalles. (R274)
- Restaorefrompath puede tomar un camino relativo. (R269)
- RH ahora puede actualizar sus partes internas sin interacción del usuario. Consulte [número 40] (http://code.google.com/p/roundhouse/issues/detail?id=40) para obtener más detalles. (R268)
- Las tareas MSBuild / Nant están en desuso y ya no están conectadas. Utilice la consola y llámela desde sus tareas. (R268)
- RH tiene un soporte diferente con la generación/actualizaciones de esquema nHibernate (R267 - Branch, R268)
- FluentnHibernate y NHibernate ahora se están utilizando para las partes internas (rama R267 - R268)
- SMO está desaprobado y eliminado (Rama R203, R268)
- Gemas y actualizaciones de construcción, ¡oh Dios! (R259)
- SQL2000 a 2005 es ahora una transición suave. (R221)
- FIJO: SQL2000 - ScriptSrun ahora hace referencia correctamente a la versión para la clave extranjera. (R220)
- Solución: la conexión debe inicializarse antes de preguntarle a la base de datos si admite las transacciones DDL. (R215)
- Corrección: nombres de usuario mayúsculas cuando se ejecutan con Oracle. (R200)
- RH tiene un apoyo diferente con Redgate. Consulte el proyecto de muestra para obtener más detalles. (R197)
- SEX: SCRIPS Ejecutar errores ahora actualiza el número de versión y la ruta sin depender en los scripts ejecutados. Permite que termine durante las ejecuciones transaccionales y aún captura errores. (R196)
- SEX: Capture los cambios errortásticos en los archivos DDL/DML (UP) en la tabla Ejecutar Script Ejecutar errores. (R191)
- Se agregó una cadena de conexión de administración para realizar tareas administrativas. (R190)
Notas de la versión previa
Las notas de lanzamiento previo están en el wiki.
Créditos
UPPERCUT - BUSTA AUTOMATIVAS (¿Construcción automatizada en 10 minutos o menos?