Nota: Roundhouse é "abandonado"
Roundhouse é uma ferramenta maravilhosa, e eu fui um dos principais mantenedores por alguns anos, pois ninguém mais a mantinha, e isso me proporcionou um grande valor. No entanto, o projeto existe há muitos anos e começou a acumular algumas dívidas técnicas que se tornaram difíceis de trabalhar ao tentar introduzir novos recursos ou refactor.
Depois de pensar um pouco, decidi começar de zero e criar um sucessor para a Roundhouse, começando do zero no Modern .NET (iniciado no .NET 6 em 2021, agora no .NET 8), plataforma cruzada, usando As mais recentes bibliotecas de terceiros para se conectar aos vários bancos de dados, etc. Removei o Nibernate como uma dependência, pois foi usado apenas para criar as tabelas de versão e parecia um pouco de exagero, e era difícil de avançar a tecnologia avançada para a frente sábio com uma dependência tão grande. O log4net também foi substituído por Serilog.
É claro que a Roundhouse nunca desaparecerá, e o código -fonte permanecerá aqui. Mas, não há desenvolvimento ativo do Roundhouse por enquanto. Continuo minha jornada com o sucessor, Grate. Agora está na versão 1.6 e considerado estável. Está em desenvolvimento ativo.
Por favor, vá até lá e experimente. Se deve ser quase preenchido com o Roundhouse, e você encontrar qualquer coisa que esteja faltando, registre um problema ou envie um PR.
Projeto Roundhouse - Gerenciamento de mudança de banco de dados Feito corretamente

