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