Automating Deployments with Azure DevOps
Set up continuous integration and deployment from Azure DevOps to your Plesk Windows hosting.
Prerequisites
- Azure DevOps account and project
- Repository in Azure Repos or connected GitHub
- FTP or Web Deploy credentials from Plesk
Step 1: Get Deployment Credentials
In Plesk, get your FTP credentials or Web Deploy publishing profile.
Step 2: Create Pipeline Variables
- In Azure DevOps, go to Pipelines → Library
- Create a variable group named "PleskDeployment"
- Add variables:
FtpHost- Your FTP serverFtpUser- FTP usernameFtpPassword(secret) - FTP password
Step 3: Create Pipeline
Create azure-pipelines.yml in your repository:
trigger:
- main
pool:
vmImage: 'windows-latest'
variables:
buildConfiguration: 'Release'
dotnetVersion: '8.0.x'
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: UseDotNet@2
inputs:
version: '$(dotnetVersion)'
- task: DotNetCoreCLI@2
displayName: 'Restore'
inputs:
command: restore
- task: DotNetCoreCLI@2
displayName: 'Build'
inputs:
command: build
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Test'
inputs:
command: test
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Publish'
inputs:
command: publish
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
- stage: Deploy
dependsOn: Build
jobs:
- deployment: DeployToProduction
environment: 'Production'
strategy:
runOnce:
deploy:
steps:
- task: FtpUpload@2
inputs:
credentialsOption: 'inputs'
serverUrl: 'ftp://$(FtpHost)'
username: '$(FtpUser)'
password: '$(FtpPassword)'
rootDirectory: '$(Pipeline.Workspace)/drop'
remoteDirectory: '/httpdocs'
clean: false
preservePaths: true
Alternative: Web Deploy Task
- task: IISWebAppDeploymentOnMachineGroup@0
inputs:
WebSiteName: 'YourWebsite'
Package: '$(Pipeline.Workspace)/drop/*.zip'
Setting Up Environments
- Go to Pipelines → Environments
- Create "Production" environment
- Add approval checks if desired
Best Practices
- Use variable groups for credentials
- Set up approval gates for production
- Create separate pipelines for staging/production
- Enable build retention policies
- Monitor deployment status