# 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: - '2.4-pr' pool: vmImage: 'windows-latest' variables: solution: 'IW4MAdmin.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Prerelease' outputFolder: '$(Build.ArtifactStagingDirectory)\Publish\$(buildConfiguration)' steps: - task: NuGetToolInstaller@1 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - task: PowerShell@2 inputs: targetType: 'inline' script: | md -Force lib\open-iconic\font\css wget https://raw.githubusercontent.com/iconic/open-iconic/master/font/css/open-iconic-bootstrap.scss -o lib\open-iconic\font\css\open-iconic-bootstrap.scss failOnStderr: true workingDirectory: '$(Build.Repository.LocalPath)\WebfrontCore\wwwroot' - task: VSBuild@1 inputs: solution: '$(solution)' msbuildArgs: '/p:DeployOnBuild=false /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: false projects: | **/WebfrontCore.csproj **/Application.csproj arguments: '-c $(buildConfiguration) -o $(outputFolder)' zipAfterPublish: false modifyOutputPath: false - task: PowerShell@2 inputs: targetType: 'inline' script: 'wget https://raidmax.org/downloads/dos2unix.exe' failOnStderr: true workingDirectory: '$(Build.Repository.LocalPath)\Application\BuildScripts' - task: PowerShell@2 inputs: filePath: 'PostPublish.ps1' arguments: '$(outputFolder)' failOnStderr: true workingDirectory: '$(Build.Repository.LocalPath)' - task: oneLuckiDevJson2Variable@1 inputs: jsonFile: '$(outputFolder)\VersionInformation.json' shouldPrefixVariables: true variablePrefix: 'VersionInformation' - task: BatchScript@1 inputs: filename: 'Application\BuildScripts\PostPublish.bat' workingFolder: '$(Build.Repository.LocalPath)' arguments: '$(outputFolder)' failOnStandardError: true - task: CmdLine@2 inputs: script: | echo changing to encoding for linux start script dos2unix $(outputFolder)\StartIW4MAdmin.sh workingDirectory: '$(Build.Repository.LocalPath)\Application\BuildScripts' - task: CopyFiles@2 inputs: SourceFolder: '$(Build.Repository.LocalPath)\Plugins\ScriptPlugins' Contents: '*.js' TargetFolder: '$(outputFolder)\Plugins' - task: CopyFiles@2 inputs: SourceFolder: '$(Build.Repository.LocalPath)\BUILD\Plugins\' Contents: '*.dll' TargetFolder: '$(outputFolder)\Plugins' - task: CmdLine@2 inputs: script: 'xcopy /s /y /f wwwroot $(outputFolder)\wwwroot' workingDirectory: '$(Build.Repository.LocalPath)\BUILD\Plugins' failOnStderr: true - task: CmdLine@2 inputs: script: 'echo d | xcopy /s /y /f GameFiles $(outputFolder)\GameFiles' workingDirectory: '$(Build.Repository.LocalPath)' failOnStderr: true - task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(outputFolder)' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/IW4MAdmin-$(VersionInformation.Major).$(VersionInformation.Minor)-$(buildConfiguration)$(VersionInformation.Build)b$(Build.BuildId).zip' replaceExistingArchive: true - task: FtpUpload@2 inputs: credentialsOption: 'inputs' serverUrl: '$(FTPUrl)' username: '$(FTPUsername)' password: '$(FTPPassword)' rootDirectory: '$(Build.ArtifactStagingDirectory)' filePatterns: '*.zip' remoteDirectory: 'IW4MAdmin/Download' clean: false cleanContents: false preservePaths: false trustSSL: false - task: GitHubRelease@1 inputs: gitHubConnection: 'github.com_RaidMax' repositoryName: 'RaidMax/IW4M-Admin' action: 'create' target: '$(Build.SourceVersion)' tagSource: 'userSpecifiedTag' tag: '$(VersionInformation.Major).$(VersionInformation.Minor)-$(buildConfiguration)$(VersionInformation.Build)b$(Build.BuildId)' title: 'Version $(VersionInformation.Major).$(VersionInformation.Minor) $(buildConfiguration) Feature $(VersionInformation.Build) Build $(Build.BuildId)' assets: '$(Build.ArtifactStagingDirectory)/*.zip' isPreRelease: true releaseNotesSource: 'inline' releaseNotesInline: 'todo' changeLogCompareToRelease: 'lastNonDraftRelease' changeLogType: 'commitBased' - task: InvokeRESTAPI@1 inputs: connectionType: 'connectedServiceName' serviceConnection: 'IW4MAdmin-Master' method: 'POST' headers: | { "Content-Type":"application/json", } body: | { "current-version-prerelease": "$(VersionInformation.Major).$(VersionInformation.Minor).$(VersionInformation.Build).0", "jwt-secret" : $(JWTSecret)" } urlSuffix: '/version' waitForCompletion: 'true' - task: PublishPipelineArtifact@1 inputs: targetPath: '$(outputFolder)' artifact: 'IW4MAdmin.$(buildConfiguration)' publishLocation: 'pipeline'