Setup Meta Processing
Monteur has a special metadata processing function for keeping its Setup CI Job sane and maintainable. Here's its working mechanics and specifications!
The Problem
It was started with supporting development on various operating
system and CPU archictures. Due to this, many software and tool
packages are organized in its own list of distributions, naming
conventions, and release strategies.
Among known problems are:
There are simply too many platform variants and archiving formats offered by 3rd-party software for great cross-platform experiences.
There are no consistent executable scripts (e.g.
shell
vsbatch
) that allows unilingual scripting.There are various combinations and permutations of methods to make dependencies available for a development.
All the problems above are specific to Setup API and not seen in other jobs.
The Solution
Since Monteur wants its dependencies management to be managable via ONE (1) interface without too many duplications, this setup meta processing function is created to solve all the problems above. To solve the problem above, Monteur uses this Setup Meta Processing function to solve those Setup CI Job specific problems above for any amount of the supplied variants in a managable manner. The idea is to:
Keep the dependency artifact sourcing from supplier maintainable using the overwrite policy.
Facilitates various type of built-in sourcing methods to meet various sourcing needs.
Acts as a command intepreter whenever possible for ensuring performance consistencies across different platforms specifically dealing with Setup CI Job.
Current Deployment
Currently, this function is deployed in the following CI Jobs:
Setup since Monteur version
v0.0.1
.
Data Structure
This function is specifically built into the Setup CI Job. Hence, its data structure is scattered across various parts and sections of the CI Job recipe. In this specification, all its settings are specified in each sub-sections by following the CI Job's recipe's data file from top to bottom.
Sourcing Method Type
This function offers a number of sourcing method types
that are offered in its own catalog section offered
later in this page. Each type has its own explaination
of its requirements and the how-to in the recipe file.
The configuration is set via Metadata.Type
.
Here is a code snippet of the recipe file:
|
|
Recipe Sourcing Section
This function has a very special method to list all the
recipe's sourcing data complying to Don't Repeat
Yourself policy. To do that, the function employs
the overwriting policy allowing one to first
write a generic settings and then overwrite the
needed fields with specific data.
Depending on the sourcing method type above, some types
might not need all the fields. Hence, please refer to
your selected sourcing method type's specification on
how to construct this section.
Here is the full list of data fields along with its
dummy data for specification's referencing purposes:
|
|
Sources.{OS}-{ARCH}
The Monteur Platform ID for this sourcing data to be effective. Example:
[Sources.all-all]
and[Sources.linux-amd64]
.COMPULSORY - this setting is used for uniquely grouping and structuring source data between multiple groups of data fields. It is also used for facilitating cross-platform supports like listing all the sources here instead of spinning multiple recipe files.
This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Format
Originally designed to specify the source format.
COMPULSORY / OPTIONAL - Its definition is in the selected sourcing method type's specification.
Supported built-in format are
raw
,tar.gz
, andzip
.This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.URL
Originally designed to specify the source URL for networking sourcing type.
COMPULSORY / OPTIONAL - Its definition is in the selected sourcing method type's specification.
Depending on the sourcing method type, some can implement Monteur's built-in functions like unpack
https
download.Variables formatting is available for this field.
This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Archives
Originally designed to define the downloaded archived filename pattern.
COMPULSORY / OPTIONAL - Its definition is in the selected sourcing method type's specification.
Depending on the sourcing method type, some can implement Monteur's built-in functions like unpack
https
download.Variables formatting is available for this field.
This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Method
Originally designed to define the HTTPS method for HTTPS download type.
COMPULSORY / OPTIONAL - Its definition is in the selected sourcing method type's specification.
Depending on the sourcing method type, some can implement Monteur's built-in functions like unpack
https
download.This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Checksum
Perform checksum integrity checking using Monteur's built-in checksum function.
COMPULSORY / OPTIONAL - Its definition is in the selected sourcing method type's specification.
This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Checksum.Type
Defines the checksum algorithm type. Supported algorithms are:
md5
,sha256
,sha512
, andsha512->sha256
.COMPULSORY - if
Sources.{OS}-{ARCH}.Checksum
is enabled.This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Checksum.Format
Defines the format of the checksum value. Supported values are:
hex
,base64
, andbase64-url
.COMPULSORY - if
Sources.{OS}-{ARCH}.Checksum
is enabled.This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Checksum.Value
Defines the checksum value.
COMPULSORY - if
Sources.{OS}-{ARCH}.Checksum
is enabled.This field was added since Monteur version
v0.0.1
.
Sources.{OS}-{ARCH}.Headers
Originally designed for HTTPS sourcing method type to append or overwrite the HTTPS request headers.
OPTIONAL - made available in case there is a need for customization like setting authentication token.
The final value is a list of
KEY:VALUE
headers where theKEY
is the header identifer whileVALUE
is the value of the header. BothKEY
andVALUE
are as it is.Variables formatting is available for the
VALUE
of the field.This field was added since Monteur version
v0.0.1
.
User Startup Configurations
This function also offers a standard methods of starting
up the project repository after setup completions. This
allows the user to startup the repository for any tasks
in a uniformed manner.
From Monteur version v0.0.1
, this function
uses the operating system's command line scripting
method to source all configurations. A full list of its
data structure is shown below:
|
|
Config.{OS}
The
{OS}
MUST be the Monteur Platform ID likelinux
andwindows
.COMPULSORY - the value MUST be the operating system's terminal scripts like
shell
orpowershell
scripts.Whenever applicable, Montuer shall never set these scripts to be executables.
This field was added since Monteur version
v0.0.1
.
Available Sourcing Methods
Monteur shall continuously develop and add new sourcing methods
(Metadata.Type
) from time to time. Here are the
available sourcing methods at your disposal: