SQL Server Projekte mit Azure DevOps Markus Delhofen, arelium GmbH
Orga and Main Sponsors You Rock! Sponsor Many thanks to our sponsors, without whom such an event would not be possible.
Sponsors (Gold) Many thanks to our sponsors, without whom such an event would not be possible.
Sponsors continued Silver: Global: This event is climate neutral: Bronze: Many thanks to our sponsors, without whom such an event would not be possible.
arelium GmbH Microsoft-Partner mit den Kompetenzen Gründungsjahr: 2007 Gold Data Analytics (Business Intelligence), Silver Application Development Gründungsjahr: 2007 Firmensitz: Langenfeld (Rheinland) Mitarbeiter: ca. 15 Geschäftsführer: Markus Delhofen, Martin Kopp Kunden: verschiedene Branchen mit Schwerpunkt auf Medien Markus
Markus Delhofen Diplom Wirtschaftsinformatiker BI-Entwicklung BI-Architektur MCSE Business Intelligence Aktuelle Projekte DWH-Architektur und SSIS/SSAS-Entwicklung Martin
Agenda SQL Server Database Project Azure DevOps Pipeline Builds Azure DevOps Pipeline Releases Azure DevOps Artifacts Weniger Theorie, mehr Demos Hoffentlich hält das Netz / werden die Builds priorisiert
Was ist das Ziel? Daten-bank Visual Studio Repository Build Release SQL Database On Premise Azure DevOps Azure On Premise
SQL Server Database Project Teil von Visual Studio Workload: Datenspeicherung- und verarbeitung SQL Server Data Tools (SSDT) Mindestens seit Visual Studio 2008 - Wer arbeitet bisher mit den SSDT?
SSDT - Vorteile Ganzheitliche Betrachtung der Datenbank Kompilierung und damit Prüfung der Scripte Unterstützung beim Deployment Versionierung der Datenbank-Scripte (bspw. mit Azure DevOps)
Features Database Project Unterstützung der meisten Datenbank-Objekte Tabellen, Views, Indexe, Linked Server, Schemata usw. Refactoring (wenige) Rename, Move to Schema, Expand Wildcards Designer für Tabellen Unterstützung beim Deployment - *der meisten*, da bestimmt etwas fehlt, ich kenne aber nichts.
Deployment Schema Compare Publish Erstellen eines DACPAC per Build Erzeugt ein Deployment-Script nur DDL Publish Erzeugt ebenfalls ein Deployment-Script Unterstützung von DML durch Pre- und Post-Deployment-Scripten Erstellen eines DACPAC per Build - *der meisten*, da bestimmt etwas fehlt, ich kenne aber nichts.
Demo SQL Server Database Project Datenbank importieren -> (ca. 10 Minuten) SchemaCompare -> Compile Error -> No Action Neue Tabelle „FactCustomer“ anlegen Refactoring Rename zeigen (CustomerCity -> CustomerPostCode) Pre/Post Deployment Script anlegen Schema Compare Publish
Azure DevOps - Übersicht Overview Boards Repositories Pipelines TestPlans Artifaces Kurz erklären, was sich hinter den einzelnen Punkten verbirgt
Azure DevOps - Übersicht Overview Summary, Dashboards, Analytic views, Wiki Boards WorkItems, Boards, Backlogs, Sprint, Queries Repositories Files, Commits, Pushes, Branches, Tag, Pull Requests Pipelines Builds, Releases, Library, TaskGroups, Deployment Groups TestPlans Test Plans, Parameters, Configuration, Runs, Load test Artifaces Etwas genauer werden, falls etwas vergessen wurde.
Azure DevOps - Übersicht Pipelines Builds Releases Deployment Groups Artifaces Und das schauen, wir uns jetzt gleich an.
Azure DevOps Pipelines – wofür? Kurz gesagt: Erstellen und Bereitstellen von Artefakten aus einem Repository Was???
Repository Source Code Verwaltung in Azure DevOps Ablage der Sourcen mit Versionierung Als Protokoll GIT oder TFS
Artefakt (Artifact) Begriff kommt aus der Software Entwicklung Bezeichnet die (Zwischen-) Ergebnisse eines Softwareerstellungsprozesses Bspw. ein ausführbares Programm Hier: Alles was bei einem Build entstehen kann
Erstellen: bedeutet, dass … … aus Sourcecode (aus einem Repository) ein Artefakt erstellt wird Dies übernimmt: Pipeline -> Build in Azure DevOps
Bereitstellen: bedeutet, dass … … Artefakte für die Weiterverwendung bereit gestellt werden Download Deployment in Testumgebung Deployment nach Produktion Dies übernimmt: Pipeline -> Releases in Azure DevOps
Features Pipeline Build-Agents Parallele Builds Eventbasiertes Starten Gehostete Integration von eigenen (lokalen) Build-Agents Parallele Builds Eventbasiertes Starten Speicherung der Build-Ergebnisse (Artefakte) Berechtigungskonzept Email-Benachrichtigung Integration ins Repository
Pipeline | Build - 101 trigger Auslöser pool Wo läuft der Build? variables Konfiguration für den Build steps Welche Schritte sind im Bild? tasks Welche Aufgaben werden ausgeführt?
Vordefinierte Variablen (Auszug) Bemerkung Build.ArtifactStagingDirectory Staging-Verzeichnis im Build-Prozess Build.BuildNumber Build Number Build.Repository.Name Name des Repository Build.SourcesDirectory Build-Verzeichnis des Agents System.Debug True, für ausführliche Build-Logs System.teamProject Name des Team Projektes https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/artifacts-overview?view=azure-devops
Demo Azure Pipeline Zeit: ca. 8 Minuten Demo1 Pipeline öffnen YAML Script zeigen -> Hinweis auf Repo, dass diese ggf. sich überschreiben. Task rechts zeigen Pipeline starten Trigger zeigen
Wo ist mein Build Ergebnis? Problem: Build Agent wird nach dem Build entsorgt, daher ist alles weg Lösung: Ablegen als Artefakte, um das Ergebnis zu sichern
PublishBuildArtifacts@1 Artefakte ablegen VSBuild@1 CopyFiles@2 PublishBuildArtifacts@1 Tasks sorgen dafür, dass Artefakte bereitgestellt werden Nutzung einer Staging-Area: $(build.artifactstagingdirectory) Es können also erst einmal mehrere Artefakte gesammelt werden, bevor diese veröffentlicht werden In Preview: PublishPipelineArtifact
Demo Azure Pipeline Zeit: ca. 8 Minuten Pipeline SQL Saturday zeigen Build anwerfen und dann zeigen Waiting for Queue Trigger Project Settings Ergebnis Emailbenachrichtigung
Pipeline | Releases Pipeline, um Artefakte zu veröffentlichen komplexe Prozesse sind möglich Approvals (Post- & Pre-Deployment) werden unterstützt
Demo Pipeline Releases Zeit ca. 5 Minuten Pipeline anlegen Pre-Approval konfigurieren und zeigen (wenn noch Zeit)
On-Premise Deployment Problem Azure DevOps kann nicht direkt lokal zugreifen Lösung: lokaler Agent / Deployment groups Lokaler Dienst „Azure Pipelines Agent“
Azure Pipeline Agent Einfache in Installation aus Azure DevOps Authentifizierung mit Personal Access Token Azure Pipeline Port: 443 Agent OnPremise Agent in Cloud
Demo Deployment Groups Zeit ca. 3 Minuten Deployment Groups öffnen Zeigen, wie theoretisch ein Agent hinzugefügt wird. Wenn meiner wieder läuft dies auch einmal zeigen. YML:
Azure Artifacts Ablage von Artefakten in einem Feed Verbindung mit Feed möglich Versionierung Berechtigungen
Unterstützte Pakettypen Mave npm NuGet PyPl Universal
Demo Artifacts Erst den Feed anlegen Dann diesen beladen
Fazit Ist brauchbar Konzepte werden immer ausgereifter Einfache Integration von Azure DevOps zu OnPremise
Noch Fragen. markus. delhofen@arelium Noch Fragen? markus.delhofen@arelium.de Vielen Dank, viel Erfolg bei der Verlosung und einen guten Heimweg