참고 : Roundhouse는 "버려졌습니다"
Roundhouse는 훌륭한 도구이며, 다른 사람이 유지하지 못했기 때문에 몇 년 동안 주요 관리자 중 하나였습니다. 그러나이 프로젝트는 수년 동안 사용되어 왔으며 새로운 기능이나 리팩토러를 소개 할 때 작업하기가 어려워지는 기술 부채를 발생시키기 시작했습니다.
생각을 한 후, 나는 0에서 시작하여 현대 .NET (2021 년 .NET 6에서 시작)에서 시작하여 Roundhouse의 후임자를 만들기로 결정했습니다. 다양한 데이터베이스 등에 연결하기위한 최신 타사 라이브러리 등 Nhibernate를 종속성으로 제거했습니다. 버전 설정 테이블 만 만들 때만 사용되었으며 약간의 오버 킬처럼 보였고 빠른 전진 기술을 이동하기가 어려웠습니다. 그러한 큰 의존성으로 현명합니다. LOG4NET도 Serilog로 대체되었습니다.
Roundhouse는 물론 사라지지 않을 것이며 소스 코드는 여기에 머물 것입니다. 그러나 현재 라운드 하우스의 적극적인 개발은 없습니다. 나는 후임자와 함께 여행을 계속합니다. 이제 버전 1.6에 있으며 안정적으로 간주됩니다. 적극적으로 개발 중입니다.
저기로 가서 시도해보십시오. Roundhouse에서 거의 기능을 완료 해야하는 경우 누락 된 내용을 찾으면 문제를 제기하거나 PR을 제출하십시오.
프로젝트 라운드 하우스 - 데이터베이스 변경 관리가 올바르게 완료되었습니다
![라운드 하우스 - 전문 데이터베이스 관리](https://images.downcodes.com/uploads/20250215/img_67aff8a6db26230.png)
특허
Apache 2.0- Docs Legal 참조 (ZIP 폴더에서만 법률)
선적 서류 비치
위키
정보
개요
Roundhouse는 자동화 된 데이터베이스 배포 (변경 관리) 시스템으로 현재의 관용구를 사용하고 훨씬 더 많은 것을 얻을 수 있습니다. 현재 Oracle 1 , SQL Server (2000/2005/2008/Express), Access 1 , MySQL, SQLite 및 PostgreSQL에서 작동합니다. 다른 데이터베이스에 대한 향후 계획이 있습니다.
유지 보수 문제와 배치 용이성을 모두 해결하고자합니다. 우리는 다른 데이터베이스 관리 시스템 (SQL 스크립트)과 동일한 관용구를 따르지만 향후 유지 보수 문제에 대해 생각한다는 점에서 다릅니다. 우리는 항상 특정 스크립트 (함수, 뷰, 저장된 절차 및 권한과 같은 무국적 부족)를 적용하려고하므로 모든 것을 변경 스크립트에 버릴 필요가 없습니다. 이것은 미래의 소스 제어 문제를 해결하려고합니다. 현재 소스 컨트롤 버전에 따라 데이터베이스를 버전 할 수있을 때 얼마나 달콤합니까?
1) Cross-Platform .NET Core Global Tool 버전이 아닌 Windows의 전체 프레임 워크에서만.
라운드 하우스로 시작합니다
다운로드
https://github.com/chucknorris/roundhouse/releases에서 Roundhouse를 다운로드 할 수 있습니다
빌드 서버에서 https://ci.appveyor.com/project/chucknorris/roundhouse/build/artifacts에서 사본을 얻을 수도 있습니다.
보석 ( 0.9.0 이상으로 업데이트되지 않음, 죄송합니다 )
루비 1.8.6+ (및 보석 1.3.7+)가 설치된 경우 현재 라운드 하우스의 현재 릴리스를 빠르게 릴리스 할 수 있습니다!
-
gem install roundhouse
입력하십시오 - 그런 다음 어디서나
rh [options]
입력 할 수 있습니다.
너겟
Nuget을 사용하면 현재 Roundhouse의 출시를 신속하게 출시 할 수 있습니다!
- Visual Studio 패키지 관리자 콘솔 유형
install-package roundhouse
에서 -
roundhouse.lib
, roundhouse.msbuild
및 roundhouse.refreshdatabase
도 있습니다
초콜릿
Chocolatey는 apt-get과 같지만 창문 용! 이것은 현재 라운드 하우스를 기계에 빠르게 릴리스하는 대체 방법입니다!
-
cinst roundhouse
입력하십시오 - 그런 다음 어디서나
rh [options]
입력 할 수 있습니다.
DotNet Core Global Tool (Windows, Linux, MacOS 등)
-
dotnet tool install -g dotnet-roundhouse
입력하십시오 - 그런 다음 어디서나
rh [options]
입력 할 수 있습니다.
배경에서 발생하는 일에 대한 자세한 내용은 여기에 있습니다 : https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/ 그러나 간단히 말해서 바이너리를 ~/.dotnet/tools
에 설치합니다. ~/.dotnet/tools
폴더.
이 작업을 위해서는 상자에 DotNet Core를 설치해야합니다. 여기에서 얻을 수 있습니다 : https://dot.net.
Docker : Dotnet Core Global Tool
기존 Docker 인프라에서 Roundhouse를 쉽게 통합 할 수 있습니다. Docker Compose를 사용하거나 직접 잡아 당겨 실행하십시오. 아마도 이미지를 기반으로하고 적절하게 자신의 사용자 지정을 추가해야합니다. Docker Image는 Debian 10 Linux 기본 이미지에 Roundhouse의 Dotnet Core Global Tool Distribution을 가지고 있습니다.
-
docker pull dotnetroundhouse/roundhouse
입력하십시오 -
docker run dotnetroundhouse/roundhouse
입력하십시오
원천
이것이 우리가하고있는 일의 출혈 가장자리에 도달하는 가장 좋은 방법입니다.
- 소스를 컴퓨터로 복제하십시오.
git clone git://github.com/chucknorris/roundhouse.git
-
cd roundhouse
입력하십시오 -
git config core.autocrlf false
입력하십시오. -
git status
입력하십시오. 변경할 파일이 표시되지 않아야합니다. - run
build.ps1
. 참고 : 경로에 git이 있어야합니다 (일반 명령 줄을 열고 git을 입력하십시오).
개발
빌드 시스템은 어퍼컷을 사용하고 있지만 앞으로도 유지되지 않을 것입니다. 우리는 MSBuild 및 PowerShell과 같은 더 많은 "메인 스트림"빌드 도구를 표준화하려고 노력할 것입니다. 소스 코드에는 아직 어퍼컷이 여전히 남아 있지만 ( build
폴더에서) 아마도 가까운 시일 내에 제거 될 것입니다.
명령 줄을 사용하려면 경로에서 다음이 필요합니다.
- MS 빌드
- gitversion (Choco를 실행하는 것이 가장 쉬운 gitversion.portable. 당신은 초콜릿을 실행하고 있지 않습니까?)
- Nuget Command Line (Choco를 실행하기 가장 쉬운 nuget.commandline. 당신은 초콜릿을 실행하고 있지 않습니까?)
중요한
참고 : 소스를보고있는 경우 솔루션을 열기 전에 Build.ps1을 실행하십시오. iLmerge-ing MySQL DLLS에 필요한 keywords.txt
파일을 추출하고 빌드는 불평하지 않습니다.
요구 사항
- .NET Framework 4.6.1 (전체 프레임 워크 버전), 또는
- .NET Core 2.1+ (DotNet Core 배포 용)
- SQL 서버에 대한 SA 액세스 (생성 또는 삭제 용)
- 데이터베이스에 대한 액세스 변경 (다른 모든 것에 대해)
기부
기부금 -이 제품을 사용하는 것을 좋아하거나 어떤 식 으로든 시간과 돈을 절약 한 경우 기부를 고려하십시오.
그것은 제품 업데이트, 사이트 호스팅 등을 지불하는 데 도움이됩니다.
릴리스 노트
전체 릴리스 로그는 릴리스를 참조하십시오
1.0.2
버그 픽스 릴리스
Dotnet Core 도구 포장에서 버그가 수정되었으며 로그 폴더 경로와 연결 문자열이있는 다른 버그.
1.0.1
병합 오류 릴리스 수정
1.0.0
크로스 플랫폼 DotNet Core 및 DotNet Standard ++
큰 기술 릴리스. Roundhouse는 이제 오래된 .NET 프레임 워크 외에 .NET Core에서 실행됩니다.
0.9.1
두 개의 버그 수정
0.9.0 릴리스 후 사용자는 두 가지 중요한 버그를 식별했습니다. 이들은 빠른 포인트 릴리스에 고정되어 있습니다.
(전체 릴리스 노트는 릴리스 참조)
0.9.0
현대화 툴링에 중점을 둡니다
Roundhouse는 툴링 측면에서 일할 수있는 일을했습니다. .NET 3.5, Old, Nant 기반 빌드 체인 등에 대한 의존성. 우리는이 작업을 시작하고 있습니다. 아직 완료되지 않았지만 길에 있습니다. 기능적으로 자랑할만한 것은 아니지만 Rh.exe는 이제 .NET 3.5에 더 이상 의존하지 않기 때문에 Windows Server 2016에서 실행할 수 있어야합니다.
(전체 릴리스 노트는 릴리스 참조)
0.8.8
풀 요청을 따라 잡기 (릴리스 노트 릴리스 참조)
0.8.7
어머나!! 라운드 하우스 릴리스입니다 !!
오랜 시간이 지났습니다. 나는 완벽한 릴리스 노트를 작성하는 데 어려움을 겪고 싶지 않았으므로 지난 4 년간의 커밋 역사를 요약하고 있습니다. 나는 기여한 사람이 당신의 기여를 구체적으로 인정하지 못해서 약간 느끼지 않기를 바랍니다. 나는 앞으로 더 잘할 계획이다.
향상
- 트랜잭션 범위를 벗어난 스크립트를 실행하는 옵션이 추가되었습니다
- Azure 연결 문자열을 처리하십시오
- 스플리터로 시작하는 파일을 올바르게 분할하십시오
- 거래 플래그를 존중하십시오
- 로깅 향상
- 추가 스위치 -WarnandignoreonOneTimescriptChanges
버그 수정
- SQL 연결 오류 만 재 시도합니다
- Postgres 연결 처리 오류를 올바르게 처리하십시오
0.8.6
향상
- GIT를 공식 저장소로 사용하십시오. (mpareja)
- 어퍼컷 버전 1.4.2로 업그레이드하십시오. (FerventCoder)
- 데이터베이스 복원 : 특정 시간 초과 값을 복원합니다. (ICETOAST -PULL #90)
- 스크립트 변경을 감지 할 때 EOL 형식 변경을 무시하십시오. (Lahma -Pull #104)
- 디버그 로그에 SQL 인쇄 문을 포함시킵니다. (FerventCoder -Issue #68)
- 오류가 발생하면 로그로 실행되는 명령문을 포함하십시오. (FerventCoder -Issue #66)
- 'runbeforeup'언제든지 디렉토리를 추가했습니다. (CDREXLE -PULL #51)
- 텍스트 파일에서 해결 버전을 지원합니다. (Mpareja -Pull #50, Pull #55)
- 스크립트를 'Itemran'디렉토리로 끄는 옵션을 추가하십시오. (Lahma -Pull #47)
- WarnonOneTimescriptChange는 이제 변경된 일회성 스크립트가 다시 실행됩니다. (Biggernoise -Pull #35)
- Nhibernate 버전 3.3.2로 업그레이드하십시오. (Drusellers)
- Fubucore, Htmltags 및 StructureMap을 업그레이드하십시오. (Drusellers)
버그 수정
- SQL 배치 파서 : 훈련 주석, 단일 따옴표 처리. (Mpareja -Pull #108)
- SQL Batch Parser : Hang을 수정하십시오. (Andersmalmgren -Pull #100)
- 토큰 교체기 : 타의 추종을 불허하는 사례를 보존하십시오. (Mpareja -Pull #65)
- SQL 스크립트는 더 이상 4000 자로 잘리지 않습니다. (Charoco, FerventCoder -Pull #61)
- Oracle : NULL 값의 처리를 수정하십시오. (Rdingwall -PULL #59, Issue #58)
- 스크립트 파일 버전 관리자 : 예외 수정. (Michael Kobaly -Google 코드의 문제 #68)
- 명시 적으로 말하면 DB 복구 모드 만 변경하십시오. (FerventCoder -Google 코드의 문제 #69)
- 디버그 명령 줄 스위치를 수정했습니다. (FerventCoder -Issue #40)
- NUGET 패키지를 설치할 때 Log4Net의 버전 1.2.10이 사용됩니다. (FerventCoder -Issue #41)
- 수정 : RH 예외의 벌목을 향상시킵니다. (Torkelo -Pull #60)
변화를 깨뜨립니다
- Roundhouse는
recoverymode
모드 옵션이 명시 적으로 simple
하거나 full
로 설정된 경우 DB 복구 모드를 변경합니다. 과거에는 Roundhouse는 full
으로 기본값을 얻었지만 데이터베이스를 작성/복원하는 동안 복구 모드 만 설정했습니다. Roundhouse에 데이터베이스를 작성/복원하여 데이터베이스 기본값을 사용하지 않으려면 복구 모드 옵션을 지정해야합니다.
0.8.5
- 수정 : nhibernatessessionFactoryBuilder의 KeyNotFoundException. 자세한 내용은 [문제 59] (http://code.google.com/p/roundhouse/issues/detail?id=59)를 참조하십시오. (R361)
- SQLITE 지원! . 세부 사항 #21 (R360) 참조
- PostgreSQL 지원! 감사합니다 Siimv! 세부 사항 #30 (R359) 참조
- 새로운 구성 스위치! SearchAllSubDirectoriesinSteadOfTraverse- 모든 마이그레이션 서브 폴더는 기본적으로 통과하여 각 폴더 스크립트의 순서대로 실행됩니다. 이 옵션은 모든 항목을 동시에 하위 폴더로 실행합니다. 감사합니다 Siimv! 세부 사항 #31 (R359) 참조
- 수정 : 복원과 함께 작동하지 않는 트랜잭션. 세부 사항 #26 (R357) 참조
- 수정 : SQL Server를 사용하여 불쾌한 버그를 고정하여 연결을 유지하려고 시도하고 (Drop/Create 모드를 방해) 전송 오류를 제공합니다. 세부 사항 #12 (R357) 참조
- 새로운 버전 리졸버! - 스크립트 번호 버전화. 세부 사항 #25 (R356) 참조
- 수정 : 사용자 정의 작성 스크립트는 배치 문을 분할해야합니다. 세부 사항 #22 (R353) 참조
- 새로운 마이그레이션 폴더! runaftercreatedatabasefolder- 데이터베이스가 생성 된 후에 만 한 번만 실행됩니다. 이것은 현재 제한된 데이터베이스 유형 세트와 함께 작동합니다. 사용 중인지 테스트하십시오. 세부 사항 #20 (R351) 참조
- 거의 모든 것이 이제 내면화되었습니다. 세부 사항 #8 및 #15 (R350) 참조
- 수정 : 스냅 샷으로 데이터베이스를 삭제할 수 없습니다. 세부 사항 #13 (R349) 참조
- 데이터베이스 작성 사용자 정의 스크립트는 파일 경로를 처리 할 수 있습니다. 세부 사항 #17 (R348) 참조
- 수정 : SQL Server 2000은 모든 테이블을 생성해야합니다. 세부 사항 #18 (R346) 참조
- RH 어셈블리가 이제 서명되었습니다. 세부 사항 #14 (R342) 참조
- 수정 : 임시 로그 위치를 제거했습니다. 세부 사항 #7 (R340) 참조
- 새로운 구성 스위치! DisableTokenReplacement- 토큰 교체를 구성 할 수 있어야합니다. 자세한 내용은 문제 56을 참조하십시오. (R339)
- 수정 : 토큰 교체자는 찾은 품목에 대해서만 교체해야합니다. 자세한 내용은 문제 56을 참조하십시오. (R339)
- 가능한 중단 변화! 파일 인코딩은 항상 UTF-8으로 파일을 읽으려고하지만 ANSI로 돌아갑니다. ANSI에서 인코딩하면 잘못 될 수 없습니다. 자세한 내용은 39 호를 참조하십시오. (R337)
- 복원은 지정되지 않은 경우 파일을 기본 위치로 이동하는 데 약간 더 똑똑합니다. 세부 사항 #9 또는 이슈 13 (R336) 참조
- 수정 : 빈 텍스트에서 토큰 교체를 실행하지 마십시오. 세부 사항 #10 (R330) 참조
- 맞춤형 스크립트도 토큰 교체를 실행합니다 (R321)
- 새로운 구성 스위치! 사용 가능한 두 개의 새로운 스위치 - Commandtimeout 및 CommandtimeoutAdmin! (R329)
- 수정 : Migrate는 지금 Log4Net을 구성하려고하지 않습니다 (라이브러리가있는 문제를 일으킨다) (R326)
- 새로운 마이그레이션 폴더! 이제 사용 가능한 색인 폴더 (R327)
- 새로운 마이그레이션 폴더! 이제 AlterDatabase 폴더를 사용할 수 있습니다. 세부 사항 #6 (R324) 참조
- 수정 사항 : Oracle 용 샘플 포함 작동하지 않습니다. 자세한 내용은 [문제 55] (http://code.google.com/p/roundhouse/issues/detail?id=55)를 참조하십시오. (R322)
- 사용자 정의 복원 옵션은 토큰 교체를 사용해야합니다 (R321)
- MySQL 지원! . 감사합니다 Diyan. 세부 사항 #3 (R320) 참조
0.8.0.300
- RH는 이제 '{{propertyname}}'을 사용하여 SQL 파일에서 토큰 교체를 수행합니다. 자세한 내용은 [문제 33] (http://code.google.com/p/roundhouse/issues/detail?id=33)를 참조하십시오. (R299)
- 항상 '.Evertime'이있는 파일을 실행하십시오. 이름으로. 자세한 내용은 [문제 51] (http://code.google.com/p/roundhouse/issues/detail?id=51)을 참조하십시오. (R299)
- 라운드 하우스는 임베딩을 위해 DLL을 선적합니다. 자세한 내용은 [문제 44] (http://code.google.com/p/roundhouse/issues/detail?id=44)를 참조하십시오. 세부 사항은 반 유체 인터페이스가 있습니다 - 자세한 내용은 (https://gist.github.com/977990)를 참조하십시오. (R299)
- 수정 : 환경 별 파일 다른 환경이 이름의 일부인 경우 다른 환경을 실행합니다 (즉, Bobtest는 테스트를 통해 실행됩니다). 자세한 내용은 [문제 50] (http://code.google.com/p/roundhouse/issues/detail?id=50)을 참조하십시오. (R299)
- 다른 스크립트 폴더가 실행 된 후 실행되는 폴더가 추가되었습니다. 자세한 내용은 #1을 참조하십시오. (R297)
- 스크립트를 수정하는 것은 매번 버그를 실행하는 두 번 수정되었습니다. 자세한 내용은 #5를 참조하십시오. (R296)
- 샘플은 이제 릴리스 폴더의 프로젝트입니다. (R287)
- MSBuild를 다시 사용할 수 있습니다. (R288)
0.7.0.281
- 연결 문자열 사용과 관련하여 몇 가지 문제가 수정되었습니다. 이제 서버/데이터베이스가 아닌 연결 문자열 만 제공 할 수 있어야합니다.
0.7.0.276
- 추적 테이블에 Roundhouse ID 열이있는 Collation 문제를 수정했습니다. 자세한 내용은 [문제 46] (http://code.google.com/p/roundhouse/issues/detail?id=46)를 참조하십시오. (R274)
- RestoreFrompath는 상대적인 경로를 취할 수 있습니다. (R269)
- RH는 이제 사용자 상호 작용없이 내부를 업그레이드 할 수 있습니다. 자세한 내용은 [문제 40] (http://code.google.com/p/roundhouse/issues/detail?id=40)를 참조하십시오. (R268)
- MSBuild / Nant 작업은 더 이상 사용되지 않으며 더 이상 연결되지 않습니다. 콘솔을 사용하여 작업에서 호출하십시오. (R268)
- RH는 NHibernate 스키마 생성/업데이트에 대한 지원이 다릅니다 (R267- Branch, R268)
- fluentnhibernate 및 nhibernate는 이제 내부에 사용되고 있습니다 (R267 -Branch, R268)
- SMO는 더 이상 사용되지 않고 제거됩니다 (R203- Branch, R268)
- 보석과 업그레이드 빌드, 오 마이! (R259)
- SQL2000 ~ 2005는 이제 원활한 전환입니다. (R221)
- 수정 : SQL2000 -ScriptSrun 이제 외국 키에 대한 버전을 올바르게 참조하십시오. (R220)
- 수정 : DDL 트랜잭션을 지원하는지 데이터베이스에 요청하기 전에 연결을 초기화해야합니다. (R215)
- 수정 : 오라클로 실행할 때 대문자 사용자 이름. (R200)
- RH는 Redgate와의 다른 지원을 가지고 있습니다. 자세한 내용은 샘플 프로젝트를 참조하십시오. (R197)
- 수정 : 스크립트 실행 오류는 이제 스크립트 실행에 대한 종속성이없는 버전 번호 및 경로를 업데이트합니다. 트랜잭션 실행 중에 완료하고 여전히 오류를 캡처 할 수 있습니다. (R196)
- 수정 : 스크립트 실행 오류 테이블에서 DDL/DML (UP) 파일에 대한 errortical 변경 사항을 캡처합니다. (R191)
- 관리 작업을 수행하기 위해 관리자 연결 문자열이 추가되었습니다. (R190)
사전 릴리스 노트
이전 릴리스 노트는 위키에 있습니다.
크레딧
어퍼컷 - 자동 빌드 (10 분 이내에 자동화 된 빌드?!) http://projectuppercut.org