Files
C4IT-F4SD-M42WebApi/ImagoverumFleetManagement/AzurePipelines/templates/generate-package.yml

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