Files
Shogi/azure-pipelines.yml
2026-01-15 22:53:07 -06:00

97 lines
3.1 KiB
YAML

# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
projectName: 'Shogi'
# Database variables - Set these as pipeline variables in Azure DevOps
# DatabaseServer: 'your-sql-server-address'
# DatabaseName: 'ShogiDb'
# DatabaseUser: 'your-db-user'
# DatabasePassword: 'your-db-password' # Mark as secret in Azure DevOps
steps:
- task: NuGetToolInstaller@1
- task: UseDotNet@2
inputs:
packageType: sdk
version: 10.x
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: FileTransform@1
inputs:
folderPath: '$(System.DefaultWorkingDirectory)\$(projectName)'
fileType: 'json'
targetFiles: 'appsettings.json'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: false
projects: '$(projectName)/$(projectName).csproj'
arguments: '-c Release -o $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: PowerShell@2
displayName: "Generate EF Core migration script"
inputs:
targetType: 'inline'
script: |
dotnet tool restore --tool-manifest $(projectName)/.config/dotnet-tools.json
dotnet ef migrations script --idempotent --project $(projectName)/$(projectName).csproj --output $(Build.ArtifactStagingDirectory)/migrations.sql
workingDirectory: '$(System.DefaultWorkingDirectory)'
- task: CopyFilesOverSSH@0
displayName: "Copy database migration script"
inputs:
sshEndpoint: 'LucaServer'
sourceFolder: '$(Build.ArtifactStagingDirectory)'
contents: 'migrations.sql'
targetFolder: '/var/www/apps/$(projectName)/migrations'
readyTimeout: '20000'
- task: SSH@0
displayName: "Apply database migrations"
inputs:
sshEndpoint: 'LucaServer'
runOptions: 'commands'
commands: |
# Install sqlcmd if not already installed (one-time setup)
# which sqlcmd || curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc && curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list && sudo apt-get update && sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18 unixodbc-dev
# Apply migrations (adjust connection string as needed)
/opt/mssql-tools18/bin/sqlcmd -S $(DatabaseServer) -d $(DatabaseName) -U $(DatabaseUser) -P $(DatabasePassword) -i /var/www/apps/$(projectName)/migrations/migrations.sql -C
readyTimeout: '20000'
- task: CopyFilesOverSSH@0
displayName: "Copy application files"
inputs:
sshEndpoint: 'LucaServer'
sourceFolder: '$(Build.ArtifactStagingDirectory)'
contents: '**'
targetFolder: '/var/www/apps/$(projectName)'
readyTimeout: '20000'
- task: SSH@0
displayName: "Restart Kestrel"
inputs:
sshEndpoint: 'LucaServer'
runOptions: 'commands'
commands: 'sudo systemctl restart kestrel-Shogi.service'
readyTimeout: '20000'