Package Meta Processing

Monteur has a unilateral manner to process package metadata for certain CI Jobs. Different jobs use different fields from the Package Meta. Hence, this section explains the meta in details.

Data Structure

Monteur processes all packages' metadata using a single unified data structure across various CI Jobs.

An example (fully constructed) using Monteur own configurations is shown as follows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Packages.XXX]
OS = [ 'linux' ]
Arch = [ 'amd64' ]
Name = '{{- .PkgName -}}-{{- .PkgVersion -}}-{{- .PkgOS -}}-{{- .PkgArch -}}'
Distribution = [
        'stable',
]
Changelog = '{{- .DataDir -}}/debian/changelog-{{- .PkgArch -}}'
BuildSource = false
Source = '{{- .PackageDir -}}/targz/{{- .PkgName -}}-{{- .PkgVersion -}}-{{- .PkgOS -}}-{{- .PkgArch -}}.tar.gz'
Target = '{{- .ReleaseDir -}}/archives'

[Packages.001.Files]
'{{- .PackageDir -}}/monteur' = '{{- .BuildDir -}}/{{- .PkgOS -}}-{{- .PkgArch -}}'
'{{- .PackageDir -}}/License.pdf' = '{{- .LicensePath -}}'

Depending on the CI Jobs, some fields ARE COMPULSORY while others are optional. Please refers to the CI Job’s documentations for their specific usage.

Known CI-Jobs Deployments

Currently, Monteur deploys this package data to the following CI Jobs:

  1. Package - for packaging your app.
  2. Release - for releasing same type packages under a single release channel.
  3. Prepare - for releasing same type packages under a single release channel.
    1. Available since Monteur v0.0.2.

Design

The design was to ensure that each job are oriented towards the operator type rather than the output package files based on hands-on experience.

Case Study:

A build variant can be packaged into various different packages for different release channels:

This means that a build variant needs to be both vertically and horizontally scaled in Monteur. After thorough testing between Monteur v0.0.1 and Monteur v0.0.2, the orientation against operator type (e.g. appimage, deb, targz) is more managable and maintainable than many output oriented configuration files.

Epilogue

That’s all for Monteur’s Platform Identification. If you have any queries, please proceed to contact us via our Issues Section channel.