Einleitung
Während Organisationen weiterhin cloudbasierte Lösungen für ihre Geschäfte übernehmen, ist die Notwendigkeit eines effizienteren und automatisierten Ansatzes für die Softwareentwicklung und Bereitstellung immer wichtiger geworden. Die Verwendung von Continuous Integration und Continuous Deployment (CI/CD) Methoden hat in den letzten Jahren an Popularität gewonnen und ist zu einem wesentlichen Aspekt eines Softwareentwicklungslebenszyklus geworden. Mit Hilfe von Azure DevOps, einer cloudbasierten Lösung von Microsoft, können Entwickler leicht CI/CD-Pipelines für SQL Server-Datenbanken erstellen und bereitstellen.
Was ist CI/CD für SQL Server-Datenbanken in Azure DevOps? CI/CD ist ein Prozess, der es Entwicklern ermöglicht, Datenbankänderungen automatisch zu erstellen, sie zu testen und bereitzustellen. Es beinhaltet die Verwendung eines Versionskontrollsystems zur Verwaltung von Änderungen am Datenbankschema, automatisierte Tests und automatisierte Bereitstellung, um sicherzustellen, dass die Änderungen ohne manuelle Intervention in die Produktionsumgebung bereitgestellt werden.
Komponenten
Folgende Hauptkomponenten sind erforderlich, um CI/CD für SQL Server-Datenbanken in Azure DevOps zu implementieren:
- SQL Server Data Tools (SSDT): SSDT ist ein Toolset, welches Entwicklern ermöglicht, SQL Server-Datenbanken zu entwerfen, entwickeln und bereitzustellen. Es ist ein Plugin für Visual Studio, das Entwicklern ermöglicht Datenbankprojekte zu erstellen, die zur Verwaltung von Änderungen am Datenbankschema und Daten verwendet werden können.
- Visual Studio: Visual Studio ist eine Entwicklungsumgebung zum Erstellen von Anwendungen. Es wird verwendet, um SQL Server-Datenbankprojekte mit SSDT zu entwickeln.
- Azure DevOps: Azure DevOps ist eine cloudbasierte Lösung von Microsoft, die eine vollständige Palette von Tools zur Verwaltung des Softwareentwicklungslebenszyklus bereitstellt. Es umfasst Funktionen für Versionskontrolle, Build- und Release-Management und Projektmanagement.
Prozess
Der folgende Prozess ist typisch für die Implementierung von CI/CD für SQL Server-Datenbanken in Azure DevOps:
- Erstellen eines Datenbankprojekts: Erstellen Sie ein Datenbankprojekt in Visual Studio mit SSDT. Dieses Projekt enthält alle Datenbankschemata und Datenobjekte, die bereitgestellt werden müssen.
- Verbindung zu einem Versionskontrollsystem herstellen: Verbinden Sie das Datenbankprojekt mit einem Versionskontrollsystem wie Git oder TFS. Dadurch können Entwickler Änderungen am Datenbankschema und Daten verwalten.
- Erstellen einer Build-Pipeline: Erstellen Sie eine Build-Pipeline in Azure DevOps, die das Datenbankprojekt kompiliert und eine DACPAC-Datei generiert. Diese Datei enthält die SQL-Skripte, die zur Bereitstellung der Datenbankänderungen erforderlich sind.
- Erstellen einer Release-Pipeline: Erstellen Sie eine Release-Pipeline in Azure DevOps, die die Datenbankänderungen in der Zielumgebung bereitstellt. Die Release-Pipeline kann mehrere Stufen wie Dev, Test und Produktion umfassen.
- Automatisierung von Tests: Fügen Sie automatisierte Tests zur Release-Pipeline hinzu, um sicherzustellen, dass die Änderungen die Anwendung nicht beeinträchtigen. Dies kann Unit-Tests, Integrationstests und Leistungstests umfassen.
- Überwachen und Verfolgen: Überwachen und verfolgen Sie die Pipeline mithilfe von Azure DevOps-Dashboards und -Berichten. Dadurch können Probleme identifiziert und der Fortschritt der Pipeline verfolgt werden.
Vor der Einführung von Azure DevOps haben Entwickler eine Vielzahl von Tools und Prozessen zur Implementierung von CI/CD für SQL Server-Datenbanken verwendet. Einige der beliebten Tools sind Redgate SQL Toolbelt, Octopus Deploy und Jenkins. Diese Tools bieten ähnliche Funktionen wie Azure DevOps, Versionskontrolle, Build- und Release-Management und automatisierte Tests.
Azure DevOps
CI/CD für SQL Server-Datenbanken in Azure DevOps
Azure DevOps ist eine cloudbasierte Plattform, die eine Reihe von Tools und Services für Teams bereitstellt, um Software zu planen, zu entwickeln, zu testen und bereitzustellen. Sie ist darauf ausgelegt, Teams effektiver zusammenarbeiten zu lassen und qualitativ hochwertige Softwareprodukte schneller zu liefern. In diesem Teil des Artikels werden wir diskutieren, wie man Azure DevOps für die kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) von SQL Server-Datenbanken verwendet.
Übersicht über Azure DevOps
Azure DevOps ist in mehrere Dienste unterteilt. Diese sind Azure Boards, Azure Repos, Azure Test Plans, Azure Artifacts und Azure Pipelines. Jeder dieser Dienste bietet eine Reihe von Tools und Funktionen, die Teams in die Lage versetzen, effektiver zusammenzuarbeiten und ihren Softwareentwicklungsprozess zu optimieren.
Azure Repos
Azure Repos ist ein Versionskontrollsystem, welches die Verwaltung ihrer Codebasis mithilfe von Git oder Team Foundation Version Control (TFVC) ermöglicht. Es bietet Funktionen wie Branch-Management, Pull Requests und Code-Reviews, um Code-Qualität und Zusammenarbeit sicherzustellen.
Projekte
Projekte sind die oberste Ebene in Azure DevOps, die verwandte Work Items, Repositories, Pipelines und andere Ressourcen organisieren und verwalten. Teams können mehrere Projekte erstellen, um unterschiedliche Softwareentwicklungen zu trennen.
Versionskontrolle
Die Versionskontrolle ist ein grundlegender Bestandteil jedes Softwareentwicklungsprozesses. Es hilft Teams dabei, Änderungen an ihrer Codebase zu verwalten, Änderungen zu verfolgen und diese bei Bedarf rückgängig zu machen. Azure Repos unterstützt zwei Arten von Versionskontrollsystemen: Git und TFVC. Git ist ein verteiltes Versionskontrollsystem, das es Teams ermöglicht, unabhängig voneinander an Code zu arbeiten und Änderungen später zusammenzuführen. TFVC ist ein zentrales Versionskontrollsystem, das es Teams ermöglicht, gleichzeitig an Code zu arbeiten und Änderungen schneller zu integrieren.
Branch Policies
Branchrichtlinien sind Regeln die bestimmen, wie Codeänderungen vorgenommen und in einen Branch zusammengeführt werden. Teams können Branchrichtlinien verwenden, um die Codequalität zu gewährleisten, versehentliche Änderungen zu verhindern und sicherzustellen, dass Änderungen genehmigt werden bevor sie zusammengeführt werden. Beispiele für Branchrichtlinien sind Anforderungen für Codeüberprüfungen, Build-Validierungsanforderungen und Regeln für den Branchschutz.
Azure Boards
Azure Boards ist ein Service, der eine Reihe von Tools zur Verwaltung von Arbeitsaufträgen bereitstellt. Dazu gehören Benutzerstories, Bugs und Probleme. Es ermöglicht Teams, Arbeit mit anpassbaren Kanban-Boards, Backlogs und Dashboards zu planen, zu verfolgen und zu verwalten.
Refining
Refining ist der Prozess, bei dem hochrangige Arbeitspakete in kleinere, leichter zu bewältigende Teile aufgeteilt werden. Teams können Verfeinerungen nutzen, um Anforderungen zu klären, den Aufwand abzuschätzen und Sprints zu planen. Azure Boards unterstützt verschiedene Tools zur Verfeinerung, darunter Backlog-Grooming, Sprint-Planung und Iterations-Planung.
Azure Pipelines
Azure Pipelines ist ein Service der Anwendungen für jede Plattform, einschließlich Azure, AWS und Google Cloud Platform, erstellt, testet und bereitstellt. Es unterstützt eine Vielzahl von Programmiersprachen und Plattformen - darunter .NET, Java, Python und Node.js. Teams können Azure Pipelines verwenden, um kontinuierliche Integrations- und Bereitstellungspipelines (CI/CD) zu erstellen, die ihre Anwendungen automatisch erstellen, testen und bereitstellen.
State-Based vs Migration-Based
State-based deployment ist eine Bereitstellungsstrategie, bei der ein Bereitstellungsskript erstellt wird, dass den aktuellen Zustand des Datenbankschemas und der Daten erfasst. Das Bereitstellungsskript wird dann auf die Zielumgebung angewendet, um sie auf denselben Stand wie die Quellumgebung zu bringen. Migration-based deployment ist eine Bereitstellungsstrategie, bei der eine Reihe von Migrations-Skripten erstellt werden, die inkrementelle Änderungen am Datenbankschema und den Daten vornehmen. Die Migrations-Skripte werden nacheinander auf die Zielumgebung angewendet, um sie auf den gewünschten Stand zu bringen.
Azure Artifacts
Azure Artifacts ist ein Service, der eine Reihe von Tools zur Verwaltung und gemeinsamen Nutzung von Paketen wie NuGet, npm, Maven und Python bereitstellt. Es ermöglicht Teams private Paket-Feeds zu erstellen, um Pakete innerhalb ihrer Organisation zu teilen und bietet Funktionen wie Versionsverwaltung, Paketmanagement und Zugriffskontrolle.
Continuous Delivery and DevOps with Azure DevOps: Source Control with Git
Azure DevOps ist eine leistungsstarke Plattform, die eine Vielzahl von Diensten bietet, um den gesamten Softwareentwicklungslebenszyklus zu unterstützen. Eine ihrer wichtigsten Funktionen ist die Quellcodeverwaltung, die es Teams ermöglicht, ihre Code-Basis zu verwalten, Änderungen zu verfolgen und effektiv zusammenzuarbeiten. In diesem Abschnitt werden Quellcodeverwaltung, Branching und Git-Grundlagen in Azure DevOps behandelt.
Quellcodeverwaltungssysteme
Zur Verwaltung von Änderungen an ihrem Code nutzen Entwickler in der Regel sogenannte Source Control Systeme - auch Version Control Systeme genannt. Es gibt zwei Haupttypen von Source Control Systemen: zentrale und verteilte Systeme.
Zentralisierte Quellcodeverwaltung
In einem zentralisierten Quellcode-Verwaltungssystem gibt es ein einzelnes zentrales Repository, dass den gesamten Codebestand enthält. Entwickler machen Änderungen am Code auf ihren lokalen Maschinen und übertragen diese Änderungen dann auf das zentrale Repository. Dieses Modell wird häufig in älteren Quellcode-Verwaltungssystemen wie Microsofts Team Foundation Version Control (TFVC) verwendet.
Verteilte Quellcodeverwaltung
In einem verteilten Quellcode-Verwaltungssystem hat jeder Entwickler eine vollständige Kopie des Quellcodes auf seinem lokalen Rechner. Änderungen werden lokal vorgenommen und bei Bedarf in ein zentrales Repository hochgeladen. Dieses Modell wird von modernen Quellcode-Verwaltungssystemen wie Git verwendet.
Erstellen eines Teamprojekts in Visual Studio
Um ein Teamprojekt in Visual Studio zu erstellen, müssen Sie folgende Schritte ausführen:
- Öffnen Sie Visual Studio und wählen Sie Neues Projekt erstellen aus.
- Wählen Sie Azure DevOps aus der Liste der Projekttypen aus.
- Wählen Sie Git als Versionskontrollsystem aus.
- Geben Sie den Namen Ihres Projekts ein und wählen Sie einen Speicherort aus.
- Klicken Sie auf Erstellen, um das Projekt zu erstellen.
Azure DevOps Support
Azure DevOps bietet eine Vielzahl von Services und Funktionen, um Teams bei der Verwaltung ihres Softwareentwicklungsprozesses zu unterstützen. Dazu gehören:
- Azure Repos: Ein auf Git basierender Quellcodeverwaltungsdienst, der unbegrenzte private Repositories, Pull Requests und Code-Reviews bietet.
- Azure Boards: Ein Arbeitsverfolgungsdienst, der agile Planungswerkzeuge, Backlogs und Dashboards bietet.
- Azure Pipelines: Ein kontinuierlicher Integrations- und Bereitstellungsdienst, mit dem Teams ihren Code erstellen, testen und bereitstellen können.
- Azure Test Plans: Ein Testdienst, der manuelle und explorative Testwerkzeuge, Testpläne und automatisierte Testfunktionen bietet.
- Azure Artifacts: Ein Paketverwaltungsdienst, der es Teams ermöglicht, Pakete über Projekte und Teams hinweg zu verwalten und zu teilen.
Branching
Branching ist eine zentrale Funktion von Source-Control-Systemen, die es Teams ermöglicht, an verschiedenen Funktionen und Korrekturen unabhängig voneinander zu arbeiten. In Azure DevOps können Sie Branches erstellen und nach Bedarf zusammenführen, um Codeänderungen zu verwalten.
Git
Git ist ein verteiltes Source-Control-System, das in der modernen Softwareentwicklung weit verbreitet ist. Git ermöglicht es Entwicklern, unabhängig an ihren eigenen lokalen Kopien der Codebasis zu arbeiten und dann ihre Änderungen nach Bedarf zusammenzuführen. Git bietet eine Vielzahl von Funktionen, einschließlich Branching, Zusammenführen, Markieren und mehr.
Wie Git funktioniert
Git arbeitet, indem es eine vollständige Kopie der Codebasis auf jedem lokalen Computer des Entwicklers pflegt. Änderungen werden lokal vorgenommen und dann bei Bedarf in ein zentrales Repository übertragen. Git verwendet ein System von Snapshots, um Änderungen im Laufe der Zeit zu verfolgen, wodurch Entwickler problemlos zu früheren Versionen der Codebasis zurückkehren können, wenn dies erforderlich ist.
Grundlegende Operationen auf Repositories
Die grundlegenden Operationen auf Repositories in Azure DevOps umfassen:
- Clone: Erstellen einer lokalen Kopie des Repositorys auf Ihrem Computer
- Commit: Speichern von Änderungen im lokalen Repository
- Push: Hochladen von Änderungen zum zentralen Repository
- Pull: Herunterladen von Änderungen aus dem zentralen Repository
- Merge: Kombinieren von Änderungen aus einem Branch in einen anderen
Continuous Integration with Azure DevOps
Continuous Integration (CI) ist eine Software-Entwicklungspraxis, die kontinuierliches Bauen, Testen und Integrieren von Code-Änderungen in einem gemeinsamen Repository umfasst. CI hilft dabei, Fehler frühzeitig im Entwicklungsprozess zu erkennen und zu beheben. Damit wird das Risiko von Fehlern reduziert und die Gesamtqualität des Codebase verbessert. Azure DevOps bietet eine umfassende Reihe von Tools und Services zur Unterstützung von CI, dass den Prozess automatisiert und Ihren Entwicklungsworkflow optimiert.
Continuous Integration in Azure DevOps einrichten
Um die Continuous Integration in Azure DevOps einzurichten, müssen Sie folgende Schritte ausführen:
- Erstellen Sie eine neue Pipeline: Navigieren Sie in Azure DevOps zu Ihrem Projekt und wählen Sie "Pipelines" aus dem linken Menü. Klicken Sie auf "Pipeline erstellen", um den Prozess zur Erstellung einer neuen Pipeline zu starten.
- Wählen Sie Ihre Quellcodeverwaltung aus: Wählen Sie das Quellcodeverwaltungssystem aus, welches Sie für Ihre Codebasis verwenden. Azure DevOps unterstützt Git und andere Versionskontrollsysteme.
- Konfigurieren Sie Ihren Build: Konfigurieren Sie Ihren Build, indem Sie die Build-Schritte und Tools angeben, die Sie verwenden möchten. Azure DevOps bietet eine Vielzahl von integrierten Aufgaben und Tools, um diesen Prozess einfach zu gestalten.
- Führen Sie Ihren Build aus: Sobald Ihr Build konfiguriert ist, können Sie ihn manuell ausführen oder einen Auslöser einrichten, um ihn automatisch auszuführen, sobald Änderungen an Ihrer Codebasis vorgenommen werden.
Vorteile der kontinuierlichen Integration in Azure DevOps
Continuous Integration bietet eine Reihe von Vorteilen für Software-Entwicklungsteams, darunter:
- Schnelleres Feedback: Durch das frühzeitige Erkennen von Fehlern im Entwicklungsprozess können Teams Probleme schneller beheben und teure Verzögerungen später vermeiden.
- Verbesserte Qualität: Continuous Integration hilft Teams dabei sicherzustellen, dass ihr Code jederzeit stabil und funktionsfähig ist, was die Gesamtqualität des Codebestands verbessert.
- Bessere Zusammenarbeit: Durch die Automatisierung des Prozesses des Erstellens und Integrierens von Code-Änderungen können Teams effektiver zusammenarbeiten und das Risiko von Konflikten und Fehlern reduzieren.
- Erhöhte Effizienz: Durch die Automatisierung von wiederkehrenden Aufgaben hilft Continuous Integration Zeit zu sparen und sich auf wertvollere Arbeit zu konzentrieren.
Kontinuierliche Integration für TFVC einrichten
Um die kontinuierliche Integration für Team Foundation Version Control (TFVC) in Azure DevOps einzurichten, befolgen Sie diese Schritte:
- Erstellen Sie eine neue Build-Pipeline: Navigieren Sie zu Ihrem Projekt und wählen Sie Pipelines aus dem linken Menü. Klicken Sie auf Build-Pipeline erstellen und wählen Sie TFVC als Quellkontrollsystem aus.
- Wählen Sie Ihren Build-Agenten: Wählen Sie den Build-Agenten aus, den Sie für Ihre Pipeline verwenden möchten.
- Konfigurieren Sie Ihren Build: Konfigurieren Sie Ihren Build, indem Sie die Build-Schritte und Tools angeben, die Sie verwenden möchten. Sie können die integrierten Aufgaben und Tools von Azure DevOps verwenden oder Ihre eigenen benutzerdefinierten Aufgaben erstellen.
- Führen Sie Ihren Build aus: Sobald Ihr Build konfiguriert ist, können Sie ihn manuell ausführen oder einen Trigger einrichten, um ihn automatisch auszuführen, wenn Änderungen an Ihrem Codebase vorgenommen werden.
Einrichten von TFVC Gated Check-in
Um TFVC Gated Check-in in Azure DevOps einzurichten, folgen Sie diesen Schritten:
- Aktivieren Sie Gated Check-in: Navigieren Sie zu Ihrem Projekt und wählen Sie Branches im linken Menü. Klicken Sie auf das Auslassungszeichen neben dem Branch, für den Sie Gated Check-in aktivieren möchten, und wählen Sie Branch policies. Klicken Sie auf Hinzufügen und wählen Sie Gated Check-in.
- Konfigurieren Sie Ihren Build: Konfigurieren Sie Ihren Build, indem Sie die Build-Schritte und Tools angeben, die Sie verwenden möchten. Sie können die integrierten Aufgaben und Tools von Azure DevOps verwenden oder eigene benutzerdefinierte Aufgaben erstellen.
- Führen Sie Ihren Build aus: Sobald Ihr Build konfiguriert ist, wird er automatisch ausgeführt, wenn jemand versucht, Änderungen an dem Branch zu überprüfen.
Einrichten von Git-Zweigrichtlinien
Folgen Sie diesen Schritten, um Git-Zweigrichtlinien in Azure DevOps einzurichten:
- Navigieren Sie zu Ihrem Projekt und wählen Sie Branches im linken Menü aus.
- Klicken Sie auf die Auslassungspunkttaste neben dem Zweig, für den Sie Richtlinien hinzufügen möchten, und wählen Sie Branch Policies.
- Klicken Sie auf Hinzufügen, um eine neue Richtlinie hinzuzufügen.
- Wählen Sie den Typ der Richtlinie aus, den Sie hinzufügen möchten, wie zum Beispiel die Anforderung einer Mindestanzahl von Überprüfern oder das Blockieren direkter Pushes auf den Zweig.
- Konfigurieren Sie die Richtlinieneinstellungen wie gewünscht und klicken Sie auf Speichern, um die Richtlinie auf den Zweig anzuwenden.
Fazit
Azure DevOps bietet ein umfassendes Set an Tools und Services, um ihren Software-Entwicklungsprozess einschließlich kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD) für SQL Server-Datenbanken zu verwalten. Durch die Verwendung von Azure DevOps können Teams effektiver zusammenarbeiten, ihren Entwicklungsprozess optimieren und qualitativ hochwertige Softwareprodukte schneller liefern. Mit Azure Repos, Azure Boards, Azure Pipelines und Azure Artifacts können Code, Work Items, Pipelines und Pakete an einem Ort verwaltet und ihre Datenbanken mit Zuversicht mithilfe von Zustands- oder Migrationsbasierten Bereitstellungsstrategien bereitstellen.
Wenn Sie mehr über dieses Thema erfahren möchten, stehen Ihnen unsere SQL Server Spezialisten gerne zur Verfügung. Kontaktieren Sie uns dafür gerne über unser Kontaktformularfür ein unverbindliches Erstgespräch.