构建迁移脚本

为了构建迁移脚本,我们将需要使用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'

部署脚本

下面是我们的部署管道,本章还是主要介绍数据库脚本部署。

file

Sqlserver部署任务如下所示:

file

该任务主要是使用生成的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