chore: add Imagoverum fleet management package

This commit is contained in:
Meik
2026-06-26 16:46:44 +02:00
parent fac55cd613
commit 3345365778
66 changed files with 2086 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
#name: $(BuildDefinitionName)_$(date:yyyyMMdd)$(rev:.r)
pr: none
trigger:
branches:
include:
- main
- dev_initialrequest
paths:
include:
- 'backend/**'
variables:
- name: BaseDir
value: $(build.sourcesDirectory)
- name: BackendDir
value: '$(build.sourcesDirectory)\ImagoverumFleetManagement\backend\FleetManagement'
stages:
- stage: BuildBackend
jobs:
- job: BuildAndCreateArtifact
displayName: 'Build and Create Artifact'
pool:
name: M42BPM
demands:
- DotNetFramework
- vstest
steps:
- template: ../AzurePipelines/templates/build-backend.yml
parameters:
BaseDir: '$(BaseDir)'
SuiteRarShare: '\\m42-sto-ffm01.matrix42.de\ServiceStore\Builds\TitanLinux Continuous'
TestsDir: '$(BackendDir)\Tests'
TestDllPaths: ['Imagoverum.FleetManagement.Tests\bin\Debug\Imagoverum.FleetManagement.Tests.dll']
- task: ArchiveFiles@2
displayName: 'Zip ImagoverumFleetManagement Package'
inputs:
rootFolderOrFile: '$(Build.SourcesDirectory)/ImagoverumFleetManagement/BasePackage'
includeRootFolder: false
archiveType: 'zip'
sevenZipCompression: 'normal'
archiveFile: '$(Build.ArtifactStagingDirectory)/Imagoverum_FleetManagement_1.0.zip'
replaceExistingArchive: true
- task: PublishPipelineArtifact@1
displayName: 'Imagoverum_FleetManagement_1.0.zip'
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)/Imagoverum_FleetManagement_1.0.zip'
artifact: 'Imagoverum_FleetManagement'

View File

