111 lines
5.1 KiB
YAML
111 lines
5.1 KiB
YAML
parameters:
|
|
- name: 'PackagePipelineArtifacts'
|
|
type: object
|
|
default:
|
|
- artifactName: 'Backend'
|
|
pipelineProject: 'DWP'
|
|
pipelineId: ''
|
|
pipelineBranchName: '$(Build.SourceBranch)'
|
|
downloadPath: '$(Pipeline.Workspace)'
|
|
targetPath: '$(Pipeline.Workspace)'
|
|
- artifactName: 'Frontend'
|
|
|
|
- name: 'PackagePath'
|
|
type: string
|
|
default: '$(System.DefaultWorkingDirectory)/BasePackage'
|
|
- name: 'PackageAdditions'
|
|
type: string
|
|
- name: 'PackageIncrementStrategy'
|
|
type: string
|
|
default: 'parameter-based'
|
|
values:
|
|
- file-based #increment package.json version directly in a file
|
|
- parameter-based #increment package version based on 'package build number' input parameter
|
|
- name: 'PackageBuildNumber'
|
|
type: string
|
|
default: '$(Build.BuildId)'
|
|
|
|
steps:
|
|
- script: |
|
|
echo PackagePath: ${{ parameters.PackagePath }}
|
|
echo PackageIncrementStrategy: ${{ parameters.PackageIncrementStrategy }}
|
|
echo PackageBuildNumber: ${{ parameters.PackageBuildNumber }}
|
|
name: InputVariables
|
|
displayName: Template Available Parameters
|
|
- ${{ each pipelineArtifact in parameters.PackagePipelineArtifacts }} :
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: Download Frontend Pipeline Artifacts From Build
|
|
inputs:
|
|
buildType: 'specific'
|
|
project: ${{ pipelineArtifact.pipelineProject }}
|
|
definition: ${{ pipelineArtifact.pipelineId }}
|
|
preferTriggeringPipeline: true
|
|
buildVersionToDownload: 'latestFromBranch'
|
|
branchName: ${{ pipelineArtifact.pipelineBranchName }}
|
|
targetPath: ${{ pipelineArtifact.downloadPath }}
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy Files to: ${{ pipelineArtifact.targetPath }}'
|
|
inputs:
|
|
SourceFolder: ${{ pipelineArtifact.downloadPath }}/${{ pipelineArtifact.artifactName }}
|
|
TargetFolder: ${{ pipelineArtifact.targetPath }}
|
|
CleanTargetFolder: true
|
|
Contents: >-
|
|
Matrix42.DWP.PerformanceAnalyser*.dll
|
|
- ${{ if eq(parameters.PackageIncrementStrategy, 'file-based') }}:
|
|
- powershell: |
|
|
$packageJsonFile = -join($env:EXTENSION_PATH, "/package.json")
|
|
$packageConfigJson = get-content $packageJsonFile | ConvertFrom-Json
|
|
[version]$currentPackageVersion=$packageConfigJson.version
|
|
|
|
$newPackageBuild = $currentPackageVersion.Build +1
|
|
$newPackageVersion = ("{0}.{1}.{2}" -f $currentPackageVersion.Major, $currentPackageVersion.Minor, $newPackageBuild).ToString()
|
|
$packageConfigJson.version = $newPackageVersion;
|
|
|
|
$packageConfigJson | ConvertTo-Json -Depth 100 -Compress | set-content $packageJsonFile
|
|
|
|
Write-Host 'Package New Version: $newPackageVersion'
|
|
Write-Host "##vso[task.setvariable variable=PackageVersion]$newPackageVersion"
|
|
Write-Host "##vso[task.setvariable variable=PackageBuildNumber]$newPackageBuild"
|
|
name: UpdatePackageVersion
|
|
displayName: 'Update Package Version (based on package.json)'
|
|
env:
|
|
EXTENSION_PATH: '${{ parameters.PackagePath }}'
|
|
- task: Matrix42ExtensionsGeneratePackageTask@1
|
|
displayName: 'Generate Package based on package.json version'
|
|
inputs:
|
|
extensionManifest: BasePackage/package.json
|
|
extensionAdditions: '${{ parameters.PackageAdditions }}'
|
|
extensionOutput: '$(Build.ArtifactStagingDirectory)/package-$(PackageVersion).zip'
|
|
extensionManifestOutput: '$(Build.ArtifactStagingDirectory)'
|
|
developerIdentity: 'ivo-ci-key.pfx'
|
|
developerIdentityPassword: '$(ivo-key-password)'
|
|
- ${{ if eq(parameters.PackageIncrementStrategy, 'parameter-based') }}:
|
|
- powershell: |
|
|
$packageJsonFile = -join($env:EXTENSION_PATH, "/package.json")
|
|
$packageConfigJson = get-content $packageJsonFile | ConvertFrom-Json
|
|
|
|
$newPackageVersion = ("{0}.{1}" -f $packageConfigJson.version, $env:PACKAGE_BUILD_NUMBER).ToString()
|
|
Write-Host 'Package New Version: $newPackageVersion'
|
|
Write-Host "##vso[task.setvariable variable=PackageVersion]$newPackageVersion"
|
|
name: UpdatePackageVersion
|
|
displayName: 'Update Package Version (based on parameter)'
|
|
env:
|
|
EXTENSION_PATH: '${{ parameters.PackagePath }}'
|
|
PACKAGE_BUILD_NUMBER: '${{ parameters.PackageBuildNumber }}'
|
|
- task: Matrix42ExtensionsGeneratePackageTask@1
|
|
displayName: 'Generate Package based on build number version'
|
|
inputs:
|
|
extensionManifest: BasePackage/package.json
|
|
extensionAdditions: '${{ parameters.PackageAdditions }}'
|
|
extensionBuildNumber: '${{ parameters.PackageBuildNumber }}'
|
|
extensionOutput: '$(Build.ArtifactStagingDirectory)/package-$(PackageVersion).zip'
|
|
extensionManifestOutput: '$(Build.ArtifactStagingDirectory)'
|
|
developerIdentity: 'ivo-ci-key.pfx'
|
|
developerIdentityPassword: '$(ivo-key-password)'
|
|
- task: PublishPipelineArtifact@1
|
|
displayName: Publish Package as Pipeline Artifact - $(PackageVersion)
|
|
inputs:
|
|
targetPath: '$(Build.ArtifactStagingDirectory)/package-$(PackageVersion).zip'
|
|
artifactName: Package
|
|
- script: echo '##vso[task.setvariable variable=PassPackageVersion;isOutput=true]$(PackageVersion)
|
|
name: PassVersion |