Exporting files from SCM¶
Multiple places in Pungi can use files from external storage. The configuration is similar independently of the backend that is used, although some features may be different.
The so-called scm_dict
is always put into configuration as a dictionary,
which can contain following keys.
scm
– indicates which SCM system is used. This is always required. Allowed values are:file
– copies files from local filesystemgit
– copies files from a Git repositorycvs
– copies files from a CVS repositoryrpm
– copies files from a package in the composekoji
– downloads archives from a given build in Koji build system
repo
for Git and CVS backends this should be URL to the repository
for RPM backend this should be a shell style glob matching package names (or a list of such globs)
for file backend this should be empty
for Koji backend this should be an NVR or package name
branch
branch name for Git and CVS backends, with
master
andHEAD
as defaultsKoji tag for koji backend if only package name is given
otherwise should not be specified
file
– a list of files that should be exported.dir
– a directory that should be exported. All its contents will be exported. This option is mutually exclusive withfile
.command
– defines a shell command to run after Git clone to generate the needed file (for example to runmake
). Only supported in Git backend.options
– a dictionary of additional configuration options. These are specific to different backends.Currently supported values for Git:
credential_helper
– path to a credential helper used to supply username/password for remotes that require authentication.
Koji examples¶
There are two different ways how to configure the Koji backend.
{
# Download all *.tar files from build my-image-1.0-1.
"scm": "koji",
"repo": "my-image-1.0-1",
"file": "*.tar",
}
{
# Find latest build of my-image in tag my-tag and take files from
# there.
"scm": "koji",
"repo": "my-image",
"branch": "my-tag",
"file": "*.tar",
}
Using both tag name and exact NVR will result in error: the NVR would be interpreted as a package name, and would not match anything.
file
vs. dir
¶
Exactly one of these two options has to be specified. Documentation for each configuration option should specify whether it expects a file or a directory.
For extra_files
phase either key is valid and should be chosen depending on
what the actual use case.
Caveats¶
The rpm
backend can only be used in phases that would extract the files
after pkgset
phase finished. You can’t get comps file from a package.
Depending on Git repository URL configuration Pungi can only export the
requested content using git archive
. When a command should run this is not
possible and a clone is always needed.
When using koji
backend, it is required to provide configuration for Koji
profile to be used (koji_profile
). It is not possible to contact multiple
different Koji instances.