@@ -0,0 +1,126 @@
#name: $(BuildDefinitionName)_$(date:yyyyMMdd)$(rev:.r)
pr: none
trigger:
paths:
include:
- 'BasePackage/**'
parameters:
- name: extension_package_json_versioning
displayName: 'Increment extension major/minor version in package.json'
type: boolean
default: false
- name: extension_build_versioning
displayName: 'Increment extension build version in package.json'
type: boolean
default: false
- name: extension_publish
displayName: 'Publish Extension?'
type: boolean
default: false
resources:
repositories:
- repository: cicd
type: git
name: 'DWP/Continuous Integration and Delivery'
- repository: perf
type: git
name: 'DWP/M42ExtensionPerformanceAnalyser'
stages:
- stage: InternalRelease
displayName: Generate Package
variables:
- template: AzurePipelines/shared/variables/esx-vars.yml@cicd
- template: AzurePipelines/shared/variables/esm-deploy-vars.yml@cicd
- template: AzurePipelines/shared/variables/extensions-vars.yml@cicd
jobs:
- job: PreparePackage
displayName: Prepare Package
pool:
name: M42BPM
demands:
- DotNetFramework
- vstest
- NPM
steps:
- template: templates/generate-package.yml
parameters:
PackagePath: '$(System.DefaultWorkingDirectory)/BasePackage'
PackageAdditions: '$(BaseDir)/ConfigPackage'
PackageIncrementStrategy: 'parameter-based'
PackageBuildNumber: '$(Build.BuildId)'
PackagePipelineArtifacts:
- artifactName: Backend
pipelineProject: DWP
pipelineId: 1864
pipelineBranchName: '$(Build.SourceBranch)'
downloadPath: '$(Pipeline.Workspace)'
targetPath: '$(BaseDir)/ConfigPackage/Assemblies/svc/bin'
- job: UpdatePackageVersion
condition: and(succeeded(), ne(coalesce(dependencies.PreparePackage.outputs['PassVersion.PassPackageVersion'], ''), ''))
variables:
- name: PackageVersion
value: $[ dependencies.PreparePackage.outputs['PassVersion.PassPackageVersion'] ]
pool:
name: M42BPM
demands:
- npm
- DotNetFramework
- vstest
steps:
- ${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
- checkout: perf
persistCredentials: true
clean: true
- template: templates/update-package-version.yml
parameters:
GitBranchName: $(Build.SourceBranchName)
PackageVersion: $(PackageVersion)
- stage: PublicRelease
dependsOn: InternalRelease
displayName: 'Public Release'
condition: and(succeeded(), eq(variables['build.sourceBranchName'], 'main'))
variables:
- template: AzurePipelines/shared/variables/extensions-vars.yml@cicd
- name: PackageVersion
value: $[stageDependencies.InternalRelease.PreparePackage.outputs['PassVersion.PassPackageVersion'] ]
jobs:
- deployment: UploadPackage
displayName: 'Publish Package on Gellary'
environment: extension-performance-analyzer-env
pool:
name: M42BPM
demands:
- DotNetFramework
- NPM
- msbuild
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: DownloadPipelineArtifact@2
displayName: Download Package as Artifact
inputs:
artifactName: Package
targetPath: '$(Pipeline.Workspace)'
- task: Matrix42ExtensionsUploadReleaseTask@1
displayName: 'Uploading Extension Release: f43b7586-0eae-40bb-9a66-0ea8baa9d5b6'
inputs:
acspat: 'M42 Extensions - Publish as Matrix42 (Vendor) - DWP'
extensionid: 'f43b7586-0eae-40bb-9a66-0ea8baa9d5b6'
extensionlocation: '$(Pipeline.Workspace)\Package\package-$(PackageVersion).zip'
- ${{ if eq(parameters.extension_publish, true) }}:
- task: Matrix42ExtensionsPublishReleaseTask@1
displayName: 'Publishing Extension'
inputs:
acspat: 'M42 Extensions - Publish as Matrix42 (Vendor) - DWP'
extensionid: 'f43b7586-0eae-40bb-9a66-0ea8baa9d5b6'
extensionmanifestlocation: 'BasePackage/package.json'
extensiontag: stable
extensionvisibility: contributors
extensioncommunity: true

View File

@@ -0,0 +1,60 @@
parameters:
- name: 'BaseDir'
type: string
- name: 'SuiteRarShare'
type: string
- name: 'TestsDir'
type: string
- name: 'TestDllPaths'
type: object
steps:
- task: CopyFiles@2
inputs:
SourceFolder: '${{ parameters.BaseDir }}'
Contents: '**'
TargetFolder: '${{ parameters.BaseDir }}/ImagoverumFleetManagement'
displayName: Copy extension source files
- task: CopyFiles@2
displayName: Copy suite.rar
inputs:
SourceFolder: ${{ parameters.SuiteRarShare }}
Contents: suite.rar
TargetFolder: ${{ parameters.BaseDir }}
OverWrite: true
- task: ExtractFiles@1
displayName: Extract suite.rar
inputs:
archiveFilePatterns: suite.rar
destinationFolder: '"${{ parameters.BaseDir }}\"'
cleanDestinationFolder: false
overwriteExistingFiles: true
- task: DotNetCoreCLI@2
displayName: 'Restore (net8.0)'
inputs:
command: 'restore'
projects: '${{ parameters.BaseDir }}/ImagoverumFleetManagement/backend/FleetManagement/Imagoverum.FleetManagement.sln'
- task: DotNetCoreCLI@2
displayName: 'Build (net8.0)'
inputs:
command: 'build'
projects: '${{ parameters.BaseDir }}/ImagoverumFleetManagement/backend/FleetManagement/Imagoverum.FleetManagement.sln'
arguments: '-c Release --no-restore'
- task: DotNetCoreCLI@2
displayName: 'Build Services (win-x64)'
inputs:
command: 'build'
projects: '${{ parameters.BaseDir }}/ImagoverumFleetManagement/backend/FleetManagement/Imagoverum.FleetManagement.Services/Imagoverum.FleetManagement.Services.csproj'
arguments: '-c Release -r win-x64 -p:SolutionDir=$(Build.SourcesDirectory)\ImagoverumFleetManagement\backend\FleetManagement\ --no-restore'
- task: DotNetCoreCLI@2
displayName: 'Build Services (linux-x64)'
inputs:
command: 'build'
projects: '${{ parameters.BaseDir }}/ImagoverumFleetManagement/backend/FleetManagement/Imagoverum.FleetManagement.Services/Imagoverum.FleetManagement.Services.csproj'
arguments: '-c Release -r linux-x64 -p:SolutionDir=$(Build.SourcesDirectory)\ImagoverumFleetManagement\backend\FleetManagement\ --no-restore'
- task: DotNetCoreCLI@2
displayName: 'Test (net8.0)'
inputs:
command: 'test'
projects: '${{ parameters.TestsDir }}/Imagoverum.FleetManagement.Tests/Imagoverum.FleetManagement.Tests.csproj'
arguments: '-c Release -f net8.0 --no-build'

View File

@@ -0,0 +1,111 @@
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

View File

@@ -0,0 +1,44 @@
parameters:
- name: 'SourceDirectory'
type: string
default: '$(System.DefaultWorkingDirectory)'
- name: 'GitBranchName'
type: string
- name: 'GitUserName'
type: string
default: 'Pipeline'
- name: 'PackagePath'
type: string
default: 'BasePackage/package.json'
- name: 'PackageVersion'
type: string
steps:
- script: |
ECHO Current Branch - ${{ parameters.GitBranchName }}
git config --global user.email ${{ parameters.GitUserName }}@matrix42.com & git config --global user.name ${{ parameters.GitUserName }}
git fetch origin
git checkout ${{ parameters.GitBranchName }}
git pull origin ${{ parameters.GitBranchName }} --allow-unrelated-histories
displayName: 'Git Pull ${{ parameters.GitBranchName }} branch under ${{ parameters.GitUserName }} user'
workingDirectory: ${{ parameters.SourceDirectory }}
- powershell: |
Write-Host "New Package Version: $env:PACKAGE_VERSION"
$packageJsonFile = $env:EXTENSION_PATH
$packageConfigJson = get-content $packageJsonFile | ConvertFrom-Json
$packageConfigJson.version = $env:PACKAGE_VERSION
$packageConfigJson | ConvertTo-Json -Depth 100 | set-content $packageJsonFile
displayName: 'Update package version on git repository'
env:
EXTENSION_PATH: '${{ parameters.SourceDirectory }}/${{ parameters.PackagePath }}'
PACKAGE_VERSION: ${{ parameters.PackageVersion }}
- script: |
git add ${{ parameters.PackagePath }}
git commit ${{ parameters.PackagePath }} -m "Build version increment ${{ parameters.PackageVersion }} *CI*"
git push --set-upstream --progress "origin" HEAD:${{ parameters.GitBranchName }}
displayName: Git Push Update package.json version to ${{ parameters.PackageVersion }}
workingDirectory: ${{ parameters.SourceDirectory }}