diff --git a/IW4MAdmin.sln b/IW4MAdmin.sln index 8c0d53f56..0a60a1181 100644 --- a/IW4MAdmin.sln +++ b/IW4MAdmin.sln @@ -9,6 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution GameFiles\IW4x\userraw\scripts\_commands.gsc = GameFiles\IW4x\userraw\scripts\_commands.gsc GameFiles\IW4x\userraw\scripts\_customcallbacks.gsc = GameFiles\IW4x\userraw\scripts\_customcallbacks.gsc PostPublish.ps1 = PostPublish.ps1 + pre-release-pipeline.yaml = pre-release-pipeline.yaml README.md = README.md RunPublishPre.cmd = RunPublishPre.cmd RunPublishRelease.cmd = RunPublishRelease.cmd diff --git a/pre-release-pipeline.yaml b/pre-release-pipeline.yaml new file mode 100644 index 000000000..857320c7c --- /dev/null +++ b/pre-release-pipeline.yaml @@ -0,0 +1,185 @@ +trigger: + batch: true + branches: + include: + - release/pre + +pr: none + +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: projectversionasvariable@1 + inputs: + path: '$(Build.Repository.LocalPath)\Application\Application.csproj' + +- task: VSBuild@1 + inputs: + solution: '$(solution)' + msbuildArgs: '/p:DeployOnBuild=false /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)" /p:Version=$(Version.Major).$(Version.Minor).$(Version.Build).$(Build.BuildId)' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: DotNetCoreCLI@2 + inputs: + command: 'publish' + publishWebProjects: false + projects: | + **/WebfrontCore.csproj + **/Application.csproj + arguments: '-c $(buildConfiguration) -o $(outputFolder) /p:Version=$(Version.Major).$(Version.Minor).$(Version.Build).$(Build.BuildId)' + 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: 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 + echo creating website version filename + @echo IW4MAdmin-$(Version.Major).$(Version.Minor)-$(buildConfiguration)$(Version.Build)b$(Build.BuildId) > $(Build.ArtifactStagingDirectory)\version_prerelease.txt + 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-$(Version.Major).$(Version.Minor)-$(buildConfiguration)$(Version.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: FtpUpload@2 + inputs: + credentialsOption: 'inputs' + serverUrl: '$(FTPUrl)' + username: '$(FTPUsername)' + password: '$(FTPPassword)' + rootDirectory: '$(Build.ArtifactStagingDirectory)' + filePatterns: 'version_prerelease.txt' + remoteDirectory: 'IW4MAdmin' + 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: '$(Version.Major).$(Version.Minor)-$(buildConfiguration)$(Version.Build)b$(Build.BuildId)' + title: 'Version $(Version.Major).$(Version.Minor) $(buildConfiguration) Feature $(Version.Build) Build $(Build.BuildId)' + assets: '$(Build.ArtifactStagingDirectory)/*.zip' + isPreRelease: true + releaseNotesSource: 'inline' + releaseNotesInline: 'todo' + changeLogCompareToRelease: 'lastNonDraftRelease' + changeLogType: 'commitBased' + +- task: PowerShell@2 + inputs: + targetType: 'inline' + script: | + $payload = @{ + 'current-version-prerelease' = '$(Version.Major).$(Version.Minor).$(Version.Build).$(Build.BuildId)' + 'jwt-secret' = '$(JWTSecret)' + } | ConvertTo-Json + + + $params = @{ + Uri = 'http://api.raidmax.org:5000/version' + Method = 'POST' + Body = $payload + ContentType = 'application/json' + } + + Invoke-RestMethod @params + +- task: PublishPipelineArtifact@1 + inputs: + targetPath: '$(outputFolder)' + artifact: 'IW4MAdmin.$(buildConfiguration)' + publishLocation: 'pipeline' \ No newline at end of file