# Azure DevOps Pipelines ## Configuration #Topic/Dev/Cloud/Azure Backlink: [[Azure DevOps]] See also: [[Microsoft Azure]] ## Contents - [[#Trigger|Trigger]] - [[#Pool|Pool]] - [[#Variables|Variables]] - [[#Steps|Steps]] - [[#MAKING CHANGES|MAKING CHANGES]] - [[#SUMMARY|SUMMARY]] ## CONFIG - `azure-pipelines.yml`: ```yaml trigger: - master - main pool: vmImage: 'windows-latest' variables: ServerName: 'PLACEHOLDER.database.windows.net' DatabaseName: '<name of database>' AdminUser: 'PLACEHOLDER' AdminPassword: 'PLACEHOLDER' steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | import-module $(Build.SourceDirectory)\Deploy\MigrationRunner\Migration.dll Get-MigrationRunner -s $(ServerName) -d $(DatabaseName) -f $(Build.SourcesDirectory)\Sources\Migrations -u $(AdminUser) -p $(AdminPassword) ``` ### Trigger This part indicates that deployment should start automatically if there are changes in the **master** or **main** branch. ### Pool *windows-latest*: The deployment agent should use the latest available virtual machine image with the Windows operating system to download source files and execute deployment steps. ### Variables A list of variables that will be used later in the script: - **ServerName** - a SQL Server name where the database should be created/updated - **DatabaseName** - a SQL database name to be created or updated - **AdminUser** - a username for SQL Server to perform changes to the database - **AdminPassword** - a password for SQL Server user Note that the credentials could be stored securely using encrypted secrets using pipeline variables. ### Steps There is a single step that executes inline Powershell script (as described in the [Migration runner documentation](https://dbversioncontrol.com/pages/migration-runner)): - first, import the module from the Migrations.dll - next, execute Get-MigrationRunner with parameters  Do not forget to save **azure-pipelines.yml** and commit it to the repository. That's it - the deployment script has been set up. To verify that everything works as expected, we can manually execute the pipeline by clicking the **Run pipeline** button. ## MAKING CHANGES Once the deployment was set up, the database development process could be as simple as: - making changes to the AdventureWorks database - applying changes using the DB Version Control - committing and pushing the scripted files - the deployment will start automatically and will deploy changes to the AdventureWorksAzureDeploy database ## SUMMARY In this tutorial, we showed that Azure SQL databases can be version controlled using DB Version Control in a similar way as on-premises databases. Also, [[Azure DevOps]] (pipelines) can be used to deploy changes automatically to the [[Azure SQL Databases]]. *Backlinks:* ```dataview list from [[Azure DevOps Pipelines]] AND -"Changelog" ```