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