This repository maintains a SPEC file for the vale command-line tool and the Jenkins pipeline that builds and publishes the RPM for the Red Hat Training curriculum team. It is a fork of m-czernek/vale-spec.
The RPM is published to the Red Hat Training curriculum yum repositories for
RHEL 9 and 10, CentOS Stream 9 and 10, and current Fedora releases. Packages
land under <platform>/<version>/SRPMS/ and <platform>/<version>/x86_64/,
for example rhel/9/x86_64/.
Access requires a GitHub personal access token with the read:org scope on
the RedHatTraining organization. For instructions on configuring dnf or yum to
use these repositories, see
curriculum-release-repos.
Once the repository is configured:
[user@host ~] $ sudo dnf install vale
With mock and rpmdevtools installed, fetch the source tarball and build for
any chroot:
[user@host vale-spec] $ spectool -g -C sources vale.spec
[user@host vale-spec] $ mock -r rhel-9-x86_64 --spec vale.spec --sources sources --resultdir out/rhel-9-x86_64
The rhel-* chroots need the host registered with subscription-manager.
The centos-stream-* and fedora-* chroots do not.
The Jenkinsfile defines the pipeline that runs on every push:
- Fetch source. Downloads the tarball named by
Source0in the spec. - Build. Runs
mockfor every chroot in theCHROOTSmap, in parallel, writing RPMs and logs underout/<chroot>/. - Publish. On
mainonly, uploads each SRPM and x86_64 RPM to the curriculum repositories. Packages that are already published are skipped, so rerunning a build for a released version is a no-op.
Build output and mock logs are archived on every run, including failures.
- Update
Versioninvale.specto the new upstream release and resetReleaseto1%{?dist}. Theautomation/main.pyscript does this automatically by checking the latest upstream GitHub release. - Add a
%changelogentry. - Open a pull request. Merging to
maintriggers the build and publish.
To publish a new build of the same vale version, bump Release instead.
Edit the CHROOTS map at the top of the Jenkinsfile. Each entry maps a mock
chroot name to the <platform>/<version> path it publishes to. The Jenkins
agent needs a matching config in /etc/mock/ and the distribution's signing
key in /usr/share/distribution-gpg-keys/, both of which come from the
mock-core-configs and distribution-gpg-keys packages.
For issues with packaging or the pipeline, please create an issue.
For issues with core Vale functionality, go to vale.