CI/CD with Azure DevOps for Plesk Deployment Print

  • 0

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

  1. In Azure DevOps, go to PipelinesLibrary
  2. Create a variable group named "PleskDeployment"
  3. Add variables:
    • FtpHost - Your FTP server
    • FtpUser - FTP username
    • FtpPassword (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

  1. Go to PipelinesEnvironments
  2. Create "Production" environment
  3. 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

Was this answer helpful?

« Back