LICENÇA
Apache 2.0 - Ver Docs Legal (apenas legal na pasta ZIP)
Documentação
Wiki
Informações
Visão geral
A Roundhouse é um sistema automatizado de implantação de banco de dados (gerenciamento de alterações) que permite usar seus idiomas atuais e ganhar muito mais. Atualmente, funciona com o Oracle 1 , SQL Server (2000/2005/2008/Express), Access 1 , MySQL, SQLite e PostgreSQL. Existem planos futuros para outros bancos de dados.
Ele procura resolver preocupações de manutenção e facilidade de implantação. Seguimos alguns dos mesmos idiomas que outros sistemas de gerenciamento de banco de dados (scripts SQL), mas somos diferentes, pois pensamos em preocupações futuras de manutenção. Queremos sempre aplicar certos scripts (qualquer coisa sem estado, como funções, vistas, procedimentos armazenados e permissões), para que não precisemos jogar tudo em nossos scripts de mudança. Isso procura resolver preocupações futuras de controle de origem. Quão doce é quando você pode fazer uma versão do banco de dados de acordo com sua versão atual de controle de origem?
1) Somente no quadro completo no Windows, não na versão da ferramenta global .NET Core Global.
Introdução ao Roundhouse
Downloads
Você pode baixar o Roundhouse em https://github.com/chucknorris/roundhouse/releases
Você também pode obter uma cópia do servidor de construção em https://ci.appveyor.com/project/chucknorris/roundhouse/build/artifacts.
Gems ( não atualizados para 0.9.0 e acima, desculpe )
Se você tiver o Ruby 1.8.6+ (e o GEMS 1.3.7+) instalado, poderá obter o lançamento atual do Roundhouse na sua máquina rapidamente!
- Digite
gem install roundhouse
- Então, de qualquer lugar que você possa digitar
rh [options]
NUGET
Com o NUGET, você pode obter o lançamento atual do Roundhouse no seu aplicativo rapidamente!
- No Visual Studio Package Manager Console Type
install-package roundhouse
- Há também
roundhouse.lib
, roundhouse.msbuild
e roundhouse.refreshdatabase
Chocolatey
O chocolate é como o APT-Get, mas para o Windows! Este é um método alternativo para obter o lançamento atual do Roundhouse para sua máquina rapidamente!
- Digite
cinst roundhouse
- Então, de qualquer lugar que você possa digitar
rh [options]
Ferramenta Global do Dotnet Core (Windows, Linux, MacOS, etc)
- Tipo
dotnet tool install -g dotnet-roundhouse
- Então, de qualquer lugar que você possa digitar
rh [options]
Você pode ler mais sobre o que acontece no fundo, por exemplo, aqui: https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/, mas em suma, ele instala os binários ao seu ~/.dotnet/tools
.
Você precisará do núcleo dotnet instalado em sua caixa para que isso funcione. Você pode obtê -lo aqui: https://dot.net.
Docker: Dotnet Core Global Tool
Você pode integrar facilmente a Roundhouse em sua infraestrutura existente do Docker. Use o Docker compor ou apenas puxe -o diretamente e execute -o. Você provavelmente deve desenvolver a imagem e adicionar suas próprias personalizações, conforme apropriado. A imagem do docker possui a distribuição de ferramentas globais do Dotnet Core do Roundhouse em uma imagem base do Debian 10 Linux.
- Tipo
docker pull dotnetroundhouse/roundhouse
- Tipo
docker run dotnetroundhouse/roundhouse
Fonte
Esta é a melhor maneira de chegar à borda sangrando do que estamos fazendo.
- Clone a fonte até sua máquina.
git clone git://github.com/chucknorris/roundhouse.git
- Tipo
cd roundhouse
- Digite
git config core.autocrlf false
para deixar os finais da linha como estão. - Tipo
git status
. Você não deve ver nenhum arquivo para alterar. - Run
build.ps1
. Nota: Você deve ter git no caminho (abra uma linha de comando regular e digite git).
Em desenvolvimento
O sistema de construção tem usado o UPPERCUT, mas isso provavelmente não será mantido no futuro. Tentaremos padronizar mais ferramentas de criação de "fluxo principal" como MSBuild e PowerShell. Ainda existem alguns restos de uppercut no código -fonte (especialmente na pasta build
), mas isso provavelmente será removido em um futuro próximo.
Para trabalhar com a linha de comando, você precisará do seguinte em seu caminho:
- MS Build
- GitVersion (mais fácil de executar o Choco Install Gitversion.Portable. Você está correndo chocolate, não é?)
- Linha de comando NUGET (mais fácil de executar o Choco Install Nuget.Commandline. Você está executando chocolate, não é?)
IMPORTANTE
Nota: Se você estiver olhando para a fonte - Execute o Build.ps1 antes de abrir a solução. Ele extrai as keywords.txt
necessárias para o Ilmerge-ing mySql DLLs e a construção reclamará sem eles.
Requisitos
- .NET Framework 4.6.1 (para a versão completa da estrutura) ou
- .NET Core 2.1+ (para a distribuição do núcleo de dotnet)
- SA Acesso ao SQL Server (para criação ou exclusão)
- Altere o acesso ao banco de dados (para todo o resto)
DOAR
Doações aceitas - se você gosta de usar este produto ou ele economizou tempo e dinheiro de alguma forma, considere fazer uma doação.
Ajuda a manter o produto atualizado, paga pela hospedagem de sites, etc. https://www.paypal.com/cgi-bin/webcr?cmd=_s-xclick&hosted_button_id=2ra38uksk6ezu
Notas de liberação
Consulte os lançamentos para os registros de liberação completos
1.0.2
Liberação de bugfix
Corrigido o bug na embalagem da ferramenta de núcleo dotnet e outro bug com os caminhos da pasta de log e o cólon na string de conexão.
1.0.1
Correção de liberação de erros de mesclagem
1.0.0
Núcleo de dotnet de plataforma cruzada e padrão de dotnet ++
Grande liberação tecnológica. A Roundhouse agora é executada no .NET Core, além da boa e antiga estrutura .NET.
0.9.1
Duas correntes
Após a versão 0.9.0, os usuários identificaram dois bugs significativos. Estes são fixados em uma liberação rápida de ponto.
(Veja a versão para as notas de lançamento completas)
0.9.0
Concentre -se na modernização de ferramentas
A Roundhouse teve alguma recuperação para fazer em termos de ferramentas. Dependência do .NET 3.5, cadeia de construção antiga, baseada em Nant, etc. Estamos iniciando este trabalho. Ainda não está feito, mas a caminho. Em termos de recursos, não há muito o que se gabar, mas agora o Rh.exe deve ser capaz de executar no Windows Server 2016 pronto para uso, porque não depende mais do .NET 3.5.
(Veja a versão para as notas de lançamento completas)
0,8.8
Alcançando solicitações de tração (consulte a versão para as notas de lançamento)
0.8.7
OH MEU DEUS!! É um lançamento do Roundhouse !!
Já faz muito tempo. Eu não queria ficar atolado a escrever as notas de lançamento perfeitas, por isso estou resumindo os últimos quatro anos de história de compromisso. Espero que ninguém que contribuiu se sinta menosprezado pelo meu fracasso em reconhecer especificamente sua contribuição. Pretendo fazer melhor no futuro.
Aprimoramentos
- Opção adicionada para executar scripts fora do escopo da transação
- Manusear seqüências de conexão do Azure
- Projetos divididos corretamente que começam com um divisor
- Respeite o sinalizador de transações
- Log melhorado
- Switch adicionado -WarnandignoreOnOnTimescriptChanges
Correções de bug
- Apenas tente novamente em erros de conexão SQL
- Lidar corretamente com o erro de conexão pós -gres
0.8.6
Aprimoramentos
- Use o Git como repositório oficial. (MPAREJA)
- Atualize o uppercut para a versão 1.4.2. (FerventCoder)
- Restauração do banco de dados: use Restaurar o valor específico do tempo limite. (ICETOAST - PULL #90)
- Ignore o formato EOL muda ao detectar mudanças de script. (Lahma - Pull #104)
- Inclua declarações de impressão SQL no log de depuração. (FerventCoder - Edição #68)
- Inclua a instrução que está sendo executada no log quando ocorrer um erro. (FerventCoder - Edição #66)
- Adicionado 'RunBeforeUp' Diretório a qualquer momento. (CDREXLE - PULL #51)
- Suporte a versão de resolução de um arquivo de texto. (MPAREJA - PULL #50, PULL #55)
- Adicione a opção para desativar os scripts de copiar no diretório 'itens itens'. (Lahma - Pull #47)
- O WarnoNoNeTimescriptChange agora fará com que os scripts únicos sejam re-executados. (Biggernoise - Pull #35)
- Atualize o Nibernate para a versão 3.3.2. (Drusellers)
- Atualize FUBUCORE, HTMLTAGS e StructureMap. (Drusellers)
Correções de bug
- Analisador de lote SQL: lidar com comentários de treinamento, citações únicas. (MPAREJA - PULL #108)
- Analisador de lote SQL: Fix Hang. (Andersmalmgren - Pull #100)
- Replacador de token: Preserve o estojo para tokens inigualáveis. (MPAREJA - PULL #65)
- Os scripts SQL não são mais truncados para 4000 caracteres. (Charoco, FerventCoder - Pull #61)
- Oracle: corrige o manuseio de valores nulos. (Rdingwall - Pull #59, edição nº 58)
- Versificador de arquivo de script: Corrija a exceção. (Michael Kobaly - Edição #68 no código do Google)
- Altere apenas o modo de recuperação de banco de dados se explicitamente instruído. (FerventCoder - Edição #69 no código do Google)
- Corrigido a chave de linha de comando depurador. (FerventCoder - Edição #40)
- Verifique se a versão 1.2.10 do log4NET é usada ao instalar pacotes NUGET. (FerventCoder - Edição #41)
- Correção: Melhore o registro das exceções da RH. (Torkelo - Pull #60)
Quebrando mudanças
- A Roundhouse alterará o modo de recuperação de banco de dados se a opção de modo
recoverymode
for explicitamente definida como simple
ou full
. No passado, a Roundhouse não seria full
, mas apenas definia o modo de recuperação enquanto criava/restaurava o banco de dados. Se você dependia do Roundhouse para criar/restaurar o banco de dados para você e não deseja que o padrão do servidor de banco de dados seja usado, especifique a opção Modo de recuperação.
0.8.5
- Correção: KeyNotFoundException no NibernatesessionFactoryBuilder. Veja [Edição 59] (http://code.google.com/p/roundhouse/issues/detail?id=59) para obter detalhes. (R361)
- Suporte SQLite! . Veja os detalhes #21 (R360)
- Suporte PostGresql! Obrigado Siimv! Veja detalhes #30 (R359)
- Novo interruptor de configuração! SearchLlSubdirectoriesInsteadofTraverse - Todas as subpastas de migrações são percorridas por padrão e executadas na ordem dos scripts de cada pasta. Esta opção executa todos os itens em subpastas ao mesmo tempo. Obrigado Siimv! Veja os detalhes #31 (R359)
- Correção: transações que não estão trabalhando com restauração. Veja os detalhes #26 (R357)
- Correção: Corrigido um bug desagradável com o SQL Server, onde ele tenta manter uma conexão (interfere no modo Drop/Create) e fornece um erro de transporte. Veja os detalhes #12 (R357)
- Nova versão resolvedor! - Versão do número de scripts. Veja os detalhes #25 (R356)
- Correção: Criar script personalizado deve dividir as instruções em lote. Veja os detalhes #22 (R353)
- Pasta de novas migrações! RUNAFTERCREATADOTABASEFOLDER - executa apenas uma vez e somente depois que um banco de dados foi criado. Isso funciona com um conjunto limitado de tipos de banco de dados no momento. Teste se você está planejando usar. Veja os detalhes #20 (R351)
- Quase tudo agora está internalizado. Veja os detalhes #8 e #15 (R350)
- Correção: Não é possível soltar bancos de dados com instantâneos. Veja os detalhes #13 (R349)
- Criar script personalizado do banco de dados pode lidar com os caminhos de arquivo. Veja os detalhes #17 (R348)
- Correção: o SQL Server 2000 precisa criar todas as suas tabelas. Veja os detalhes #18 (R346)
- Assembléias de RH agora estão assinadas. Veja os detalhes #14 (R342)
- Correção: removido o local do log temporário. Veja detalhes #7 (R340)
- Novo interruptor de configuração! DesabletokenRepling - A substituição do token deve ser configurável. Veja a edição 56 para obter detalhes. (R339)
- Correção: o substituto do token deve substituir apenas os itens encontrados. Veja a edição 56 para obter detalhes. (R339)
- Possível mudança de ruptura! A codificação de arquivos sempre tentará ler os arquivos como UTF-8, mas volta ao ANSI. Você não pode dar errado se codificar no ANSI. Veja a edição 39 para obter detalhes. (R337)
- As restauras são um pouco mais inteligentes sobre a mudança de arquivos para um local padrão quando não foi especificado. Veja detalhes #9 ou edição 13 (R336)
- Correção: Não execute a substituição do token no texto vazio. Veja os detalhes #10 (R330)
- Scripts personalizados também executam a substituição do token (R321)
- Novos interruptores de configuração! Dois novos switches disponíveis - CommandTimeout e CommandTimeoutadmin! (R329)
- Correção: Migre não tenta configurar o log4net agora (causa problemas com bibliotecas que o fazem) (R326)
- Pasta de novas migrações! Pasta de índices agora disponível (R327)
- Pasta de novas migrações! Pasta AlterDatabase agora disponível. Veja os detalhes #6 (R324)
- Correção: a amostra incluída para o Oracle não funciona. Consulte [Edição 55] (http://code.google.com/p/roundhouse/issues/detail?id=55) para obter detalhes. (R322)
- As opções de restauração personalizada devem usar a substituição do token (R321)
- Suporte MySQL! . Obrigado Diyan. Veja detalhes #3 (R320)
0.8.0.300
- O RH agora faz a substituição de token nos arquivos SQL usando '{{PropertyName}}'. Consulte [Edição 33] (http://code.google.com/p/roundhouse/issues/detail?id=33) para obter detalhes. (R299)
- Sempre execute os arquivos que tenham 'todo tempo'. em nome. Consulte [Edição 51] (http://code.google.com/p/roundhouse/issues/detail?id=51) para obter detalhes. (R299)
- Roundhouse envia uma DLL para incorporação. Consulte [Edição 44] (http://code.google.com/p/roundhouse/issues/detail?id=44) para obter detalhes. Possui uma interface semi -fluente - consulte (https://gist.github.com/977990) para obter detalhes. (R299)
- Correção: Arquivos específicos do ambiente executam outros ambientes quando outros ambientes fazem parte do nome (ou seja, o Bobtest é executado com o teste). Consulte [Edição 50] (http://code.google.com/p/roundhouse/issues/detail?id=50) para obter detalhes. (R299)
- Foi adicionada uma pasta que é executada após a execução das outras pastas de scripts sempre que foram adicionadas. Veja #1 para obter detalhes. (R297)
- Corrigindo o script modificado duas vezes em execução cada vez. Veja #5 para obter detalhes. (R296)
- A amostra agora é um projeto na pasta de liberação. (R287)
- O MSBuild está disponível novamente. (R288)
0.7.0.281
- Corrigido alguns problemas com o uso da string de conexão. Agora você deve fornecer apenas a sequência de conexão e não o servidor/banco de dados também.
0.7.0.276
- Corrigido um problema de agrupamento com colunas de identificação Roundhouse em suas tabelas de rastreamento. Consulte [Edição 46] (http://code.google.com/p/roundhouse/issues/detail?id=46) para obter detalhes. (R274)
- Restaurefrompath pode seguir um caminho relativo. (R269)
- O RH agora pode atualizar seus internos sem interação do usuário. Consulte [Edição 40] (http://code.google.com/p/roundhouse/issues/detail?id=40) para obter detalhes. (R268)
- As tarefas msbuild / NANT são preteridas e não são mais conectadas. Por favor, use o console e ligue para suas tarefas. (R268)
- A RH possui suporte diferenciado com a geração/atualizações de esquema Nhibernate (R267 - Branch, R268)
- Fluentnhibernate e Nhibernate estão agora sendo usados para os internos (R267 - Branch, R268)
- SMO é descontinuado e removido (R203 - Branch, R268)
- Gemas e atualizações de construção, oh meu! (R259)
- O SQL2000 a 2005 agora é uma transição suave. (R221)
- Correção: SQL2000 - SCRIPTSRUN agora refere -se corretamente a versão para a chave estrangeira. (R220)
- Correção: a conexão deve ser inicializada antes de perguntar ao banco de dados se ele suportar transações DDL. (R215)
- Correção: nomes de usuário maiúsculos ao executar com o Oracle. (R200)
- RH tem suporte diferenciado com Redgate. Consulte o projeto de amostra para obter detalhes. (R197)
- Correção: os scripts executam erros agora atualiza o número da versão e o caminho sem uma dependência de scripts executados. Permite terminar durante as execuções transacionais e ainda capture erros. (R196)
- Correção: Capture alterações errortásticas nos arquivos DDL/DML (UP) na tabela de erros de execução do script. (R191)
- Adicionado string de conexão de administrador para executar tarefas administrativas. (R190)
Notas de lançamento anterior
As notas de lançamentos anteriores estão no wiki.
Créditos
UPPERCUT - Construções automatizadas (compilação automatizada em 10 minutos ou menos?!) Http://projectuppercut.org