# .NET Desktop # Build and run tests for .NET Desktop or Windows classic desktop solutions. # Add steps that publish symbols, save build artifacts, and more: # https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net trigger: - master pool: name: Default vmImage: 'windows-latest' variables: - group: main-pipeline-keys - name: solution value: 'Wabbajack.sln' - name: buildPlatform value: 'x64' - name: buildConfiguration value: 'Debug' steps: - checkout: self clean: true submodules: true - task: NuGetToolInstaller@1 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - task: DotNetCoreCLI@2 displayName: "Build Release" inputs: command: 'build' projects: 'Wabbajack\Wabbajack.csproj' arguments: '--runtime win10-x64 --configuration Release /p:Platform=x64' - task: DotNetCoreCLI@2 displayName: "Test Release" inputs: command: 'test' projects: '**/*.Test.csproj' arguments: '/p:Platform=x64 /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/CodeCoverage' - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: false projects: 'Wabbajack\Wabbajack.csproj' zipAfterPublish: false modifyOutputPath: false arguments: '--runtime win10-x64 --configuration Release /p:Platform=x64 -o $(System.DefaultWorkingDirectory)/PublishApp --self-contained' - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: false projects: 'Wabbajack.Launcher\Wabbajack.Launcher.csproj' zipAfterPublish: false modifyOutputPath: false arguments: '--runtime win10-x64 --configuration Release /p:Platform=x64 -o $(System.DefaultWorkingDirectory)/PublishLauncher --self-contained' - task: DownloadSecureFile@1 inputs: secureFile: 'CertFile.p12' - task: codesigning@2 displayName: "Sign main app" condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') inputs: secureFileId: 'CertFile.p12' signCertPassword: '$(CertPassword)' files: '$(System.DefaultWorkingDirectory)/PublishApp/*abbajack*.exe' hashingAlgorithm: 'SHA256' description: 'Wabbajack Modlist Installer' - task: codesigning@2 displayName: "Sign launcher" condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') inputs: secureFileId: 'CertFile.p12' signCertPassword: '$(CertPassword)' files: '$(System.DefaultWorkingDirectory)/PublishLauncher/*abbajack*.exe' hashingAlgorithm: 'SHA256' description: 'Wabbajack Modlist Installer Launcher' #- task: CmdLine@2 # inputs: # script: 'pip install requests' #- task: PythonScript@0 # condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') # inputs: # scriptSource: 'inline' # script: | # import requests, sys # # url = 'https://www.virustotal.com/vtapi/v2/file/scan' # # params = {'apikey': sys.argv[1]} # # files = {'file': ('Wabbajack.exe', open(sys.argv[2], 'rb'))} # # response = requests.post(url, files=files, params=params) # # print(response.json()) # arguments: '$(VirusTotalAPIKey) $(System.DefaultWorkingDirectory)/Wabbajack/bin/x64/Debug/Wabbajack.exe' # - task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(System.DefaultWorkingDirectory)/PublishApp' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/Wabbajack.zip' replaceExistingArchive: true verbose: true - task: PublishBuildArtifacts@1 condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/Wabbajack.zip' ArtifactName: 'Wabbajack.zip' publishLocation: 'Container' - task: PublishBuildArtifacts@1 condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') inputs: PathtoPublish: '$(System.DefaultWorkingDirectory)/PublishLauncher/Wabbajack.exe' ArtifactName: 'Wabbajack.exe' publishLocation: 'Container'