Azure DevOps (Azure Pipelines)
Azure Pipelines soporta dos modos:
- YAML en el repositorio (azure-pipelines.yml) — recomendado.
- Clásico (UI) — legado.
Ejemplo completo (azure-pipelines.yml)
trigger:
branches:
include: [ main ]
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build & Test
jobs:
- job: Build_Test
steps:
- checkout: self
- task: UseDotNet@2
inputs:
packageType: sdk
version: '9.0.x'
- script: dotnet restore
displayName: Restore
- script: dotnet build --configuration Release --no-restore
displayName: Build
- script: dotnet test --configuration Release --no-build
displayName: Test
- script: dotnet publish src/Backend/Backend.csproj -c Release -o out
displayName: Publish
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: 'out'
artifactName: 'backend-drop'
- stage: Deploy
dependsOn: Build
jobs:
- deployment: to_dev
environment: 'dev'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: backend-drop
# Requiere que el agente esté registrado en un Deployment Group con el servidor IIS destino
- task: IISWebAppDeploymentOnMachineGroup@0
displayName: Deploy to IIS
inputs:
WebSiteName: 'FlexygoBackend'
Package: '$(Pipeline.Workspace)/backend-drop'
TakeAppOfflineFlag: true
XmlVariableSubstitution: true
Variables de pipeline recomendadas
Define estas variables en Pipelines → {tu pipeline} → Edit → Variables:
| Variable | Descripción | Scope |
|---|---|---|
ASPNETCORE_ENVIRONMENT |
Entorno de ejecución (Production, Staging) |
Deployment |
ConnectionStrings__Default |
Cadena de conexión a la base de datos | Deployment |
WebSiteName |
Nombre del sitio IIS destino | Deployment |
Marca las variables sensibles como Secret para que se enmascaren en los logs de pipeline.
Alternativa: Despliegue en Azure Web App
Si despliegas en Azure App Service en lugar de IIS, sustituye el task IISWebAppDeploymentOnMachineGroup@0 por:
- task: AzureWebApp@1
displayName: Deploy to Azure Web App
inputs:
azureSubscription: 'tu-service-connection'
appName: 'nombre-de-tu-app'
package: '$(Pipeline.Workspace)/backend-drop'
Environments y aprobaciones
Usa Environments de Azure DevOps para añadir controles de aprobación manual antes del despliegue a producción:
- Ve a Pipelines → Environments y crea un environment
production - Configura Approvals and checks en el environment (p. ej. aprobación manual de un responsable)
- Cambia
environment: 'dev'porenvironment: 'production'en el YAML para que el pipeline espere la aprobación
Despliegue en Docker
Si tu target es un host Docker, añade este job alternativo al stage Deploy:
- job: Deploy_Docker
steps:
- task: Docker@2
displayName: Build and push image
inputs:
command: buildAndPush
repository: 'tu-registry/flexygo-backend'
dockerfile: 'src/Backend/Dockerfile'
tags: |
$(Build.BuildId)
latest