Generieren Sie *.dacpac-Dateien aus dem VS-Datenbankprojekt in GitHub Actions
Wenn Sie mit Datenbanken arbeiten müssen und eine agile Entwicklung durchführen möchten, müssen Sie über einen Ablauf verfügen, bei dem jedes Mal, wenn Sie eine Tabelle, einen SP oder eine Funktion hinzufügen oder ändern, diese kompiliert und die Bereitstellungsdatei für die Datenbank generiert wird.
Ich mache diesen Ansatz schon seit langem. Wir nehmen die Änderungen lokal vor, vergleichen sie mit unserem Datenbankprojekt und wenn wir dann unsere Änderungen festschreiben und pushen, wird eine Bacpac-Datei generiert, die in die Datenbank verschoben wird.
Es entfällt die Mühe, dies per Hand zu tun, was zu einem menschlichen Fehler führen kann, und in einer Datenbank ist das wirklich eine schlechte Nachricht.
Datenbankprojekt
Wenn wir unser Datenbankprojekt in Visual Studio erstellen und eine Datenbank importieren, sieht das Ergebnis so aus

Wenn wir eine Kompilierung für dieses Projekt ausführen, wird eine dacpac-Datei generiert, die unsere gesamte Struktur enthält

Github-Pipeline
Nachdem wir nun unseren Code im Repository veröffentlicht haben, müssen wir nun eine Aktion erstellen, die dieses Projekt kompiliert, diese dacpac-Datei generiert und sie irgendwo ablegt, wo wir sie entweder herunterladen oder für einen weiteren Schritt verwenden können.
name: DacpacGithubActions project build
on:
push:
branches: main
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1
- name: Navigate to Workspace
run: cd $GITHUB_WORKSPACE
- name: Create Build Directory
run: mkdir artifacts
- name: Build Solution
run: |
msbuild.exe /t:DacpacGithubActions /p:DebugSymbols=false /p:DebugType=None /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:OutDir="../artifacts"
- name: Upload artifact
uses: actions/[email protected]
with:
name: DacpacGithubActionsArtifacts
path: "../artifacts"
Diese Aktion führt eine Reihe von Dingen aus, erstellt die Lösung und legt das Ergebnis im zuvor erstellten Ordner artifacts ab. Anschließend werden die Dateien aus diesem Ordner in die Artefakte hochgeladen.
Ausführen der Pipeline
Fahren Sie nun fort und lösen Sie einen Build aus. Das Ergebnis sollte wie folgt aussehen

Wenn wir das Artefakt tatsächlich herunterladen und einen Blick auf den Inhalt werfen, benötigen wir für die Zukunft, wenn wir einen kontinuierlichen Bereitstellungsschritt implementieren, die Datei dacpac!

Code
Das gesamte Projekt ist auf Github und Sie können es hier finden!
Wenn Sie Probleme oder Fragen haben, können Sie mich gerne über die sozialen Medien unter @emimontesdeoca kontaktieren (auf Twitter ist es eigentlich @emimontesdeocaa mit zwei aa am Ende). Die meisten meiner sozialen Netzwerke finden Sie auch in der Kopfzeile des Blogs.
Ich hoffe, Ihnen hat der Beitrag gefallen! Cya!