GitHub Actions で VS Database プロジェクトから *.dacpac ファイルを生成する

· 1分で読める

データベースを操作する必要があり、アジャイル開発を行いたい場合は、テーブル、SP、関数を追加または変更するたびに、それがコンパイルされ、データベースのデプロイメント ファイルが生成されるフローが必要です。

私はこのアプローチを長い間行ってきました。ローカルで変更を行い、データベース プロジェクトと比較して、変更をコミットしてプッシュすると、データベースに送信される bacpac ファイルが生成されます。

手動で行うと人的エラーが発生する可能性があり、データベースでは非常に悪いニュースとなる可能性があります。

データベースプロジェクト

Visual Studio でデータベース プロジェクトを作成し、データベースをインポートすると、次のようになります。

このプロジェクトでコンパイルを実行すると、すべての構造を含む dacpac ファイルが生成されます

Github パイプライン

コードをリポジトリに公開したので、このプロジェクトをコンパイルし、この dacpac ファイルを生成し、ダウンロードするか別のステップで使用できる場所に保存するアクションを作成する必要があります。

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"           

このアクションは一連の処理を実行し、ソリューションを構築して、その結果を事前に作成した artifacts フォルダーに配置し、そのフォルダーからアーティファクトにファイルをアップロードします。

パイプラインの実行

ビルドをトリガーすると、結果は次のようになります。

実際にアーティファクトをダウンロードしてコンテンツを確認すると、これは将来、継続的デプロイメント ステップを実装するときに必要となる dacpac ファイルです。

コード

このプロジェクト全体は Github にあり、ここ で見つけることができます。

問題や質問がある場合は、ソーシャル メディアで @emimontesdeoca までお気軽にご連絡ください (Twitter では実際には @emimontesdeocaa で最後に aa が 2 つ付いています)。私のソーシャルのほとんどはブログのヘッダーからも見つけることができます。

投稿が気に入っていただければ幸いです!キャー!