redhat/source¶
Configure a job to build a source RPM (.src.rpm) for this project.
Description¶
This component creates multiple jobs -- one for each chosen RedHat version -- each with a common prefix, that take in a pre-existing upstream source distribution (tarball), and use rpmbuild to create a source RPM.
After each build rpmlint is used to scan the new RPMs to produce a GitLab Code Quality report.
Usage¶
include:
- component: git.ligo.org/computing/gitlab/components/redhat/source@<VERSION>
Inputs¶
| Input | Default value | Description |
|---|---|---|
cache_dir | ".cache/rpm" | The path to cache downloaded RPMs to (relative to $CI_PROJECT_DIR) |
disable_repos | "" | Space-separate list of RPM repo names to disable |
dnf_update | true | Update all installed packages with dnf update before proceeeding |
enable_repos | "" | Space-separate list of RPM repo names to enable |
epel | false | Pre-configure the EPEL (Extra Packages for Enterprise Linux) repository |
job_name | "redhat_source" | Name to give this job |
merge_request_pipelines | false | Enable running jobs for merge request pipelines |
needs | List of jobs whose artifacts are needed for the source RPM build | |
image | quay.io/igwn/builder:el$REDHAT_VERSION-testing | Image to use for build job(s) |
dynamic_version | true | Automatically detect package version from Python PKG-INFO metadata file and update RPM .spec file |
redhat_versions | [8] | Versions of Red Hat to build for |
rpmbuild_options | "" | Options to pass to rpmbuild |
rpmlint_options | "" | Options to pass to rpmlint |
source_distribution_name | "*.tar.*" | Name of the source distribution file to build from |
stage | "build" | The stage to add jobs to |
Notes¶
Requires an upstream source distribution¶
Creating a source RPM is only supported when starting from an upstream tarball that contains an RPM spec (.spec) file.
This must be configured independently of this component and the tarball provided to the redhat/source component via the needs input. See Examples for an example.
Customisation¶
Rpmlint¶
The output of rpmlint can be customised by creating a configuration file that augments the default configuration.
See https://github.com/rpm-software-management/rpmlint#configuration for some details on the configuration format.
The path to the configuration file or to a directory containing one or more .toml configuration files must be passed to the rpmlint_options input using the --config option:
include:
- component: git.ligo.org/computing/gitlab/components/redhat/source@<VERSION>
inputs:
rpmlint_options: "---config rpmlint.toml"
Examples¶
Build a source RPM for a Python project¶
Create a source RPM for a Python project
include:
# generate a source distribution
- component: git.ligo.org/computing/gitlab/components/python/sdist@0.1
inputs:
stage: source
job_name: sdist
# generate a source RPM
- component: git.ligo.org/computing/gitlab/components/redhat/source@<VERSION>
inputs:
needs: [sdist]