1. 程式人生 > 實用技巧 >【Azure DevOps系列】Azure DevOps EFCore命令式指令碼部署到SQL資料庫

【Azure DevOps系列】Azure DevOps EFCore命令式指令碼部署到SQL資料庫

構建遷移指令碼

為了構建遷移指令碼,我們將需要使用EF Tools for Command Line Interface。這些工具在Microsoft.EntityFrameworkCore.Tools提供。

  • 遷移指令碼

現在我們將通過 dotnet ef migrations script –p <path to your csproj with migrations> -o $(Build.ArtifactStagingDirectory)\migrations\scripts.sql –i來遷移我們的指令碼,在如下程式碼片段中我將指令碼進行遷移出來並且輸出到指定的路徑 -o $(Build.ArtifactStagingDirectory)/migrations/scripts.sql

中, -i代表生成可用於任何遷移的資料庫的指令碼。

 - task: CmdLine@2
   displayName: 'build efcore migrations'
   inputs:
     script: |
        dotnet ef migrations script --project host/EasyAbp.PrivateMessaging.Web.Unified/EasyAbp.PrivateMessaging.Web.Unified.csproj -o $(Build.ArtifactStagingDirectory)/migrations/scripts.sql -i

選項 Short 描述
--output <FILE> -o 要寫入指令碼的檔案
--idempotent -i 生成可用於任何遷移的資料庫的指令碼。
  • 釋出指令碼

新增一個釋出任務將指令碼進行釋出,釋出到指定的路徑$(Build.ArtifactStagingDirectory)/migrations/scripts.sql

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/migrations/scripts.sql'
    ArtifactName: 'drop'
    publishLocation: 'Container'

部署指令碼

下面是我們的部署管道,本章還是主要介紹資料庫指令碼部署。

Sqlserver部署任務如下所示:

該任務主要是使用生成的sql指令碼將其執行並恢復新增到我們的資料庫伺服器中,該任務指令碼如下所示:

steps:
- task: SqlDacpacDeploymentOnMachineGroup@0
  displayName: 'Deploy using : sqlQuery'
  inputs:
    TaskType: sqlQuery
    SqlFile: '$(System.DefaultWorkingDirectory)/**/scripts.sql'
    ServerName: ''
    DatabaseName: 'PrivateMessaging_Unified'
    AuthScheme: sqlServerAuthentication
    SqlUsername: ''
    SqlPassword: ''
  enabled: false

Reference

https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dotnet