You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
6.0 KiB
163 lines
6.0 KiB
# ASP.NET Core
|
|
# Build and test ASP.NET Core projects targeting .NET Core.
|
|
# Add steps that run tests, create a NuGet package, deploy, and more:
|
|
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
|
|
|
|
trigger:
|
|
- master
|
|
|
|
variables:
|
|
netCoreSdkVersion: '7.0.101'
|
|
buildConfiguration: 'Release'
|
|
imageName: 'sscms/core'
|
|
productVersion: '7.2.1'
|
|
|
|
jobs:
|
|
|
|
- job: Windows
|
|
pool:
|
|
vmImage: 'windows-latest'
|
|
steps:
|
|
- task: UseDotNet@2
|
|
inputs:
|
|
version: $(netCoreSdkVersion)
|
|
- task: NodeTool@0
|
|
inputs:
|
|
versionSpec: '12.x'
|
|
- script: npm install
|
|
- script: npm run build-win-x64
|
|
- task: NuGetToolInstaller@1
|
|
inputs:
|
|
versionSpec: 6.4.0
|
|
- task: NuGetCommand@2
|
|
inputs:
|
|
command: 'restore'
|
|
restoreSolution: './build-win-x64/build.sln'
|
|
feedsToUse: 'select'
|
|
- script: dotnet build ./build-win-x64/build.sln -c $(buildConfiguration)
|
|
- script: dotnet publish ./build-win-x64/src/SSCMS.Cli/SSCMS.Cli.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-win-x64
|
|
- script: dotnet publish ./build-win-x64/src/SSCMS.Web/SSCMS.Web.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-win-x64
|
|
- script: npm run copy-win-x64
|
|
- script: npm run build-win-x86
|
|
- task: NuGetCommand@2
|
|
inputs:
|
|
command: 'restore'
|
|
restoreSolution: './build-win-x86/build.sln'
|
|
feedsToUse: 'select'
|
|
- script: dotnet build ./build-win-x86/build.sln -c $(buildConfiguration)
|
|
- script: dotnet publish ./build-win-x86/src/SSCMS.Cli/SSCMS.Cli.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-win-x86
|
|
- script: dotnet publish ./build-win-x86/src/SSCMS.Web/SSCMS.Web.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-win-x86
|
|
- script: npm run copy-win-x86
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: './publish/sscms-$(productVersion)-win-x64'
|
|
archiveType: 'zip'
|
|
includeRootFolder: false
|
|
archiveFile: './publish/dist/sscms-$(productVersion)-win-x64.zip'
|
|
- script: npm run publish-win-x64-zip
|
|
env:
|
|
OSS_ACCESS_KEY_ID: $(ossAccessKeyId)
|
|
OSS_SECRET_ACCESS_KEY: $(ossSecretAccessKey)
|
|
OSS_BUCKET_DL: $(ossBucketDl)
|
|
OSS_BUCKET_WWW: $(ossBucketWww)
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: './publish/sscms-$(productVersion)-win-x86'
|
|
archiveType: 'zip'
|
|
includeRootFolder: false
|
|
archiveFile: './publish/dist/sscms-$(productVersion)-win-x86.zip'
|
|
- script: npm run publish-win-x86-zip
|
|
env:
|
|
OSS_ACCESS_KEY_ID: $(ossAccessKeyId)
|
|
OSS_SECRET_ACCESS_KEY: $(ossSecretAccessKey)
|
|
OSS_BUCKET_DL: $(ossBucketDl)
|
|
OSS_BUCKET_WWW: $(ossBucketWww)
|
|
- task: PublishPipelineArtifact@1
|
|
inputs:
|
|
targetPath: './publish/dist'
|
|
artifactName: 'sscms-$(productVersion)-win'
|
|
|
|
- job: Linux
|
|
pool:
|
|
vmImage: 'Ubuntu 20.04'
|
|
steps:
|
|
- task: UseDotNet@2
|
|
inputs:
|
|
version: $(netCoreSdkVersion)
|
|
- task: NodeTool@0
|
|
inputs:
|
|
versionSpec: '12.x'
|
|
- script: npm install
|
|
- script: npm run build-linux-x64
|
|
- task: NuGetCommand@2
|
|
inputs:
|
|
command: 'restore'
|
|
restoreSolution: './build-linux-x64/build.sln'
|
|
feedsToUse: 'select'
|
|
- script: dotnet build ./build-linux-x64/build.sln -c $(buildConfiguration)
|
|
- script: dotnet publish ./build-linux-x64/src/SSCMS.Cli/SSCMS.Cli.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-linux-x64
|
|
- script: dotnet publish ./build-linux-x64/src/SSCMS.Web/SSCMS.Web.csproj -c $(buildConfiguration) -o ./publish/sscms-$(productVersion)-linux-x64
|
|
- script: npm run copy-linux-x64
|
|
- script: npm run build-linux-arm64
|
|
- task: NuGetCommand@2
|
|
inputs:
|
|
command: 'restore'
|
|
restoreSolution: './build-linux-arm64/build.sln'
|
|
feedsToUse: 'select'
|
|
- script: dotnet build ./build-linux-arm64/build.sln -c $(buildConfiguration)
|
|
- script: dotnet publish ./build-linux-arm64/src/SSCMS.Cli/SSCMS.Cli.csproj -c $(buildConfiguration) -r linux-arm64 -o ./publish/sscms-$(productVersion)-linux-arm64
|
|
- script: dotnet publish ./build-linux-arm64/src/SSCMS.Web/SSCMS.Web.csproj -c $(buildConfiguration) -r linux-arm64 -o ./publish/sscms-$(productVersion)-linux-arm64
|
|
- script: npm run copy-linux-arm64
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: './publish/sscms-$(productVersion)-linux-x64'
|
|
archiveType: 'tar'
|
|
tarCompression: 'gz'
|
|
includeRootFolder: false
|
|
archiveFile: './publish/dist/sscms-$(productVersion)-linux-x64.tar.gz'
|
|
- script: npm run publish-linux-x64-tgz
|
|
env:
|
|
OSS_ACCESS_KEY_ID: $(ossAccessKeyId)
|
|
OSS_SECRET_ACCESS_KEY: $(ossSecretAccessKey)
|
|
OSS_BUCKET_DL: $(ossBucketDl)
|
|
OSS_BUCKET_WWW: $(ossBucketWww)
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: './publish/sscms-$(productVersion)-linux-x64'
|
|
archiveType: 'zip'
|
|
includeRootFolder: false
|
|
archiveFile: './publish/dist/sscms-$(productVersion)-linux-x64.zip'
|
|
- script: npm run publish-linux-x64-zip
|
|
env:
|
|
OSS_ACCESS_KEY_ID: $(ossAccessKeyId)
|
|
OSS_SECRET_ACCESS_KEY: $(ossSecretAccessKey)
|
|
OSS_BUCKET_DL: $(ossBucketDl)
|
|
OSS_BUCKET_WWW: $(ossBucketWww)
|
|
- task: ArchiveFiles@2
|
|
inputs:
|
|
rootFolderOrFile: './publish/sscms-$(productVersion)-linux-arm64'
|
|
archiveType: 'tar'
|
|
tarCompression: 'gz'
|
|
includeRootFolder: false
|
|
archiveFile: './publish/dist/sscms-$(productVersion)-linux-arm64.tar.gz'
|
|
- script: npm run publish-linux-arm64-tgz
|
|
env:
|
|
OSS_ACCESS_KEY_ID: $(ossAccessKeyId)
|
|
OSS_SECRET_ACCESS_KEY: $(ossSecretAccessKey)
|
|
OSS_BUCKET_DL: $(ossBucketDl)
|
|
OSS_BUCKET_WWW: $(ossBucketWww)
|
|
- task: PublishPipelineArtifact@1
|
|
inputs:
|
|
targetPath: './publish/dist'
|
|
artifactName: 'sscms-$(productVersion)-linux'
|
|
- script: docker build -f docker/Dockerfile.core --no-cache -t $(imageName):latest -t $(imageName):$(productVersion) .
|
|
- task: Docker@2
|
|
displayName: Push image
|
|
inputs:
|
|
containerRegistry: |
|
|
docker
|
|
repository: $(imageName)
|
|
command: push
|
|
tags: |
|
|
latest
|
|
$(productVersion)
|